diff options
author | 2023-01-08 00:50:38 -0800 | |
---|---|---|
committer | 2023-01-08 00:50:38 -0800 | |
commit | 9972e553a0134f6340f3d63071cdb04090dc81ef (patch) | |
tree | 616d5f4d131a93139a6523ff6bf7ff6b896b7268 | |
parent | cdbdc55cbf38e0faac6d53903de3a6d8bd804a8c (diff) | |
download | bun-9972e553a0134f6340f3d63071cdb04090dc81ef.tar.gz bun-9972e553a0134f6340f3d63071cdb04090dc81ef.tar.zst bun-9972e553a0134f6340f3d63071cdb04090dc81ef.zip |
Update process.versions
-rw-r--r-- | .scripts/write-versions.sh | 7 | ||||
-rw-r--r-- | src/bun.js/bindings/Process.cpp | 61 | ||||
-rw-r--r-- | src/bun.js/bindings/headers-handwritten.h | 15 | ||||
-rw-r--r-- | src/bun.js/node/types.zig | 13 | ||||
-rw-r--r-- | src/generated_versions_list.zig | 13 | ||||
-rw-r--r-- | test/bun.js/process.test.js | 42 |
6 files changed, 111 insertions, 40 deletions
diff --git a/.scripts/write-versions.sh b/.scripts/write-versions.sh index cad659b89..b748b842d 100644 --- a/.scripts/write-versions.sh +++ b/.scripts/write-versions.sh @@ -8,6 +8,10 @@ PICOHTTPPARSER_VERSION=$(git rev-parse HEAD:./src/deps/picohttpparser) BORINGSSL_VERSION=$(git rev-parse HEAD:./src/deps/boringssl) ZLIB_VERSION=$(git rev-parse HEAD:./src/deps/zlib) UWS_VERSION=$(git rev-parse HEAD:./src/deps/uws) +LOLHTML=$(git rev-parse HEAD:./src/deps/lol-html) +TINYCC=$(git rev-parse HEAD:./src/deps/tinycc) +C_ARES=$(git rev-parse HEAD:./src/deps/c-ares) +USOCKETS=$(cd src/deps/uws/uSockets && git rev-parse HEAD) rm -rf src/generated_versions_list.zig echo "// AUTO-GENERATED FILE. Created via .scripts/write-versions.sh" >src/generated_versions_list.zig @@ -20,6 +24,9 @@ echo "pub const uws = \"$UWS_VERSION\";" >>src/generated_versions_list.zig echo "pub const webkit = \"$WEBKIT_VERSION\";" >>src/generated_versions_list.zig echo "pub const zig = @import(\"std\").fmt.comptimePrint(\"{}\", .{@import(\"builtin\").zig_version});" >>src/generated_versions_list.zig echo "pub const zlib = \"$ZLIB_VERSION\";" >>src/generated_versions_list.zig +echo "pub const tinycc = \"$TINYCC\";" >>src/generated_versions_list.zig +echo "pub const lolhtml = \"$LOLHTML\";" >>src/generated_versions_list.zig +echo "pub const c_ares = \"$C_ARES\";" >>src/generated_versions_list.zig echo "" >>src/generated_versions_list.zig zig fmt src/generated_versions_list.zig diff --git a/src/bun.js/bindings/Process.cpp b/src/bun.js/bindings/Process.cpp index 579796b9f..4a2b6dd19 100644 --- a/src/bun.js/bindings/Process.cpp +++ b/src/bun.js/bindings/Process.cpp @@ -14,7 +14,7 @@ namespace Zig { using namespace JSC; -#define REPORTED_NODE_VERSION "18.10.1" +#define REPORTED_NODE_VERSION "18.13.0" using JSGlobalObject = JSC::JSGlobalObject; using Exception = JSC::Exception; @@ -758,18 +758,9 @@ JSC_DEFINE_CUSTOM_GETTER(Process_getVersionsLazy, if (!thisObject) { return JSValue::encode(JSC::jsUndefined()); } + auto scope = DECLARE_THROW_SCOPE(vm); - if (JSC::JSValue argv = thisObject->getIfPropertyExists( - globalObject, clientData->builtinNames().versionsPrivateName())) { - return JSValue::encode(argv); - } - -// BUN_WEBKIT_VERSION is typically injected in the github actions -#ifndef BUN_WEBKIT_VERSION -#define BUN_WEBKIT_VERSION Bun__versions_webkit -#endif - - JSC::JSObject* object = JSC::constructEmptyObject(globalObject, globalObject->objectPrototype(), 9); + JSC::JSObject* object = JSC::constructEmptyObject(globalObject, globalObject->objectPrototype(), 18); object->putDirect(vm, JSC::Identifier::fromString(vm, "node"_s), JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString(REPORTED_NODE_VERSION)))); @@ -778,24 +769,42 @@ JSC_DEFINE_CUSTOM_GETTER(Process_getVersionsLazy, JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString(Bun__version + 1 /* prefix with v */)))); object->putDirect(vm, JSC::Identifier::fromString(vm, "webkit"_s), JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString(BUN_WEBKIT_VERSION)))); - object->putDirect(vm, JSC::Identifier::fromString(vm, "mimalloc"_s), - JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString(Bun__versions_mimalloc)))); + object->putDirect(vm, JSC::Identifier::fromString(vm, "boringssl"_s), + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_boringssl))), 0); object->putDirect(vm, JSC::Identifier::fromString(vm, "libarchive"_s), - JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString(Bun__versions_libarchive)))); + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_libarchive))), 0); + object->putDirect(vm, JSC::Identifier::fromString(vm, "mimalloc"_s), + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_mimalloc))), 0); object->putDirect(vm, JSC::Identifier::fromString(vm, "picohttpparser"_s), - JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString(Bun__versions_picohttpparser)))); - object->putDirect(vm, JSC::Identifier::fromString(vm, "boringssl"_s), - JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString(Bun__versions_boringssl)))); - object->putDirect(vm, JSC::Identifier::fromString(vm, "zlib"_s), - JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString(Bun__versions_zlib)))); + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_picohttpparser))), 0); + object->putDirect(vm, JSC::Identifier::fromString(vm, "uwebsockets"_s), + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_uws))), 0); + object->putDirect(vm, JSC::Identifier::fromString(vm, "webkit"_s), + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_webkit))), 0); object->putDirect(vm, JSC::Identifier::fromString(vm, "zig"_s), - JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString(Bun__versions_zig)))); + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_zig))), 0); + object->putDirect(vm, JSC::Identifier::fromString(vm, "zlib"_s), + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_zlib))), 0); + object->putDirect(vm, JSC::Identifier::fromString(vm, "tinycc"_s), + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_tinycc))), 0); + object->putDirect(vm, JSC::Identifier::fromString(vm, "lolhtml"_s), + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_lolhtml))), 0); + object->putDirect(vm, JSC::Identifier::fromString(vm, "ares"_s), + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_c_ares))), 0); + object->putDirect(vm, JSC::Identifier::fromString(vm, "usockets"_s), + JSC::JSValue(JSC::jsString(vm, makeString(Bun__versions_usockets))), 0); + + object->putDirect(vm, JSC::Identifier::fromString(vm, "v8"_s), JSValue(JSC::jsString(vm, makeString("10.8.168.20-node.8"_s))), 0); + object->putDirect(vm, JSC::Identifier::fromString(vm, "uv"_s), JSValue(JSC::jsString(vm, makeString("1.44.2"_s))), 0); object->putDirect(vm, JSC::Identifier::fromString(vm, "modules"_s), - JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString("67")))); + JSC::JSValue(JSC::jsOwnedString(vm, makeAtomString("108")))); - thisObject->putDirect(vm, clientData->builtinNames().versionsPrivateName(), object); - return JSC::JSValue::encode(object); + thisObject->putDirect(vm, clientData->builtinNames().versionsPublicName(), object, 0); + + RETURN_IF_EXCEPTION(scope, {}); + + return JSValue::encode(object); } JSC_DEFINE_CUSTOM_SETTER(Process_setVersionsLazy, (JSC::JSGlobalObject * globalObject, JSC::EncodedJSValue thisValue, @@ -809,8 +818,8 @@ JSC_DEFINE_CUSTOM_SETTER(Process_setVersionsLazy, return JSValue::encode(JSC::jsUndefined()); } - thisObject->putDirect(vm, clientData->builtinNames().versionsPrivateName(), - JSC::JSValue::decode(value)); + thisObject->putDirect(vm, clientData->builtinNames().versionsPublicName(), + JSC::JSValue::decode(value), 0); return true; } diff --git a/src/bun.js/bindings/headers-handwritten.h b/src/bun.js/bindings/headers-handwritten.h index 0a2619187..8f925e84f 100644 --- a/src/bun.js/bindings/headers-handwritten.h +++ b/src/bun.js/bindings/headers-handwritten.h @@ -251,15 +251,20 @@ extern "C" bool Bun__fetchBuiltinModule( extern "C" const char* Bun__version; // Used in process.versions -extern "C" const char* Bun__versions_webkit; -extern "C" const char* Bun__versions_mimalloc; +extern "C" const char* Bun__versions_boringssl; extern "C" const char* Bun__versions_libarchive; +extern "C" const char* Bun__versions_mimalloc; extern "C" const char* Bun__versions_picohttpparser; -extern "C" const char* Bun__versions_boringssl; +extern "C" const char* Bun__versions_uws; +extern "C" const char* Bun__versions_webkit; +extern "C" const char* Bun__versions_zig; extern "C" const char* Bun__versions_zlib; -extern "C" const char* Bun__version_sha; +extern "C" const char* Bun__versions_tinycc; +extern "C" const char* Bun__versions_lolhtml; +extern "C" const char* Bun__versions_c_ares; +extern "C" const char* Bun__versions_usockets; -extern "C" const char* Bun__versions_zig; +extern "C" const char* Bun__version_sha; extern "C" void ZigString__free_global(const unsigned char* ptr, size_t len); diff --git a/src/bun.js/node/types.zig b/src/bun.js/node/types.zig index deacd6d1e..79e2c0618 100644 --- a/src/bun.js/node/types.zig +++ b/src/bun.js/node/types.zig @@ -2039,13 +2039,18 @@ pub const Process = struct { } pub export const Bun__version: [*:0]const u8 = "v" ++ bun.Global.package_json_version; - pub export const Bun__versions_mimalloc: [*:0]const u8 = bun.Global.versions.mimalloc; - pub export const Bun__versions_webkit: [*:0]const u8 = bun.Global.versions.webkit; + pub export const Bun__versions_boringssl: [*:0]const u8 = bun.Global.versions.boringssl; pub export const Bun__versions_libarchive: [*:0]const u8 = bun.Global.versions.libarchive; + pub export const Bun__versions_mimalloc: [*:0]const u8 = bun.Global.versions.mimalloc; pub export const Bun__versions_picohttpparser: [*:0]const u8 = bun.Global.versions.picohttpparser; - pub export const Bun__versions_boringssl: [*:0]const u8 = bun.Global.versions.boringssl; - pub export const Bun__versions_zlib: [*:0]const u8 = bun.Global.versions.zlib; + pub export const Bun__versions_uws: [*:0]const u8 = bun.Global.versions.uws; + pub export const Bun__versions_webkit: [*:0]const u8 = bun.Global.versions.webkit; pub export const Bun__versions_zig: [*:0]const u8 = bun.Global.versions.zig; + pub export const Bun__versions_zlib: [*:0]const u8 = bun.Global.versions.zlib; + pub export const Bun__versions_tinycc: [*:0]const u8 = bun.Global.versions.tinycc; + pub export const Bun__versions_lolhtml: [*:0]const u8 = bun.Global.versions.lolhtml; + pub export const Bun__versions_c_ares: [*:0]const u8 = bun.Global.versions.c_ares; + pub export const Bun__versions_usockets: [*:0]const u8 = bun.Global.versions.usockets; pub export const Bun__version_sha: [*:0]const u8 = bun.Environment.git_sha; }; diff --git a/src/generated_versions_list.zig b/src/generated_versions_list.zig index 2fa323b0f..90bee0b8c 100644 --- a/src/generated_versions_list.zig +++ b/src/generated_versions_list.zig @@ -1,9 +1,14 @@ // AUTO-GENERATED FILE. Created via .scripts/write-versions.sh -pub const webkit = "9a039f4901c48680700174c28dd4693873f7593a"; -pub const mimalloc = "817569dfad79732233fb86649c89e04387ce02e9"; +pub const boringssl = "b275c5ce1c88bc06f5a967026d3c0ce1df2be815"; pub const libarchive = "dc321febde83dd0f31158e1be61a7aedda65e7a2"; +pub const mimalloc = "3c7079967a269027e438a2aac83197076d9fe09d"; pub const picohttpparser = "066d2b1e9ab820703db0837a7255d92d30f0c9f5"; -pub const boringssl = "b3ed071ecc4efb77afd0a025ea1078da19578bfd"; -pub const zlib = "959b4ea305821e753385e873ec4edfaa9a5d49b7"; +pub const uws = "70b1b9fc1341e8b791b42c5447f90505c2abe156"; +pub const webkit = "60d11703a533fd694cd1d6ddda04813eecb5d69f"; pub const zig = @import("std").fmt.comptimePrint("{}", .{@import("builtin").zig_version}); +pub const zlib = "885674026394870b7e7a05b7bf1ec5eb7bd8a9c0"; +pub const tinycc = "2d3ad9e0d32194ad7fd867b66ebe218dcc8cb5cd"; +pub const lolhtml = "2eed349dcdfa4ff5c19fe7c6e501cfd687601033"; +pub const c_ares = "0e7a5dee0fbb04080750cf6eabbe89d8bae87faa"; +pub const usockets = "fafc241e8664243fc0c51d69684d5d02b9805134"; diff --git a/test/bun.js/process.test.js b/test/bun.js/process.test.js index 9c15892a9..be627b61c 100644 --- a/test/bun.js/process.test.js +++ b/test/bun.js/process.test.js @@ -1,6 +1,6 @@ import { resolveSync } from "bun"; import { describe, expect, it } from "bun:test"; -import { realpathSync } from "fs"; +import { readFileSync, realpathSync } from "fs"; it("process", () => { // this property isn't implemented yet but it should at least return a string @@ -125,3 +125,43 @@ it("process.umask()", () => { expect(orig).toBeGreaterThan(0); expect(process.umask(orig)).toBe(777); }); + +it("process.versions", () => { + // Generate a list of all the versions in the versions object + // example: + // pub const boringssl = "b275c5ce1c88bc06f5a967026d3c0ce1df2be815"; + // pub const libarchive = "dc321febde83dd0f31158e1be61a7aedda65e7a2"; + // pub const mimalloc = "3c7079967a269027e438a2aac83197076d9fe09d"; + // pub const picohttpparser = "066d2b1e9ab820703db0837a7255d92d30f0c9f5"; + // pub const uws = "70b1b9fc1341e8b791b42c5447f90505c2abe156"; + // pub const webkit = "60d11703a533fd694cd1d6ddda04813eecb5d69f"; + // pub const zlib = "885674026394870b7e7a05b7bf1ec5eb7bd8a9c0"; + // pub const tinycc = "2d3ad9e0d32194ad7fd867b66ebe218dcc8cb5cd"; + // pub const lolhtml = "2eed349dcdfa4ff5c19fe7c6e501cfd687601033"; + // pub const c_ares = "0e7a5dee0fbb04080750cf6eabbe89d8bae87faa"; + // pub const usockets = "fafc241e8664243fc0c51d69684d5d02b9805134"; + const versions = Object.fromEntries( + readFileSync( + import.meta.dir + "/../../src/generated_versions_list.zig", + "utf8", + ) + .split("\n") + .filter( + (line) => + line.startsWith("pub const") && + !line.includes("zig") && + line.includes(' = "'), + ) + .map((line) => line.split(" = ")) + .map(([name, hash]) => [name.slice(9).trim(), hash.slice(1, -2)]), + ); + versions.uwebsockets = versions.uws; + delete versions.uws; + versions["ares"] = versions.c_ares; + delete versions.c_ares; + + for (const name in versions) { + expect(process.versions).toHaveProperty(name); + expect(process.versions[name]).toBe(versions[name]); + } +}); |