Skip to content

Commit 91e7017

Browse files
justjakejosh-claude
authored
Update vendored QuickJS to 2025-09-13 (rebased) (justjake#243)
* Update patch * Fix logging value * Remove CONFIG_BIGNUM as it was removed from upstream * Fix build for QuickJS 2025-09-13 with emscripten 5.0.1 - Add forward declarations for EM_JS callback functions (C99 compliance) - Remove JS_AddIntrinsicBigInt call (BigInt now part of core) - Replace libbf.o with dtoa.o in build (bignum removed, dtoa added) - Regenerate variant packages Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Squashed 'vendor/quickjs/' changes from 36911f0..f113949 f113949 regexp: removed alloca() is lre_exec() - added specific opcodes for \s and \S to have a smaller bytecode - optimized \b and \B 7bd1ae2 \x{N} is a syntax error 31ef02b slightly faster lexical variable assignment c73a435 Don't call well-known Symbol methods for RegExp on primitive values 1dbba8a removed use after free in js_create_module_bytecode_function() (#467) fcd33c1 removed memory leak in case of error in cpool_add() (#468) e5fd391 fixed fast array extension optimization when there are multiple realms 24379bf added regexp duplicate named groups - fixed reset of captures with quantizers b226856 updated to unicode 17.0.0 - updated test262 version 5907aa6 added missing lre_poll_timeout() 47aac8b regexp: cosmetic: make it clearer that there is now a set of registers instead of an auxiliary stack 371c06e regexp: ensure that the bytecode size grows linearly with respect to the input regexp. a774007 removed buffer overflows introduced in regexp optimizations 728ed94 fixed Worker freeing logic (#462) 9f11034 - optimized Regexp.prototype.exec - optimized String.prototype.replace - optimized 'arguments' object creation - optimized access to non strict 'arguments' elements 7ab2341 faster and simpler implementation of regexp backtracking fcbf5ea fixed BJSON array serialization (#457) 4bd485d - Added Iterator.concat (initial patch by bnoordhuis) - optimized js_iterator_concat_next() - added more guards against recursion in Iterator.concat operations 3d0cc29 optimized add/sub int32 overflow 125b012 added error checking in JS_InstantiateFunctionListItem() ae7219b - Closure optimization (go from quadratic to linear time when the number of closure variables is large) - Separated JSVarDef and JSBytecodeVarDef to simplify the code and save memory - fixed debug info stripping with global variables 9688007 Restore a mistakenly removed goto on error in js_build_module_ns() (igorburago) b07ad11 fixed JS_PROP_AUTOINIT handling in js_closure_define_global_var() (#455) d10613f fixed exception handling in put_var operation (regression introduced by commit a6816be) (#454) 080c01f More informative "not a constructor" error message (initial patch by bnoordhuis) (#368) c6fe5a9 Fix length check in ArrayBuffer.prototype.slice (bnoordhuis) (#451) 7cfddd0 fixed DataView resizing 75b5230 Fix use-after-free in ArrayBuffer.prototype.transfer (bnoordhuis) (#450) - use js_array_buffer_update_typed_arrays() in JS_DetachArrayBuffer() baa186f qjs: added --strict option - don't consider included files as modules - allow module and strict code with -e option 961478d removed duplicate test e015918 Much faster destructuring at the expense of a slight incompatibility with the spec when direct evals are present (v8 behaves the same way). a6816be optimized global variable access eb2c890 removed uninitialized variable eab6945 updated test results c31809e fixed operation order in Regexp constructor af16a97 changed module rejection order according to spec change 9a421b3 optimized Array.prototype.push 3e5f2bb inlined the get_length operation c720e35 added js_string_eq() 2161640 stricter year parsing in Date 7fb994c fixed argument evaluation order in Date constructor and Date.UTC() 0d4cd2d faster and safer dbuf functions (#443) 2a53de0 test262 update 6345009 fixed regression in error message display introduced in commit 42eb279 eb9fa2b compilation fix for clang 42eb279 Faster context creation and exception checks in JS_NewContext (#404) 7a488f3 update c8a8cf5 faster appending of elements in arrays 79f3ae2 optimized string_buffer_putc() e5de89f optimized post_inc and post_dec 8e8eefb optimized array access by inlining get_array_el, get_array_el2, get_array_el3 and put_array_el 64c55c6 removed JS_PROP_NO_ADD 57f8ec0 inlined fast path for get_field, get_field2 and put_field 2c90110 - optimized global variable access f4951ef optimize the create of arrays - optimized the rest and array_from opcodes f1253f2 Improve error handling in Promise.withResolvers (bnoordhuis) 31663a9 updated test262 4af5b1e Merge pull request #408 from nickva/run-test262-in-ci fb14cc6 Run test262 tests in CI c3e5ae2 simplified math.sumPrecise() 0060876 fixed Date parsing: "1997-03-08 11:19:10-0700" is a valid date and "1997-03-08T11:19:10-07" should yield an error a6db749 fixed Atomics.pause() in the NaN boxing case (32 bit cpu) bc753c6 added Math.sumPrecise() 456e016 added Map and WeakMap upsert methods (bnoordhuis) 8807fed - added Atomics.pause (bnoordhuis) - use the pause instruction for x86 and ARM64 in Atomics.pause() f021d77 - added resizable array buffers (bnoordhuis) - fixed Atomics.wait, Atomics.notify, TypedArray.prototype.lastIndexOf - fixed JS_PreventExtensions() with resizable typed arrays 44d03a8 fixed parsing of computed property name 1e19893 - added ArrayBuffer.prototype.transfer (Divy Srivastava) - fixed transfer when the ArrayBuffer was allocated with a custom allocator 2d99c32 Iterator functions: cf0e179 Iterator is an abstract class (bnoordhuis) 3dcca0d fix Iterator.prototype.constructor (initial patch by bnoordhuis) b2ed2e9 added Iterator.prototype.[drop,filter,flatMap,map,take,every,find,forEach,some,reduce,[Symbol.toStringTag]] (saghul) e924173 added Iterator.prototype.toArray and Iterator.from (bnoordhuis) 982b7aa added the Iterator object 0377dab removed uninitialized values - removed useless init 0cef7f0 set methods: removed memory leaks - fixed ordering of property access - fixed conversion to integer of 'size' in GetSetRecord() - added missing iterator close - factorized code a1e073e added set methods (bnoordhuis) de4d392 removed memory leak (#441) dc7af0a updated release.sh fa628f8 new release 391cd3f Fix crash on failure to read bytecode (penneryu) 9f6c190 more efficient handling of strings in JSON.stringify() 8a0a6e9 better pretty printing of strings - removed String.prototype.__quote() 20d2b40 qjsc: handle C name conflicts between scripts and modules (#432) a4e4b43 run-test262: added --count_skipped_features option 0b3c73e removed function cast warnings (initial patch by saghul) 5689f30 fixed handling of 8 bit unicode strings in RegExp (regression introduced by commit a4ac84d) a4ac84d Adjust lastIndex to leading surrogate when inside a surrogate pair in unicode RegExp (initial patch by auvred) d9ec8f1 limit function and regexp bytecode to 1G to avoid buffer overflows (the bytecode generators assume that bytecode offsets can fit a 32 bit signed integer 4e0d0b7 avoid side effects in JS_PrintValue() which may lead to crashes in print() and js_std_promise_rejection_check() c927eca fixed buffer overflow in TypedArray.prototype.lastIndexOf() 9ce5442 fixed buffer overflow in js_bigint_to_string1() 1168c21 fixed crash in OP_add_loc if the variable is modified in JS_ToPrimitiveFree() e1c18be fixed buffer overflow in js_bigint_from_string() c942978 TypedArray.prototype.subarray: fixed the step at which '[[ByteOffset]]' is read bb34e27 test262 update 1fdc768 removed module leak in js_std_eval_binary() (#425) 458c34d fixed GC logic so that a module can live after a JSContext is destroyed (#280) - update the reference count for the realm in jobs and FinalizationRegistry 2fd48bf fixed module async evaluation logic - added DUMP_MODULE_EXEC f1b1c00 update test262 4d9a27c update Changelog 098f221 added Error.isError() (bnoordhuis) 9b935db Merge pull request #418 from nickva/fix-byteoffset-for-detached-array-buffers 0f7eadf Fix Windows MinGW CI Build 00b1d8d Read byteOffset for detached buffers 638ec8c fixed js_bigint_to_string1() (#412) bb986e5 update tests fc524f7 added missing 'Unknown' unicode Script dfc254a update tests 3d92a9d new keyword cannot be used with an optional chain 02a2643 fixed parsing of function definition 3dc7ef1 more robust out of memory handling (#406) 1572aa8 avoid win32 crash in getTimezoneOffset() if time is < 1970 (justjake#238) 7c487f1 support JSON modules in qjsc - added support of JSON5 modules (using type = "json5") 1dfaa61 improved compatibility of std.parseExtJSON() with JSON5 8b2a124 fixed Regexp.prototype[Symbol.match] 071a4cf use Object.is() in tests f10ef29 added JSON modules and import attributes 8381245 added JS_AtomToCStringLen() 2f167bb export JS_FreePropertyEnum() 9bce51e improved JSON parser conformity (chqrlie) (justjake#250) aaa9cea Proxy: fixed prototype comparison in setPrototypeOf() and getPrototypeOf() (#410) 1021e3c compilation fix a33610d update test results f95b8ba added regexp modifiers 9c973a8 added Promise.try (saghul) 3c39307 better promise rejection tracker heuristics (justjake#112) d7cdfdc regexp: added v flag support - fixed corner cases of case insensitive matching a8b2d7c added Float16Array (bnoordhuis) - optimized float16 conversion functions c95b024 added RegExp.escape (bnoordhuis) 0a6160d avoid relying on 'FILE *' in JS_PrintValue() API 11d076f added get_array_el3 opcode - removed to_propkey2 opcode 703de06 fixed use of JS_DumpValue() be06b3e added JS_PrintValue() and use it in console.log(), print() and the REPL (justjake#256) 30fe3de Object.prototype has an immutable prototype 53327c2 simplified uncatchable exception handling 23e2dc9 handle strings as module import and export names 3fbea36 update tests 9bb1d72 fixed operation order in js_obj_to_desc() 2d4e1cc fixed the delete operator with global variables 894ce9d fixed js_std_await() so that it behaves the same way as js_std_loop() (#402) 19abf18 new release 1b13fa6 added more C callbacks for exotic objects (#324) 7645ce5 more precise error location reporting 3306254 Merge pull request #393 from nickva/more-ci-targets-and-windows-fixes 8e9e8e8 update tests 87cf1b0 run-test262: added $262.gc() 3bffe67 fixed TypedArray.prototype.slice() when the buffers overlap 08a28c0 fixed TypedArray.prototype.with with detached ArrayBuffer a0a760f fixed GeneratorFunction prototype b32cccb fixed RegExp.prototype[Symbol.split] 1e958ab fixed operation order in Object.prototype.propertyIsEnumerable() 5afd0eb fix property ordering in the object returned by RegExp.prototype.exec() 5e71d14 setters cannot have rest arguments 99a855f future reserved keywords are forbidden in function name and arguments when the function body is in strict mode c0958ee More CI tragets: Linux 32bit, LTO, Windows and Cosmopolitan e5e7248 added staging test262 tests fbf7d8a fixed detached TypedArray handling in Atomics operations 334aa18 fixed iterator close in Map/Set constructor dbbca3d dtoa fix for minus zero 37cde16 fixed build_arg_list() e1f6dfe fixed checks in Proxy defineProperty e7264d6 fixed Array.from() and TypedArray.from() 000db3a the %TypedArray% Intrinsic Object should be a constructor db3d3f0 fixed memory leak in String constructor b67c416 fixed Proxy getOwnPropertyDescriptor with getters and setters 82d86b1 removed atom leak introduced in commit 83530ac9 f2b0723 added 'at' in Array.prototype[Symbol.unscopables] 0c5d59f optimized and fixed JS_AtomIsNumericIndex1(): 'NaN' is also a number 3b04c58 fixed 'with' access by adding HasPropery() calls - removed unused 'with_get_ref_undef' opcode 83530ac fixed destructuring operation order when defining variables - optimized more cases of variable definition in destructuring 1d5e7cf fixed destructuring parsing: do it only in assignment expressions 5449fd4 more ToPropertyKey ordering changes 8f99de5 spec update: ToPropertyKey() is now done after the evaluation of the expression in assignments 8bb41b2 enabled os.Worker on Windows (bnoordhuis) bff5525 Merge pull request #400 from renatahodovan/fix-regexp f5788c7 Define lre_check_timeout in fuzz_regexp ecfef71 String.prototype.localeCompare is added in JS_AddIntrinsicStringNormalize() as it requires unicode normalization c361210 qjsc: added missing -fno-weakref 251a8b2 added column number in error messages - simplified parser 4cc4c6c optimized js_parse_class_default_ctor() (bnoordhuis) 9106fa0 fixed DUMP_BYTECODE 5b0c98a fixed HTML comments (chqrlie) 67b48ae - removed the 'use strip' extension - removed the JS_EVAL_FLAG_STRIP eval flag and replaced it with JS_SetStripInfo() which has simpler semantics. - qjs: added the '-s' and '--strip-source' options - qjsc: added the '-s' and '--keep-source' options c50de13 indent fix 9918c12 workaround for #282 7adeb5c Fix exporting destructured variables (saghul) (#382) 949c105 fixed class field named get or set d546fbf changed js_throw_type_error ES5 workaround to be more compatible with test262 c505ac0 fixed JS_IsString() with ropes 25ffdb4 fixed the handling of unicode identifiers 9d3776d fixed break statement in the presence of labels (bnoordhuis) (#275) 00e6f29 added JS_GetAnyOpaque() (oleavr) 1eb05e4 fixed buffer overflow in BJSON String and BigInt reader (#399) a151ce1 fixed and improved Map/Set hashing f05760c qjs: added performance.now() 2b6cf57 removed unused slack in hash_map_resize() (saghul) 083b7ba Fix UB in BigInt left shift (saghul) fa706d5 Fix leak in BigInt unary plus (saghul) ec83bd2 qjs: allow SI suffixes in memory sizes - set default stack size to 1 MB c805d4f fixed weakmap gc (#398) 1943101 updated Changelog 00b709d flush stdout in console.log() (#309) 159fe28 fixed module cyclic imports (#329) c1bf4e9 workaround for overflow test in JS_GetOwnPropertyNamesInternal() (justjake#111) beeb272 'undefined' is a valid let/const variable name. It gives a SyntaxError at top level because it is already defined (#370) f121cbd added forgotten js_weakref_is_live() tests b342502 avoid freeing an object structure in js_weakref_free() if it is about to be freed in free_zero_refcount() 8b5b127 reworked weak references so that cycles are (hopefully) correctly handled - added Symbol as WeakMap key, WeakRef and FinalizationRegistry bf164d6 fixed eval with empty argument scope (justjake#249) 6ac04e1 removed useless printf() (justjake#257) 0d7aaed ensure that JS_IteratorNext() returns JS_UNDEFINED when done = TRUE (#394) 2634856 removed invalid tests 56c47f7 fixed exception handling in AsyncFromSyncIterator and async for of 67de495 fixed typed array set operation when obj != receiver b0c1a12 fixed set_date_field() d045a13 disable rejection tracker in the repl - repl cleanup e8cfe8f removed memory leak in string padding (issue #274) d20ffec exit by default on unhandled promise rejections (issue #305) dec4aca update test262_errors.txt b31bb20 updated to unicode 16.0.0 (bnoordhuis) - updated test262 29630bc added missing header 2a4f629 added -Wno-infinite-recursion 6cc02b4 more use of js_new_string8 - inlined JS_NewString() (initial patch by Charlie Gordon) 156d981 added string ropes for faster concatenation of long strings (issue justjake#67) 372ad84 more dtoa bench (Charlie Gordon) a44011e enable dtoa tests on win32 d1bb520 reduced memory usage of Map hash table 4941398 fixed hash_map_resize() - added Map/WeakMap in microbench 9f65ef1 simplified and fixed backtrace_barrier (#306) 978756a protect against printf errors (#319) 9936606 added new dtoa library to print and parse float64 numbers. It is necessary to fix corner cases (e.g. radix != 10) and to have correct behavior regardless of the libc implementation. 9f1864a msan fix (#389) 131408f simplified js_bigint_from_float64() 7399069 fixed examples/hello_module compilation (justjake#240) 6d6893b fixed BigInt hashing - removed -fno-bigint in qjsc and JS_AddIntrinsicBigInt() (BigInt is now considered as a base object) 5a16c0c fixed JS_DumpValue() for BigInt 6de8885 more bignum cleanup 96e7965 removed the ability to do simultaneous 64 and 32 bit x86 builds in order to simplify the Makefile 22dbf49 Merge pull request #391 from nickva/try-to-fix-multiplatform-builds e9c69f7 Fix multiarch CI builds ee4cd4d compilation fix 543897a added missing variable 61e8b94 removed bignum support and qjscalc - added optimized BigInt implementation 837a697 regexp: allow [\-] in unicode mode (#373) 1be68b3 fixed CONFIG_ALL_UNICODE compilation 9bd10d8 simplified the handling of closures dfd9c93 added missing stack overflow check in JSON.stringify() 25aaa77 allow regexp interruption (e.g. with Ctrl-C in the REPL) 027f3cb fix crash when add_property() fails on build arguments (penneryu) c739deb microbench: use toFixed() 6474793 JS_SetPropertyInternal(): avoid recursing thru the prototypes if the property is found in a prototype 030333c fixed date parsing in case there is more than nine initial digits (initial patch by nickva) 6e2e68f Fix termination in Worker test 012451d Define a fallback PATH_MAX if not available 8624b5c Use ftello() & fseeko() on any OS based on GNU libc 3489493 Use malloc_usable_size() on any OS based on GNU libc 5417ab0 Fix `JS_HasException()` when `null` is thrown (#313) b3715f7 Fix GC leak in `js_proxy_get()` (#302) git-subtree-dir: vendor/quickjs git-subtree-split: f1139494d18a2053630c5ed3384a42bb70db3c53 * revert? * Revert "revert?" This reverts commit 32842c3. --------- Co-authored-by: Josh Parnham <joshparnham@gmail.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 8a6afb2 commit 91e7017

156 files changed

Lines changed: 24629 additions & 28403 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

c/interface.c

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,15 @@
101101
#define IntrinsicsFlags enum QTS_Intrinsic
102102
#define EvalDetectModule int
103103

104+
// Forward declarations for EM_JS callback functions
105+
// These are implemented via EM_JS macro but need forward declarations for C99 compliance
106+
#ifdef __EMSCRIPTEN__
107+
JSValue *qts_host_call_function(JSContext *ctx, JSValueConst *this_ptr, int argc, JSValueConst *argv, uint32_t magic_func_id);
108+
int qts_host_interrupt_handler(JSRuntime *rt);
109+
char *qts_host_load_module_source(JSRuntime *rt, JSContext *ctx, const char *module_name);
110+
char *qts_host_normalize_module(JSRuntime *rt, JSContext *ctx, const char *module_base_name, const char *module_name);
111+
#endif
112+
104113
typedef struct qts_RuntimeData {
105114
bool debug_log;
106115
} qts_RuntimeData;
@@ -319,10 +328,6 @@ enum QTS_Intrinsic {
319328
QTS_Intrinsic_TypedArrays = 1 << 9,
320329
QTS_Intrinsic_Promise = 1 << 10,
321330
QTS_Intrinsic_BigInt = 1 << 11,
322-
QTS_Intrinsic_BigFloat = 1 << 12,
323-
QTS_Intrinsic_BigDecimal = 1 << 13,
324-
QTS_Intrinsic_OperatorOverloading = 1 << 14,
325-
QTS_Intrinsic_BignumExt = 1 << 15,
326331
};
327332

328333
JSContext *QTS_NewContext(JSRuntime *rt, IntrinsicsFlags intrinsics) {
@@ -370,24 +375,7 @@ JSContext *QTS_NewContext(JSRuntime *rt, IntrinsicsFlags intrinsics) {
370375
if (intrinsics & QTS_Intrinsic_Promise) {
371376
JS_AddIntrinsicPromise(ctx);
372377
}
373-
if (intrinsics & QTS_Intrinsic_BigInt) {
374-
JS_AddIntrinsicBigInt(ctx);
375-
}
376-
#ifdef CONFIG_BIGNUM
377-
if (intrinsics & QTS_Intrinsic_BigFloat) {
378-
JS_AddIntrinsicBigFloat(ctx);
379-
}
380-
if (intrinsics & QTS_Intrinsic_BigDecimal) {
381-
JS_AddIntrinsicBigDecimal(ctx);
382-
}
383-
if (intrinsics & QTS_Intrinsic_BignumExt) {
384-
JS_EnableBignumExt(ctx, TRUE);
385-
}
386-
if (intrinsics & QTS_Intrinsic_OperatorOverloading) {
387-
JS_AddIntrinsicOperators(ctx);
388-
}
389-
#endif
390-
378+
// Note: BigInt is now always part of QuickJS core, no need for separate intrinsic
391379
return ctx;
392380
}
393381

@@ -809,7 +797,7 @@ MaybeAsync(JSValue *) QTS_Eval(JSContext *ctx, BorrowedHeapChar *js_code, size_t
809797
}
810798

811799
IF_DEBUG {
812-
snprintf(msg, LOG_LEN, "QTS_Eval: eval_result = %d", eval_result);
800+
snprintf(msg, LOG_LEN, "QTS_Eval: eval_result = %d", JS_VALUE_GET_TAG(eval_result));
813801
qts_log(msg);
814802
}
815803

@@ -896,12 +884,6 @@ OwnedHeapChar *QTS_Typeof(JSContext *ctx, JSValueConst *value) {
896884
result = "number";
897885
} else if (JS_IsBigInt(ctx, *value)) {
898886
result = "bigint";
899-
#ifdef CONFIG_BIGNUM
900-
} else if (JS_IsBigFloat(*value)) {
901-
result = "bigfloat";
902-
} else if (JS_IsBigDecimal(*value)) {
903-
result = "bigdecimal";
904-
#endif
905887
} else if (JS_IsFunction(ctx, *value)) {
906888
result = "function";
907889
} else if (JS_IsBool(*value)) {

doc/@jitl/quickjs-asmjs-mjs-release-sync/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This variant was built with the following settings:
3030

3131
The original [bellard/quickjs](https://github.com/bellard/quickjs) library.
3232

33-
Version [2024-02-14+36911f0d](https://github.com/bellard/quickjs/commit/36911f0d3ab1a4c190a4d5cbe7c2db225a455389) vendored to quickjs-emscripten on 2024-06-15.
33+
Version [2025-09-13+f1139494](https://github.com/bellard/quickjs/commit/f1139494d18a2053630c5ed3384a42bb70db3c53) vendored to quickjs-emscripten on 2026-02-15.
3434

3535
## Release mode: release
3636

@@ -61,6 +61,7 @@ Full variant JSON description:
6161
"syncMode": "sync",
6262
"description": "Compiled to pure Javascript, no WebAssembly required.",
6363
"emscriptenInclusion": "asmjs",
64+
"emscriptenVersion": "3.1.43",
6465
"exports": {
6566
"import": {
6667
"emscriptenEnvironment": ["web", "worker", "node"]
@@ -80,7 +81,8 @@ Variant-specific Emscripten build flags:
8081
"--pre-js $(TEMPLATES)/pre-extension.js",
8182
"--pre-js $(TEMPLATES)/pre-wasmMemory.js",
8283
"-s WASM=0",
83-
"-s SINGLE_FILE=1"
84+
"-s SINGLE_FILE=1",
85+
"-s WASM_ASYNC_COMPILATION=0"
8486
]
8587
```
8688

doc/@jitl/quickjs-asmjs-mjs-release-sync/exports.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Compiled to pure Javascript, no WebAssembly required.
2525

2626
| Variable | Setting | Description |
2727
| -- | -- | -- |
28-
| library | quickjs | The original [bellard/quickjs](https://github.com/bellard/quickjs) library. Version [2024-02-14+36911f0d](https://github.com/bellard/quickjs/commit/36911f0d3ab1a4c190a4d5cbe7c2db225a455389) vendored to quickjs-emscripten on 2024-06-15. |
28+
| library | quickjs | The original [bellard/quickjs](https://github.com/bellard/quickjs) library. Version [2025-09-13+f1139494](https://github.com/bellard/quickjs/commit/f1139494d18a2053630c5ed3384a42bb70db3c53) vendored to quickjs-emscripten on 2026-02-15. |
2929
| releaseMode | release | Optimized for performance; use when building/deploying your application. |
3030
| syncMode | sync | The default, normal build. Note that both variants support regular async functions. |
3131
| emscriptenInclusion | asmjs | The C library code is compiled to Javascript, no WebAssembly used. Sometimes called "asmjs". This is the slowest possible option, and is intended for constrained environments that do not support WebAssembly, like quickjs-for-quickjs. |

doc/@jitl/quickjs-singlefile-browser-debug-asyncify/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This variant was built with the following settings:
3030

3131
The original [bellard/quickjs](https://github.com/bellard/quickjs) library.
3232

33-
Version [2024-02-14+36911f0d](https://github.com/bellard/quickjs/commit/36911f0d3ab1a4c190a4d5cbe7c2db225a455389) vendored to quickjs-emscripten on 2024-06-15.
33+
Version [2025-09-13+f1139494](https://github.com/bellard/quickjs/commit/f1139494d18a2053630c5ed3384a42bb70db3c53) vendored to quickjs-emscripten on 2026-02-15.
3434

3535
## Release mode: debug
3636

doc/@jitl/quickjs-singlefile-browser-debug-asyncify/exports.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Variant with the WASM data embedded into a browser ESModule.
2525

2626
| Variable | Setting | Description |
2727
| -- | -- | -- |
28-
| library | quickjs | The original [bellard/quickjs](https://github.com/bellard/quickjs) library. Version [2024-02-14+36911f0d](https://github.com/bellard/quickjs/commit/36911f0d3ab1a4c190a4d5cbe7c2db225a455389) vendored to quickjs-emscripten on 2024-06-15. |
28+
| library | quickjs | The original [bellard/quickjs](https://github.com/bellard/quickjs) library. Version [2025-09-13+f1139494](https://github.com/bellard/quickjs/commit/f1139494d18a2053630c5ed3384a42bb70db3c53) vendored to quickjs-emscripten on 2026-02-15. |
2929
| releaseMode | debug | Enables assertions and memory sanitizers. Try to run your tests against debug variants, in addition to your preferred production variant, to catch more bugs. |
3030
| syncMode | asyncify | Build run through the ASYNCIFY WebAssembly transform. This imposes substantial size (2x the size of sync) and speed penalties (40% the speed of sync). In return, allows synchronous calls from the QuickJS WASM runtime to async functions on the host. The extra magic makes this variant slower than sync variants. Note that both variants support regular async functions. Only adopt ASYNCIFY if you need to! The [QuickJSAsyncRuntime](https://github.com/justjake/quickjs-emscripten/blob/main/doc/quickjs-emscripten/classes/QuickJSAsyncRuntime.md) and [QuickJSAsyncContext](https://github.com/justjake/quickjs-emscripten/blob/main/doc/quickjs-emscripten/classes/QuickJSAsyncContext.md) classes expose the ASYNCIFY-specific APIs. |
3131
| emscriptenInclusion | singlefile | The WASM runtime is included directly in the JS file. Use if you run into issues with missing .wasm files when building or deploying your app. |

doc/@jitl/quickjs-singlefile-browser-debug-sync/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This variant was built with the following settings:
3030

3131
The original [bellard/quickjs](https://github.com/bellard/quickjs) library.
3232

33-
Version [2024-02-14+36911f0d](https://github.com/bellard/quickjs/commit/36911f0d3ab1a4c190a4d5cbe7c2db225a455389) vendored to quickjs-emscripten on 2024-06-15.
33+
Version [2025-09-13+f1139494](https://github.com/bellard/quickjs/commit/f1139494d18a2053630c5ed3384a42bb70db3c53) vendored to quickjs-emscripten on 2026-02-15.
3434

3535
## Release mode: debug
3636

doc/@jitl/quickjs-singlefile-browser-debug-sync/exports.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Variant with the WASM data embedded into a browser ESModule.
2525

2626
| Variable | Setting | Description |
2727
| -- | -- | -- |
28-
| library | quickjs | The original [bellard/quickjs](https://github.com/bellard/quickjs) library. Version [2024-02-14+36911f0d](https://github.com/bellard/quickjs/commit/36911f0d3ab1a4c190a4d5cbe7c2db225a455389) vendored to quickjs-emscripten on 2024-06-15. |
28+
| library | quickjs | The original [bellard/quickjs](https://github.com/bellard/quickjs) library. Version [2025-09-13+f1139494](https://github.com/bellard/quickjs/commit/f1139494d18a2053630c5ed3384a42bb70db3c53) vendored to quickjs-emscripten on 2026-02-15. |
2929
| releaseMode | debug | Enables assertions and memory sanitizers. Try to run your tests against debug variants, in addition to your preferred production variant, to catch more bugs. |
3030
| syncMode | sync | The default, normal build. Note that both variants support regular async functions. |
3131
| emscriptenInclusion | singlefile | The WASM runtime is included directly in the JS file. Use if you run into issues with missing .wasm files when building or deploying your app. |

doc/@jitl/quickjs-singlefile-browser-release-asyncify/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This variant was built with the following settings:
3030

3131
The original [bellard/quickjs](https://github.com/bellard/quickjs) library.
3232

33-
Version [2024-02-14+36911f0d](https://github.com/bellard/quickjs/commit/36911f0d3ab1a4c190a4d5cbe7c2db225a455389) vendored to quickjs-emscripten on 2024-06-15.
33+
Version [2025-09-13+f1139494](https://github.com/bellard/quickjs/commit/f1139494d18a2053630c5ed3384a42bb70db3c53) vendored to quickjs-emscripten on 2026-02-15.
3434

3535
## Release mode: release
3636

doc/@jitl/quickjs-singlefile-browser-release-asyncify/exports.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Variant with the WASM data embedded into a browser ESModule.
2525

2626
| Variable | Setting | Description |
2727
| -- | -- | -- |
28-
| library | quickjs | The original [bellard/quickjs](https://github.com/bellard/quickjs) library. Version [2024-02-14+36911f0d](https://github.com/bellard/quickjs/commit/36911f0d3ab1a4c190a4d5cbe7c2db225a455389) vendored to quickjs-emscripten on 2024-06-15. |
28+
| library | quickjs | The original [bellard/quickjs](https://github.com/bellard/quickjs) library. Version [2025-09-13+f1139494](https://github.com/bellard/quickjs/commit/f1139494d18a2053630c5ed3384a42bb70db3c53) vendored to quickjs-emscripten on 2026-02-15. |
2929
| releaseMode | release | Optimized for performance; use when building/deploying your application. |
3030
| syncMode | asyncify | Build run through the ASYNCIFY WebAssembly transform. This imposes substantial size (2x the size of sync) and speed penalties (40% the speed of sync). In return, allows synchronous calls from the QuickJS WASM runtime to async functions on the host. The extra magic makes this variant slower than sync variants. Note that both variants support regular async functions. Only adopt ASYNCIFY if you need to! The [QuickJSAsyncRuntime](https://github.com/justjake/quickjs-emscripten/blob/main/doc/quickjs-emscripten/classes/QuickJSAsyncRuntime.md) and [QuickJSAsyncContext](https://github.com/justjake/quickjs-emscripten/blob/main/doc/quickjs-emscripten/classes/QuickJSAsyncContext.md) classes expose the ASYNCIFY-specific APIs. |
3131
| emscriptenInclusion | singlefile | The WASM runtime is included directly in the JS file. Use if you run into issues with missing .wasm files when building or deploying your app. |

doc/@jitl/quickjs-singlefile-browser-release-sync/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This variant was built with the following settings:
3030

3131
The original [bellard/quickjs](https://github.com/bellard/quickjs) library.
3232

33-
Version [2024-02-14+36911f0d](https://github.com/bellard/quickjs/commit/36911f0d3ab1a4c190a4d5cbe7c2db225a455389) vendored to quickjs-emscripten on 2024-06-15.
33+
Version [2025-09-13+f1139494](https://github.com/bellard/quickjs/commit/f1139494d18a2053630c5ed3384a42bb70db3c53) vendored to quickjs-emscripten on 2026-02-15.
3434

3535
## Release mode: release
3636

0 commit comments

Comments
 (0)