aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-08 00:50:38 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-08 00:50:38 -0800
commit9972e553a0134f6340f3d63071cdb04090dc81ef (patch)
tree616d5f4d131a93139a6523ff6bf7ff6b896b7268
parentcdbdc55cbf38e0faac6d53903de3a6d8bd804a8c (diff)
downloadbun-9972e553a0134f6340f3d63071cdb04090dc81ef.tar.gz
bun-9972e553a0134f6340f3d63071cdb04090dc81ef.tar.zst
bun-9972e553a0134f6340f3d63071cdb04090dc81ef.zip
Update process.versions
-rw-r--r--.scripts/write-versions.sh7
-rw-r--r--src/bun.js/bindings/Process.cpp61
-rw-r--r--src/bun.js/bindings/headers-handwritten.h15
-rw-r--r--src/bun.js/node/types.zig13
-rw-r--r--src/generated_versions_list.zig13
-rw-r--r--test/bun.js/process.test.js42
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]);
+ }
+});