From 3eec2972826918e7482be3ad145c0308dbca7908 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 13 Mar 2025 11:40:37 -0800 Subject: [PATCH] js: no longer provide our own 'detect-libc' (#18138) --- docs/api/node-api.md | 2 - src/bun.js/bindings/isBuiltinModule.cpp | 1 - src/bun.js/module_loader.zig | 5 --- src/bun.js/modules/NodeModuleModule.cpp | 1 - src/js/thirdparty/detect-libc.js | 38 ------------------- src/js/thirdparty/detect-libc.linux.js | 38 ------------------- src/js/thirdparty/detect-libc.musl.js | 38 ------------------- test/exports/generate-exports.mjs | 1 - .../js/node/module/node-module-module.test.js | 2 +- 9 files changed, 1 insertion(+), 125 deletions(-) delete mode 100644 src/js/thirdparty/detect-libc.js delete mode 100644 src/js/thirdparty/detect-libc.linux.js delete mode 100644 src/js/thirdparty/detect-libc.musl.js diff --git a/docs/api/node-api.md b/docs/api/node-api.md index 09cc911759..14beb021b4 100644 --- a/docs/api/node-api.md +++ b/docs/api/node-api.md @@ -12,5 +12,3 @@ Alternatively, use `process.dlopen`: let mod = { exports: {} }; process.dlopen(mod, "./my-node-module.node"); ``` - -Bun polyfills the [`detect-libc`](https://npmjs.com/package/detect-libc) package, which is used by many Node-API modules to detect which `.node` binding to `require`. diff --git a/src/bun.js/bindings/isBuiltinModule.cpp b/src/bun.js/bindings/isBuiltinModule.cpp index dd702fb0cb..93afd4f70e 100644 --- a/src/bun.js/bindings/isBuiltinModule.cpp +++ b/src/bun.js/bindings/isBuiltinModule.cpp @@ -53,7 +53,6 @@ static constexpr ASCIILiteral builtinModuleNamesSortedLength[] = { "_http_agent"_s, "_tls_common"_s, "async_hooks"_s, - "detect-libc"_s, "fs/promises"_s, "querystring"_s, "_http_client"_s, diff --git a/src/bun.js/module_loader.zig b/src/bun.js/module_loader.zig index 41f92c1590..e469bc4fbc 100644 --- a/src/bun.js/module_loader.zig +++ b/src/bun.js/module_loader.zig @@ -2418,7 +2418,6 @@ pub const ModuleLoader = struct { .@"bun:ffi" => return jsSyntheticModule(.@"bun:ffi", specifier), .@"bun:sqlite" => return jsSyntheticModule(.@"bun:sqlite", specifier), - .@"detect-libc" => return jsSyntheticModule(if (!Environment.isLinux) .@"detect-libc" else if (!Environment.isMusl) .@"detect-libc/linux" else .@"detect-libc/musl", specifier), .@"node:assert" => return jsSyntheticModule(.@"node:assert", specifier), .@"node:assert/strict" => return jsSyntheticModule(.@"node:assert/strict", specifier), .@"node:async_hooks" => return jsSyntheticModule(.@"node:async_hooks", specifier), @@ -2626,7 +2625,6 @@ pub const HardcodedModule = enum { @"bun:main", @"bun:test", // usually replaced by the transpiler but `await import("bun:" + "test")` has to work @"bun:sqlite", - @"detect-libc", @"node:assert", @"node:assert/strict", @"node:async_hooks", @@ -2712,7 +2710,6 @@ pub const HardcodedModule = enum { .{ "bun:test", HardcodedModule.@"bun:test" }, .{ "bun:sqlite", HardcodedModule.@"bun:sqlite" }, .{ "bun:internal-for-testing", HardcodedModule.@"bun:internal-for-testing" }, - .{ "detect-libc", HardcodedModule.@"detect-libc" }, .{ "node-fetch", HardcodedModule.@"node-fetch" }, .{ "isomorphic-fetch", HardcodedModule.@"isomorphic-fetch" }, @@ -2958,8 +2955,6 @@ pub const HardcodedModule = enum { // Thirdparty packages we override .{ "@vercel/fetch", .{ .path = "@vercel/fetch" } }, - .{ "detect-libc", .{ .path = "detect-libc" } }, - .{ "detect-libc/lib/detect-libc.js", .{ .path = "detect-libc" } }, .{ "isomorphic-fetch", .{ .path = "isomorphic-fetch" } }, .{ "node-fetch", .{ .path = "node-fetch" } }, .{ "undici", .{ .path = "undici" } }, diff --git a/src/bun.js/modules/NodeModuleModule.cpp b/src/bun.js/modules/NodeModuleModule.cpp index 1102ea7d7b..2a1c9bafd2 100644 --- a/src/bun.js/modules/NodeModuleModule.cpp +++ b/src/bun.js/modules/NodeModuleModule.cpp @@ -68,7 +68,6 @@ static constexpr ASCIILiteral builtinModuleNames[] = { "console"_s, "constants"_s, "crypto"_s, - "detect-libc"_s, "dgram"_s, "diagnostics_channel"_s, "dns"_s, diff --git a/src/js/thirdparty/detect-libc.js b/src/js/thirdparty/detect-libc.js deleted file mode 100644 index 83b6a1d4ae..0000000000 --- a/src/js/thirdparty/detect-libc.js +++ /dev/null @@ -1,38 +0,0 @@ -// Hardcoded module "detect-libc" for darwin -function family() { - return Promise.resolve(familySync()); -} - -function familySync() { - return null; -} - -const GLIBC = "glibc"; -const MUSL = "musl"; - -function version() { - return Promise.resolve(versionSync()); -} - -function versionSync() { - return null; -} - -function isNonGlibcLinuxSync() { - return false; -} - -function isNonGlibcLinux() { - return Promise.resolve(isNonGlibcLinuxSync()); -} - -export default { - GLIBC, - MUSL, - family, - familySync, - isNonGlibcLinux, - isNonGlibcLinuxSync, - version, - versionSync, -}; diff --git a/src/js/thirdparty/detect-libc.linux.js b/src/js/thirdparty/detect-libc.linux.js deleted file mode 100644 index 1c17acb864..0000000000 --- a/src/js/thirdparty/detect-libc.linux.js +++ /dev/null @@ -1,38 +0,0 @@ -// Hardcoded module "detect-libc" for linux -function family() { - return Promise.resolve(familySync()); -} - -function familySync() { - return GLIBC; -} - -const GLIBC = "glibc"; -const MUSL = "musl"; - -function version() { - return Promise.resolve(versionSync()); -} - -function versionSync() { - return "2.29"; -} - -function isNonGlibcLinuxSync() { - return false; -} - -function isNonGlibcLinux() { - return Promise.resolve(isNonGlibcLinuxSync()); -} - -export default { - GLIBC, - MUSL, - family, - familySync, - isNonGlibcLinux, - isNonGlibcLinuxSync, - version, - versionSync, -}; diff --git a/src/js/thirdparty/detect-libc.musl.js b/src/js/thirdparty/detect-libc.musl.js deleted file mode 100644 index 7ab932c539..0000000000 --- a/src/js/thirdparty/detect-libc.musl.js +++ /dev/null @@ -1,38 +0,0 @@ -// Hardcoded module "detect-libc" for linux -function family() { - return Promise.resolve(familySync()); -} - -function familySync() { - return MUSL; -} - -const GLIBC = "glibc"; -const MUSL = "musl"; - -function version() { - return Promise.resolve(versionSync()); -} - -function versionSync() { - return "1.2.5"; -} - -function isNonGlibcLinuxSync() { - return true; -} - -function isNonGlibcLinux() { - return Promise.resolve(isNonGlibcLinuxSync()); -} - -export default { - GLIBC, - MUSL, - family, - familySync, - isNonGlibcLinux, - isNonGlibcLinuxSync, - version, - versionSync, -}; diff --git a/test/exports/generate-exports.mjs b/test/exports/generate-exports.mjs index 04565ac15b..962bf5f36e 100644 --- a/test/exports/generate-exports.mjs +++ b/test/exports/generate-exports.mjs @@ -90,7 +90,6 @@ const bunBuiltins = [ "bun:main", "bun:sqlite", "bun:events_native", - "detect-libc", "node:assert", "node:assert/strict", "node:async_hooks", diff --git a/test/js/node/module/node-module-module.test.js b/test/js/node/module/node-module-module.test.js index ca76ce322a..c41ce07ba5 100644 --- a/test/js/node/module/node-module-module.test.js +++ b/test/js/node/module/node-module-module.test.js @@ -5,7 +5,7 @@ import path from "path"; test("builtinModules exists", () => { expect(Array.isArray(builtinModules)).toBe(true); - expect(builtinModules).toHaveLength(77); + expect(builtinModules).toHaveLength(76); }); test("isBuiltin() works", () => {