Download raw body.
[update] lang/quickjs 2024.01.13 -> 2025.09.13
In this email, I have attached a patch to update lang/quickjs from
version 2024.01.13 to version 2025.09.13.
From 2024.01.13 to 2025.09.13, the project removed the legacy bignum
extensions and qjscalc, introduced a faster small-number BigInt, and
added WeakRef/FinalizationRegistry (with symbols as weakrefs). It
expanded language/stdlib features with JSON modules and import
attributes, improved JSON spec conformance and JSON5 compatibility
(including accepting JSON5 modules), major RegExp upgrades (v flag,
modifiers, RegExp.escape), Float16Array, Promise.try, and Error.isError.
Runtime behavior and tooling were refined: qjs now pretty-prints objects
and treats unhandled promise rejections as fatal by default, float64
printing/parsing is more correct, repeated string concatenation is
faster, and debug info includes column numbers; new CLI flags arrived
(qjs -s/--strip-source, qjsc -s/--keep-source) and the "use strip"
extension was dropped. The C API grew with JS_PrintValue(),
JS_FreePropertyEnum(), JS_AtomToCStringLen(), JS_GetAnyOpaque(), plus
more exotic class callbacks.
Tested on amd64 and it builds and runs fine.
Index: lang/quickjs/Makefile
===================================================================
RCS file: /cvs/ports/lang/quickjs/Makefile,v
diff -u -p -u -r1.10 Makefile
--- lang/quickjs/Makefile 28 Jan 2025 11:22:03 -0000 1.10
+++ lang/quickjs/Makefile 6 Nov 2025 02:10:23 -0000
@@ -1,9 +1,8 @@
COMMENT = small, embeddable JavaScript engine in C
-V = 2024.01.13
+V = 2025.09.13
DISTNAME = quickjs-${V:S/./-/g}
PKGNAME = quickjs-${V}
-REVISION = 0
CATEGORIES = lang
Index: lang/quickjs/distinfo
===================================================================
RCS file: /cvs/ports/lang/quickjs/distinfo,v
diff -u -p -u -r1.3 distinfo
--- lang/quickjs/distinfo 30 May 2024 18:05:13 -0000 1.3
+++ lang/quickjs/distinfo 6 Nov 2025 02:10:29 -0000
@@ -1,2 +1,2 @@
-SHA256 (quickjs-2024-01-13.tar.xz) = PEv4+JW/pUvrSGyNEhgRJ3Hs/FrDvhA2hR70FWghLgM=
-SIZE (quickjs-2024-01-13.tar.xz) = 765800
+SHA256 (quickjs-2025-09-13.tar.xz) = bx8yKuo7s6kIWNuFyf5xcBP95N99/K/i9X549btLSgw=
+SIZE (quickjs-2025-09-13.tar.xz) = 595964
Index: lang/quickjs/pkg/PLIST
===================================================================
RCS file: /cvs/ports/lang/quickjs/pkg/PLIST,v
diff -u -p -u -r1.3 PLIST
--- lang/quickjs/pkg/PLIST 11 Mar 2022 19:29:13 -0000 1.3
+++ lang/quickjs/pkg/PLIST 6 Nov 2025 02:10:34 -0000
@@ -1,6 +1,5 @@
@bin bin/qjs
@bin bin/qjsc
-bin/qjscalc
include/quickjs/
include/quickjs/quickjs-libc.h
include/quickjs/quickjs.h
Index: lang/quickjs/patches/patch-Makefile
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-Makefile,v
diff -u -p -u -r1.4 patch-Makefile
--- lang/quickjs/patches/patch-Makefile 30 May 2024 18:05:13 -0000 1.4
+++ lang/quickjs/patches/patch-Makefile 6 Nov 2025 02:10:39 -0000
@@ -1,40 +1,34 @@
Remove hardcoded -O2
Use default ar
-Don't use LTO
Remove warning clang doesn't understand
Remove -ldl
+Remove hello_module
Index: Makefile
--- Makefile.orig
+++ Makefile
-@@ -28,13 +28,14 @@ endif
- # Windows cross compilation from Linux
- #CONFIG_WIN32=y
- # use link time optimization (smaller and faster executables but slower build)
--CONFIG_LTO=y
-+#CONFIG_LTO=y
+@@ -37,8 +37,9 @@ endif
+ #CONFIG_LTO=y
# consider warnings as errors (for development)
#CONFIG_WERROR=y
- # force 32 bit build for some utilities
+ # force 32 bit build on x86_64
#CONFIG_M32=y
# cosmopolitan build (see https://github.com/jart/cosmopolitan)
#CONFIG_COSMO=y
+CONFIG_DEFAULT_AR=y
- # installation directory
- PREFIX?=/usr/local
-@@ -98,8 +99,8 @@ else ifdef CONFIG_COSMO
+@@ -127,8 +127,8 @@ else ifdef CONFIG_COSMO
else
HOST_CC=gcc
CC=$(CROSS_PREFIX)gcc
- CFLAGS+=-g -Wall -MMD -MF $(OBJDIR)/$(@F).d
-- CFLAGS += -Wno-array-bounds -Wno-format-truncation
+- CFLAGS += -Wno-array-bounds -Wno-format-truncation -Wno-infinite-recursion
+ CFLAGS+=-Wall -MMD -MF $(OBJDIR)/$(@F).d
+ CFLAGS += -Wno-array-bounds
ifdef CONFIG_LTO
AR=$(CROSS_PREFIX)gcc-ar
else
-@@ -122,7 +123,7 @@ endif
+@@ -160,7 +160,7 @@ endif
CFLAGS+=$(DEFINES)
CFLAGS_DEBUG=$(CFLAGS) -O0
CFLAGS_SMALL=$(CFLAGS) -Os
@@ -43,16 +37,27 @@ Index: Makefile
CFLAGS_NOLTO:=$(CFLAGS_OPT)
ifdef CONFIG_COSMO
LDFLAGS+=-s # better to strip by default
-@@ -194,10 +195,10 @@ ifdef CONFIG_BIGNUM
- QJS_OBJS+=$(OBJDIR)/qjscalc.o
- endif
+@@ -229,1 +229,1 @@ ifeq ($(CROSS_PREFIX),)
+-PROGS+=examples/hello_module
++#PROGS+=examples/hello_module
+@@ -244,9 +244,9 @@ endif
+ QJS_OBJS=$(OBJDIR)/qjs.o $(OBJDIR)/repl.o $(QJS_LIB_OBJS)
-HOST_LIBS=-lm -ldl -lpthread
+HOST_LIBS=-lm -lpthread
- LIBS=-lm
+ LIBS=-lm -lpthread
ifndef CONFIG_WIN32
--LIBS+=-ldl -lpthread
+-LIBS+=-ldl
+LIBS+=-lpthread
endif
LIBS+=$(EXTRA_LIBS)
+
+@@ -394,8 +394,1 @@ # examples
+-# example of static JS compilation with modules
+-HELLO_MODULE_SRCS=examples/hello_module.js
+-HELLO_MODULE_OPTS=-fno-string-normalize -fno-map -fno-typedarray \
+- -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy \
+- -fno-date -m
+-examples/hello_module: $(QJSC) libquickjs$(LTOEXT).a $(HELLO_MODULE_SRCS)
+- $(QJSC) $(HELLO_MODULE_OPTS) -o $@ $(HELLO_MODULE_SRCS)
Index: lang/quickjs/patches/patch-qjs_c
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-qjs_c,v
diff -u -p -u -r1.4 patch-qjs_c
--- lang/quickjs/patches/patch-qjs_c 30 May 2024 18:05:13 -0000 1.4
+++ lang/quickjs/patches/patch-qjs_c 6 Nov 2025 02:10:39 -0000
@@ -1,7 +1,7 @@
Index: qjs.c
--- qjs.c.orig
+++ qjs.c
-@@ -152,7 +152,7 @@ static size_t js_trace_malloc_usable_size(const void *
+@@ -142,7 +142,7 @@ static size_t js_trace_malloc_usable_size(const void *
return malloc_usable_size((void *)ptr);
#else
/* change this to `return 0;` if compilation fails */
Index: lang/quickjs/patches/patch-qjsc_c
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-qjsc_c,v
diff -u -p -u -r1.4 patch-qjsc_c
--- lang/quickjs/patches/patch-qjsc_c 30 May 2024 18:05:13 -0000 1.4
+++ lang/quickjs/patches/patch-qjsc_c 6 Nov 2025 02:10:39 -0000
@@ -3,11 +3,11 @@ Remove -ldl
Index: qjsc.c
--- qjsc.c.orig
+++ qjsc.c
-@@ -449,7 +449,6 @@ static int output_executable(const char *out_filename,
+@@ -502,7 +502,6 @@ static int output_executable(const char *out_filename,
lib_dir, bn_suffix, lto_suffix);
*arg++ = libjsname;
*arg++ = "-lm";
- *arg++ = "-ldl";
*arg++ = "-lpthread";
*arg = NULL;
-
+
Index: lang/quickjs/patches/patch-quickjs-libc_c
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-quickjs-libc_c,v
diff -u -p -u -r1.3 patch-quickjs-libc_c
--- lang/quickjs/patches/patch-quickjs-libc_c 11 Mar 2022 19:29:13 -0000 1.3
+++ lang/quickjs/patches/patch-quickjs-libc_c 6 Nov 2025 02:10:39 -0000
@@ -1,7 +1,7 @@
Index: quickjs-libc.c
--- quickjs-libc.c.orig
+++ quickjs-libc.c
-@@ -55,6 +55,11 @@ typedef sig_t sighandler_t;
+@@ -62,5 +62,10 @@ typedef sig_t sighandler_t;
#endif
#endif /* __APPLE__ */
@@ -12,4 +12,3 @@ Index: quickjs-libc.c
+
#endif
- #if !defined(_WIN32)
Index: lang/quickjs/patches/patch-quickjs_c
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-quickjs_c,v
diff -u -p -u -r1.4 patch-quickjs_c
--- lang/quickjs/patches/patch-quickjs_c 30 May 2024 18:05:13 -0000 1.4
+++ lang/quickjs/patches/patch-quickjs_c 6 Nov 2025 02:10:39 -0000
@@ -1,7 +1,7 @@
Index: quickjs.c
--- quickjs.c.orig
+++ quickjs.c
-@@ -1705,7 +1705,7 @@ static size_t js_def_malloc_usable_size(const void *pt
+@@ -1675,7 +1675,7 @@ static size_t js_def_malloc_usable_size(const void *pt
return malloc_usable_size((void *)ptr);
#else
/* change this to `return 0;` if compilation fails */
Index: lang/quickjs/patches/patch-tests_test_builtin_js
===================================================================
RCS file: /cvs/ports/lang/quickjs/patches/patch-tests_test_builtin_js,v
diff -u -p -u -r1.4 patch-tests_test_builtin_js
--- lang/quickjs/patches/patch-tests_test_builtin_js 30 May 2024 18:05:13 -0000 1.4
+++ lang/quickjs/patches/patch-tests_test_builtin_js 6 Nov 2025 02:10:39 -0000
@@ -6,22 +6,25 @@ Fix the Float32Array test on big-endian
Index: tests/test_builtin.js
--- tests/test_builtin.js.orig
+++ tests/test_builtin.js
-@@ -336,12 +336,12 @@ function test_number()
- assert(Number.isNaN(Number("-")));
- assert(Number.isNaN(Number("\x00a")));
-
+@@ -384,13 +384,13 @@ function test_number()
+ assert((1-2**-53).toString(12), "0.bbbbbbbbbbbbbba");
+ assert((1000000000000000128).toString(), "1000000000000000100");
+ assert((1000000000000000128).toFixed(0), "1000000000000000128");
- assert((25).toExponential(0), "3e+1");
- assert((-25).toExponential(0), "-3e+1");
- assert((2.5).toPrecision(1), "3");
- assert((-2.5).toPrecision(1), "-3");
+- assert((25).toPrecision(1) === "3e+1");
- assert((1.125).toFixed(2), "1.13");
- assert((-1.125).toFixed(2), "-1.13");
+// assert((25).toExponential(0), "3e+1");
+// assert((-25).toExponential(0), "-3e+1");
+// assert((2.5).toPrecision(1), "3");
+// assert((-2.5).toPrecision(1), "-3");
++// assert((25).toPrecision(1) === "3e+1");
+// assert((1.125).toFixed(2), "1.13");
+// assert((-1.125).toFixed(2), "-1.13");
- }
+ assert((0.5).toFixed(0), "1");
+ assert((-0.5).toFixed(0), "-1");
+ assert((-1e-10).toFixed(0), "-0");
- function test_eval2()
[update] lang/quickjs 2024.01.13 -> 2025.09.13