Releases: quickjs-ng/quickjs
v0.7.0
QuickJS NG is 1 year old! 🍰
In november 2023 @bnoordhuis and @saghul banded together to create NG and try to reignite the project. So far so good, here is to the next one!
What's Changed
- Add Iterator by @bnoordhuis in #548
- Fix clearing screen in REPL with Ctrl-L by @saghul in #550
- New documentation website by @saghul in #549
- Add Iterator.prototype.toArray by @bnoordhuis in #552
- Add Ctrl-W support for REPL by @saghul in #553
- Simplify eval_and_print code in REPL by @saghul in #554
- Add Iterator.from by @bnoordhuis in #555
- Support the NO_COLOR env variable in the REPL by @saghul in #556
- Add -C compact mode switch to run-test262 by @bnoordhuis in #560
- Add -vv verboser mode switch to run-test262 by @bnoordhuis in #561
- Fix printing of slow tests with -T in run-test262 by @bnoordhuis in #563
- Fix ThreadSanitizer warning in quickjs-libc by @bnoordhuis in #562
- Support printing unicode characters on windows by @andrjohns in #449
- Run test262 tests in parallel by @bnoordhuis in #564
- Fix regexp split with zero-length capture group by @bnoordhuis in #566
- chore: move JS_{Dup,Free}Value and the RT variants from header, reduced duplication by @richarddd in #570
- Fix next token parsing after a function definition by @saghul in #573
- Run test262-update in a single thread by @saghul in #574
- Run ThreadSanitizer on push to master by @bnoordhuis in #575
- Don't allow closing stdio from quickjs-libc by @bnoordhuis in #576
- Fix thread-safety issue in quickjs-libc by @bnoordhuis in #578
- Implement proper Symbol.toStringTag for iterators by @saghul in #580
- Fix computed reference on null or undefined by @saghul in #581
- R2 patches (squash / rebased) by @saghul in #582
- Build all Windows targets when building in CI by @saghul in #583
- Include <intrin.h> on Windows by @bnoordhuis in #584
- Remove unused defines in cutils.h by @saghul in #587
- Enforce buffer length in utf8_encode definition by @bnoordhuis in #589
- Replace js_mode with is_strict_mode bit field by @bnoordhuis in #590
- DRY assertion functions in tests by @saghul in #588
- Run local tests with run-test262 by @bnoordhuis in #591
- Fix definition of minimum_length by @saghul in #593
- Implement Promise.try by @saghul in #597
- Fix cyclic import/export segfault by @bnoordhuis in #568
- Expose ctx->function_proto by @richarddd in #599
- Simplify extract_desc() by @bnoordhuis in #601
- Remove NetBSD CI buildbot by @bnoordhuis in #603
- Fix crash in deserializer by @bnoordhuis in #602
- Restrict atom count in deserializer to 1 million by @bnoordhuis in #605
- Allow turning on multiple sanitizers by @bnoordhuis in #611
- Improve JS_DetectModule by @bnoordhuis in #610
- Rework inline cache handling by @bnoordhuis in #609
- Remove macos-12 buildbots by @bnoordhuis in #604
- Avoid requiring atomics on quickjs-libc by @saghul in #613
- Fix stdc atomics detection and add vs2019 msvc job by @satk0 in #592
- Handle bytecode without IC state by @bnoordhuis in #617
- Implement Iterator.prototype.every by @saghul in #620
- Implement Iterator.prototype.forEach by @saghul in #619
- Prefix stdlib modules with "qjs:" by @saghul in #618
- Eval CLI included files as scripts by @saghul in #621
- Implement Iterator.prototype.find by @saghul in #625
- Implement Iterator.prototype.reduce by @saghul in #626
- Implement Iterator.prototype.some by @saghul in #627
- Add C++ compile test by @bnoordhuis in #615
- Make quickjs.h -Wall -Wextra -pedantic clean by @bnoordhuis in #628
- Improve run-test262 logging by @bnoordhuis in #631
- Auto-detect ASan at compile time by @bnoordhuis in #638
- Don't segfault on missing line number data by @bnoordhuis in #641
- Allow 'undefined' in let or const declaration by @bnoordhuis in #639
- Make qjs --std switch include bjson module by @bnoordhuis in #640
- Detect if stdout is a console in quickjs-libc by @bnoordhuis in #642
- Add stack trace to Test262Error by @bnoordhuis in #644
- Add resizable ArrayBuffers by @bnoordhuis in #646
- Move "no more objects" assert to right place by @bnoordhuis in #649
- Fix exception in WeakRef.prototype.deref by @bnoordhuis in #653
- Fix DUMP_LEAKS memory leak false positive by @bnoordhuis in #655
- Fix FinalizationRegistry refcounting bug by @bnoordhuis in #656
- Don't throw oob exception when setting numeric indexes on TAs by @saghul in #647
- Prevent JS_SetOpaque from overriding internal class state by @saghul in #658
- Improve line:column tracking by @bnoordhuis in #660
- Make global.performance writable by @richarddd in #661
- Don't automatically update test262 submodule by @richarddd in #663
- Remove
qjs
namespace backwards compatibility by @saghul in #662 - Update test262_errors.txt after commit 73cc00e by @bnoordhuis in #665
- Don't use _Thread_local in run-test262.c by @bnoordhuis in #667
- Update to Unicode 15.1, 16.0 by @bnoordhuis in #666
- Implement Iterator.prototype.drop by @saghul in #673
- Work around broken atomics in tinycc by @bnoordhuis in #669
- Implement Iterator.prototype.take by @saghul in #676
- Improve performance of variable resolver by @bnoordhuis in #672
- Implement Iterator.prototype.filter by @saghul in #678
- Remove error handling for JS_NewInt64, it's infallible by @saghul in #677
- Implement Iterator.prototype.map by @saghul in #679
- Update test262 by @bnoordhuis in #680
- Add Error.isError by @bnoordhuis in #682
- Fix detach check in ArrayBuffer.prototype.resize by @bnoordhuis in #681
- Implement Iterator.prototype.flatMap by @saghul in #684
- Fix bytecode stack frame printing by @bnoordhuis in #686
- Add RegExp.escape by @bnoordhuis in #687
- Fix Iterator.prototype by @saghul in #690
- Documentation updates by @saghul in #685
- Make Iterator.from spec compliant by @saghul in #689
- Fix NULL deref in JS_NewRuntime2 by @bptato in #691
- Add Atomics.pause by @bnoordhuis in #692
New Contributors
- @richarddd made their first contribution in https://github.com/quickjs-ng/quickj...
v0.6.1
What's Changed
- Ignore diff for generated files by @saghul in #540
- Provide a description for unitialized values in JS_ToStringInternal by @saghul in #543
- Add ability to (de)serialize symbols by @saghul in #539
- Add version to navigator.userAgent by @saghul in #542
- Fix use of js_malloc_usable_size by @saghul in #544
- Support private brand checks by @saghul in #545
- Enable iterator-helpers test262 feature by @bnoordhuis in #546
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
- Save cur_pc on delete OP by @saghul in #434
- Windows x86 by @saghul in #436
- Cleanup unused variable warnings by @andrjohns in #439
- Remove quickjs-libc from sources when BUILD_QJS_LIBC enabled by @andrjohns in #446
- Avoid macro redefinitions and function name collisions between sources by @andrjohns in #445
- Ignore maybe-uninitialised on MacOS with GCC >= 11 by @andrjohns in #454
- Add js_realloc_opaque to avoid ubsan error by @andrjohns in #455
- Document
qjsc -s
flag in help output by @TooTallNate in #461 - Add
qjsc -n
parameter to override script name stored in bytecode by @TooTallNate in #459 - Reduce duplication in Linux and MacOS CI file, improve flexibility by @andrjohns in #458
- Add
qjsc -r
flag to output raw bytecode by @TooTallNate in #460 - Rename
qjsc -r
toqjsc -b
by @TooTallNate in #462 - Fix Linux with GCC 4.8 CI by @saghul in #466
- Add 'extern' statements to public headers for C++ compatibility by @andrjohns in #450
- Fix memory leak in JS_WriteObject2 by @saghul in #465
- Introduce JS_ReadObject2 by @saghul in #468
- regexp: fix non greedy quantizers with zero length matches by @linusg in #473
- Fix GC leak in
js_proxy_get()
(#302) by @saghul in #474 - Fix declaring property named get/set/async by @kvinwang in #476
- Avoid warnings when compiling under
Wpedantic
by @andrjohns in #437 - Export bjson module by @bnoordhuis in #478
- Accept more flags in bjson read/write methods by @bnoordhuis in #479
- Use INT32_MAX instead of inline value by @saghul in #480
- Support (de)serializing Map and Set objects by @bnoordhuis in #483
- Update test262 by @bnoordhuis in #484
- Fix async iterator missing throw method behavior by @bnoordhuis in #485
- Fix invalid free() in run-test262 by @bnoordhuis in #487
- Optimize js_map_write, don't loop twice by @bnoordhuis in #488
- Fix broken DUMP_BYTECODE debug option by @bnoordhuis in #489
- Add Float16Array by @bnoordhuis in #491
- Fix FinalizationRegistry with primitive held value by @bnoordhuis in #496
- Enable all debug flags when compiling in debug mode by @saghul in #498
- Add Set.prototype.union by @bnoordhuis in #499
- Fix DUMP_MODULE_RESOLVE flag checks by @saghul in #501
- Add ability to specify dump flags with an env variable by @saghul in #503
- Add Set.prototype.difference by @bnoordhuis in #504
- Fix Error.prepareStackTrace tests on Windows by @saghul in #506
- Fix zero-length gnu_printf format string warning by @saghul in #508
- Run FinalizationRegistry callback in the job queue by @saghul in #500
- Add Set.prototype.symmetricDifference by @bnoordhuis in #507
- Add Set.prototype.intersection by @bnoordhuis in #511
- Fix some compilation warnings on Windows by @saghul in #512
- Make the timeout test more resilient by @saghul in #510
- Use an integer as the timer handle by @saghul in #513
- Report async failures via exit code by @saghul in #514
- Make a RelWithDebInfo build when testing with ASAN in the CI by @saghul in #516
- feat(libc): windows native module support by @zeromake in #490
- Fix JS_DetectModule if the first statement is an await by @saghul in #517
- Mark required link libraries as PUBLIC by @saghul in #520
- Disable stack checks when running with ASAN in Debug builds by @saghul in #521
- Actuall fix zero-length gnu_printf format string warning by @saghul in #524
- Silence noisy (and useless) MSVC warnings by @saghul in #515
- Use calloc rather than malloc + memset by @saghul in #519
- Add Set.prototype.isDisjointFrom by @bnoordhuis in #528
- Delete tests/test262.patch by @saghul in #527
- Add Set.prototype.isSubsetOf by @bnoordhuis in #529
- Optional chaining fixes by @saghul in #533
- Fix regexp case insensitive flag by @saghul in #531
- Add Set.prototype.isSupersetOf by @bnoordhuis in #532
- Add JS_HasException by @saghul in #535
- regexp: fixed the zero advance logic in quantifiers by @saghul in #534
- Refactor JSMallocFunctions to simplify the implementation by @saghul in #525
- Add ability to compile the CLI with mimalloc by @saghul in #526
- Add JS_SetLength API function by @andrjohns in #448
New Contributors
- @andrjohns made their first contribution in #439
- @kvinwang made their first contribution in #476
- @zeromake made their first contribution in #490
Full Changelog: v0.5.0...v0.6.0
v0.5.0
What's Changed
- Add Android CI by @saghul in #305
- Add TCC workflows to CI by @saghul in #307
- Update README, add fork information by @saghul in #306
- Fix tcc build action by @bnoordhuis in #311
- Improve JSON parser conformity by @chqrlie in #303
- Pin Ubuntu CI images to 20.04 by @bnoordhuis in #315
- fix potential memory leak by @chqrlie in #318
- Make
Object.prototype
an immutable prototype object by @chqrlie in #317 - Disable ASLR, upgrade Ubuntu CI images by @bnoordhuis in #321
- Add
os.getpid
by @chqrlie in #320 - fix compiler warning: -Wunused-variable by @Gottox in #322
- Do not link to pthread when targeting Android by @aabajyan in #326
- REPL fixes by @saghul in #325
- Add valgrind to CI by @saghul in #324
- Improve string parsing and JSON parsing by @chqrlie in #316
- Add JS_NewSymbol, an API for creating symbols by @saghul in #331
- Remove JS_VALUE_GET_STRING from the public API by @saghul in #330
- Fix fully initializing JSStackFrame by @saghul in #328
- Improve consistency of JS_NewFloat64 API by @chqrlie in #319
- Don't expose JS_GetPropertyInternal in the public API by @saghul in #329
- Fix more error cases by @chqrlie in #332
- Don't serialize IC opcodes by @bnoordhuis in #334
- Small fixes in Date.parse by @chqrlie in #333
- Implement setInterval() by @bnoordhuis in #338
- Fix more v8 errors by @chqrlie in #336
- Fix strict name conformity cases by @chqrlie in #335
- Add cross-platform atomics by @saghul in #327
- Add JS_TryGetProperty by @chqrlie in #337
- Run macOS CI on both amd64 and aarch64 by @saghul in #342
- fix memory leaks in run-test262 by @chqrlie in #345
- Improve completion in REPL by @chqrlie in #343
- Fix CI to make actual release builds on Windows by @saghul in #346
- remove v8 output files in make clean by @chqrlie in #357
- Accept shell scripts in
JS_DetectModule
by @chqrlie in #358 - Fix
js_get_date_string
AM/PM computation forDate.prototype.toLocalString
by @chqrlie in #355 - Unify
JS_DumpValue
functions by @chqrlie in #349 - Use more functions for explicit surrogate handling by @chqrlie in #353
- Use
string_get
for clarity by @chqrlie in #352 - Improve REPL directive support by @chqrlie in #348
- Fix
JS_ReadString
for wide strings on big endian targets by @chqrlie in #354 - Fix crashes in DUMP output by @chqrlie in #350
- Fix
js_math_imul
by @chqrlie in #356 - Improve
js_array_lastIndexOf
and friends by @chqrlie in #359 - Add faster test262 test target by @chqrlie in #362
- Remove js_unlikely macro by @bnoordhuis in #370
- Fix crash in FinalizationRegistry when the observed object is GC'd by @saghul in #371
- Add iOS build to CI by @saghul in #368
- Improve dump option support by @chqrlie in #344
- Simplify arrow function parsing by @chqrlie in #360
- fix crash in js_typed_array_slice caused by memory overlap by @BambooLqq in #379
- Fix potential atom leak in
JS_ReadFunctionTag
by @chqrlie in #380 - Fix performance.now() to return a double by @saghul in #381
- Expose public equality comparison and sameness public API. by @crysehillmes in #373
- Improve DUMP_READ_OBJECT output by @chqrlie in #382
- Fix member accesses for non-decimal numeric literals by @bptato in #377
- Add REPL dark and light color themes by @chqrlie in #383
- Fix potential conversion errors by @chqrlie in #384
- Add strip option in
qjsc
to reduce object size by @chqrlie in #388 - Add utility functions for string to integer conversions by @chqrlie in #366
- Optimize
String.fromCharCode
andString.fromCodePoint
by @chqrlie in #391 - Add
util.inspect
emulation in REPL by @chqrlie in #387 - Remove unused variable by @saghul in #395
- Make sure repos are updated before installing valgrind in CI by @saghul in #396
- Fix CLI memory stats output by @saghul in #394
- Fix handling of memory limit by @saghul in #385
- Fix encoding bug in js_dtoa_radix by @chqrlie in #399
- Improve internal string allocation methods by @chqrlie in #398
- Fixed CMakeLists.txt for Emscripten builds by @jonathanmarvens in #403
- Fix invalid exception for class method with name "get" by @KaruroChori in #402
- Improve parsing error messages by @chqrlie in #405
- Cherrypick bellard/quickjs#289 by @KaruroChori in #404
- Improve UTF-8 decoding and encoding functions by @chqrlie in #410
- Simplify number parsing by @chqrlie in #386
- Improve number to string conversions by @chqrlie in #400
- Simpler utf8_decode by @chqrlie in #414
- Add JS_ArrayGetLength and JS_FreePropertyEnum for external iterators by @Icemic in #409
- Add JS_ThrowPlainError by @saghul in #411
- Improve number conversions by @chqrlie in #413
- Make Linux aarch64 binaries on release too by @saghul in #418
- Explicit casting in JS_NewInt64 & JS_NewUint32 by @frerejerome in #420
- Add JS_ToBigUint64 by @saghul in #416
- fix: nested member access in JS_NAN by @neko-para in #422
- fix: missing math.h for NAN by @neko-para in #423
- add missing include files in headers by @chqrlie in #426
- Fixing #425 by @KaruroChori in #428
- Add riscv64 builds to CI by @saghul in #427
- Refactor TLA support by @QuiiBz in #397
- Add getter for GC threshold by @saghul in #424
New Contributors
- @Gottox made their first contribution in #322
- @aabajyan made their first contribution in #326
- @BambooLqq made their first contribution in #379
- @crysehillmes made their first contribution in #373
- @bptato made their first contribution in #377
- @jonathanmarvens made their first contribution in #403
- @KaruroChori made their first contribution in #402
- @Icemic made their first contribution in #409
- @frerejerome made their first contribution in #420
- @neko-para made their first contribution in #422
- @QuiiBz made their first contribution in https:/...
v0.4.1
What's Changed
- Remove unnecessary casts by @saghul in #227
- Implement RegExp 'v' flag, part 1 by @bnoordhuis in #229
- Make
performance
configurable by @TooTallNate in #233 - Add support for
cmake -DDUMP_LEAKS=1
by @TooTallNate in #230 - Sync with upstream by @saghul in #235
- Fix
getTimezoneOffset()
whentm_gmtoff
is not available by @TooTallNate in #224 - Fix run-test262 dynamic import by @bnoordhuis in #237
- Fix Reflect with detached ArrayBuffer by @bnoordhuis in #239
- Fix Reflect typed array element conversion by @bnoordhuis in #240
- Fix for/in iteration over proxy objects by @bnoordhuis in #241
- Run V8 spec conformance test suite by @bnoordhuis in #243
- removed some unused vars by @andrieshiemstra in #245
- feat: Add support for compiling with Microsoft Visual Studio C++ (MSVC) by @CGQAQ in #246
- Defer evaluation order of computed properties by @bnoordhuis in #238
- feat: Added functions to get access to module exports by @lbguilherme in #250
- android: malloc_usable_size() was renamed to dlmalloc_usable_size() by @RobLoach in #254
- Fix memory usage of rt->class_count by @juancampa in #255
- android: Additional malloc_usable_size() fixes by @RobLoach in #256
- Add qjsc to release artifacts by @mgred in #251
- Align module export API with upstream by @saghul in #261
- Check-in all generated C files by @saghul in #263
- Add WASI support by @saghul in #264
- Remove unnecessary ssize_t posix-ism by @bnoordhuis in #265
- CI to silent wget by -nv (--no-verbose) by @imcotton in #266
- Fix tcc build, remove PACK macro by @bnoordhuis in #271
- Better output from JS_ToCString() on exception by @bnoordhuis in #274
- Add method to GetClassID by @rockwotj in #275
- Force evaluation order in
set_date_fields
by @chqrlie in #268 - Fix shell injection bug in std.urlGet by @bnoordhuis in #277
- Revert "Fix sloppy mode arguments uninitialized value use" by @bnoordhuis in #276
- Fix Map hash bug by @chqrlie in #281
- Add documentation for promise APIs by @rockwotj in #280
- Fix JS_INVALID_PROMISE_STATE macro by @rockwotj in #283
- Add methods to detect arrays by @rockwotj in #282
- Improved Number.prototype.toString for radix other than 10 by @chqrlie in #284
- Accept /[-]/u as a valid regular expression by @bnoordhuis in #288
- Fix big endian serialization by @chqrlie in #269
- Implement getTimezoneOffset for Win32 by @afulsamet in #291
- Fix bug in GET_PREV_CHAR macro by @chqrlie in #278
- feat: make emscripten works by @henrydf in #248
- Add Big Endian CI target by @saghul in #293
- Release WASM / WASI build artifacts too by @saghul in #296
- Update checkout actions by @saghul in #295
- Improve
Date.parse
by @chqrlie in #289 - Enable direct dispatch for WASI by @rockwotj in #299
- Unbreak repl string output by @chqrlie in #300
- Remove custom __getClass method by @saghul in #298
- Improve error handling by @chqrlie in #297
New Contributors
- @TooTallNate made their first contribution in #233
- @andrieshiemstra made their first contribution in #245
- @CGQAQ made their first contribution in #246
- @lbguilherme made their first contribution in #250
- @RobLoach made their first contribution in #254
- @juancampa made their first contribution in #255
- @mgred made their first contribution in #251
- @imcotton made their first contribution in #266
- @rockwotj made their first contribution in #275
- @chqrlie made their first contribution in #268
- @afulsamet made their first contribution in #291
- @henrydf made their first contribution in #248
Full Changelog: v0.3.0...v0.4.1
v0.4.0
What's Changed
- Remove unnecessary casts by @saghul in #227
- Implement RegExp 'v' flag, part 1 by @bnoordhuis in #229
- Make
performance
configurable by @TooTallNate in #233 - Add support for
cmake -DDUMP_LEAKS=1
by @TooTallNate in #230 - Sync with upstream by @saghul in #235
- Fix
getTimezoneOffset()
whentm_gmtoff
is not available by @TooTallNate in #224 - Fix run-test262 dynamic import by @bnoordhuis in #237
- Fix Reflect with detached ArrayBuffer by @bnoordhuis in #239
- Fix Reflect typed array element conversion by @bnoordhuis in #240
- Fix for/in iteration over proxy objects by @bnoordhuis in #241
- Run V8 spec conformance test suite by @bnoordhuis in #243
- removed some unused vars by @andrieshiemstra in #245
- feat: Add support for compiling with Microsoft Visual Studio C++ (MSVC) by @CGQAQ in #246
- Defer evaluation order of computed properties by @bnoordhuis in #238
- feat: Added functions to get access to module exports by @lbguilherme in #250
- android: malloc_usable_size() was renamed to dlmalloc_usable_size() by @RobLoach in #254
- Fix memory usage of rt->class_count by @juancampa in #255
- android: Additional malloc_usable_size() fixes by @RobLoach in #256
- Add qjsc to release artifacts by @mgred in #251
- Align module export API with upstream by @saghul in #261
- Check-in all generated C files by @saghul in #263
- Add WASI support by @saghul in #264
- Remove unnecessary ssize_t posix-ism by @bnoordhuis in #265
- CI to silent wget by -nv (--no-verbose) by @imcotton in #266
- Fix tcc build, remove PACK macro by @bnoordhuis in #271
- Better output from JS_ToCString() on exception by @bnoordhuis in #274
- Add method to GetClassID by @rockwotj in #275
- Force evaluation order in
set_date_fields
by @chqrlie in #268 - Fix shell injection bug in std.urlGet by @bnoordhuis in #277
- Revert "Fix sloppy mode arguments uninitialized value use" by @bnoordhuis in #276
- Fix Map hash bug by @chqrlie in #281
- Add documentation for promise APIs by @rockwotj in #280
- Fix JS_INVALID_PROMISE_STATE macro by @rockwotj in #283
- Add methods to detect arrays by @rockwotj in #282
- Improved Number.prototype.toString for radix other than 10 by @chqrlie in #284
- Accept /[-]/u as a valid regular expression by @bnoordhuis in #288
- Fix big endian serialization by @chqrlie in #269
- Implement getTimezoneOffset for Win32 by @afulsamet in #291
- Fix bug in GET_PREV_CHAR macro by @chqrlie in #278
- feat: make emscripten works by @henrydf in #248
- Add Big Endian CI target by @saghul in #293
- Release WASM / WASI build artifacts too by @saghul in #296
- Update checkout actions by @saghul in #295
- Improve
Date.parse
by @chqrlie in #289 - Enable direct dispatch for WASI by @rockwotj in #299
- Unbreak repl string output by @chqrlie in #300
- Remove custom __getClass method by @saghul in #298
- Improve error handling by @chqrlie in #297
New Contributors
- @TooTallNate made their first contribution in #233
- @andrieshiemstra made their first contribution in #245
- @CGQAQ made their first contribution in #246
- @lbguilherme made their first contribution in #250
- @RobLoach made their first contribution in #254
- @juancampa made their first contribution in #255
- @mgred made their first contribution in #251
- @imcotton made their first contribution in #266
- @rockwotj made their first contribution in #275
- @chqrlie made their first contribution in #268
- @afulsamet made their first contribution in #291
- @henrydf made their first contribution in #248
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- Update LICENSE by @saghul in #175
- Simplify Makefile by @saghul in #176
- Detect JOBS in a more portable way by @saghul in #178
- Fix Makefile rebuilding every target by @saghul in #181
- Add NetBSD support by @FGasper in #177
- Fix private field setters by @saghul in #182
- Use named constant for regexp bytecode size field by @bnoordhuis in #183
- Rename LRE_FLAG_UTF16 to LRE_FLAG_UNICODE by @bnoordhuis in #186
- Remove duplicate JS_GetBigInt call by @bnoordhuis in #188
- Remove js_new_bf() by @bnoordhuis in #189
- Use JS_ToBigIntFree() instead of JS_ToBigInt() by @bnoordhuis in #190
- Change regexp flags field from uint8 to uint16 by @bnoordhuis in #185
- Fix OP_FMT_none_loc bytecode dumping by @bnoordhuis in #192
- Remove CONFIG_CHECK_JSVALUE build mode by @bnoordhuis in #194
- Replace JSValueConst with JSValue by @bnoordhuis in #195
- Cherry-pick fixes from bellard/quickjs by @bnoordhuis in #197
- Implement TypedArray.prototype.toReversed by @bnoordhuis in #198
- Implement TypedArray.prototype.toSorted by @bnoordhuis in #199
- Implement TypedArray.prototype.with by @bnoordhuis in #200
- Change to SIGTERM in child process test by @bnoordhuis in #203
- Handle TypedArray detach during iteration by @bnoordhuis in #201
- Disable flaky test on Cygwin by @bnoordhuis in #202
- Record source column positions by @bnoordhuis in #193
- Add navigator.userAgent to qjs CLI by @saghul in #204
- Remove JSFunctionBytecode.has_debug flag by @bnoordhuis in #207
- Don't throw OOB exception for detached typed array by @bnoordhuis in #208
- Handle TypedArray detach during iteration by @bnoordhuis in #209
- Handle negative zero typed array indices correctly by @bnoordhuis in #212
- Add / adapt upstream fixes by @saghul in #211
- Remove broken JS_READ_OBJ_ROM_DATA flag by @bnoordhuis in #216
- Partially port bellard/quickjs@58f374ef42 by @bnoordhuis in #214
- Remove unused member from JSContext by @saghul in #219
- Retain function source code in serialized bytecode by @bnoordhuis in #218
- Drop non-standard Error properties by @saghul in #220
- Fix typo in #undef by @bnoordhuis in #222
- Implement Error.prepareStackTrace support by @saghul in #223
- Implement Error.stackTraceLimit by @saghul in #226
Full Changelog: v0.2.0...v0.3.0
v0.2.0
Overview
This release bring full ES2022 compliance, polymorphic inline caching for some extra performance, and more! 🚀
What's Changed
- Specialized bytecode for default constructors by @littledivy in #112
- Implement Object.groupBy + Map.groupBy by @bnoordhuis in #123
- Add MinGW 32 CI target by @saghul in #124
- Fix repl autocompletion for regexp with flags by @indutny in #128
- Fix not making library include path public by @saghul in #130
- Add API to build Date objects by @saghul in #129
- Add APIs to build a Uint8Array from binary data directly by @saghul in #126
- Fix implicit enum conversion by @saghul in #132
- Squelch a -Wcast-function-type warnings by @saghul in #137
- Expose class name to static initializers by @bnoordhuis in #139
- Set default visibility to hidden and export the public API by @saghul in #140
- Remove no-op OP_swap+OP_swap bytecode sequence by @bnoordhuis in #143
- Implement static class initializer blocks by @bnoordhuis in #144
- Ignore testdir config when -d or -f is passed by @bnoordhuis in #145
- Add clang64 MinGW environment to CI by @saghul in #146
- Implement WeakRef by @saghul in #148
- Unbreak run-test262 by @bnoordhuis in #151
- Handle serialization endianness transparently by @bnoordhuis in #152
- Implement RegExp serialization by @bnoordhuis in #153
- Add Poly IC by @littledivy in #120
- Enable support for GCC compler v < 4.9 by @loganek in #154
- Remove dead code by @bnoordhuis in #155
- Fix null pointer arithmetic UB in libregexp by @linusg in #136
- Drop ctx argument from functions that don't need it by @bnoordhuis in #156
- Make -DDUMP_BYTECODE=64 print executed bytecode by @bnoordhuis in #158
- Add os.cputime() by @bnoordhuis in #159
- Prohibit freezing/sealing module namespace objects by @bnoordhuis in #160
- Add support for building with ClangCL on Windows by @saghul in #111
- Test Debug and Release on ClangCL by @saghul in #162
- Add Emscripten target to CI by @saghul in #163
- Re-enable stack depth checks under ASan by @bnoordhuis in #161
- Always enable stack checking by @saghul in #166
- Fix stack overflow in CVE-2023-31922 by @nickva in #157
- Fix UB in bf_set_ui() by @saghul in #169
- Fix building with tcc by @bnoordhuis in #170
- Add Cygwin compatibility. by @FGasper in #171
- Add OpenBSD and FreeBSD support by @saghul in #172
- Implement FinalizationRegistry by @saghul in #168
New Contributors
- @indutny made their first contribution in #128
- @loganek made their first contribution in #154
- @linusg made their first contribution in #136
- @nickva made their first contribution in #157
- @FGasper made their first contribution in #171
Full Changelog: v0.1.0...v0.2.0
v0.1.0
Welcome to QuickJS-ng
Welcome to QuickJS-ng friendly for of QuickJS. With this project we aim to provide a worthy successor to QuickJS, packed with new features and bugfixes, and involving the community of QuickJS enthusiasts.
Hope you have as much fun using it as we do building it.
❤️ Ben, Saúl and the QuickJS-ng contributors.
New ES features
- a9ac7a0: Add top-level await support (Saúl Ibarra Corretgé)
- 18eb603: Implement Promise.withResolvers (#14) (Ben Noordhuis)
- 99eb81e: Implement Array.prototype.at (#13) (Ben Noordhuis)
- 5501834: Implement String.prototype.at (#12) (Ben Noordhuis)
- 9b3b308: Implement TypedArray.prototype.at (#18) (Ben Noordhuis)
- a3a57fe: Implement Array.prototype.toReversed (#19) (Ben Noordhuis)
- 0720b06: Implement String.prototype.isWellFormed (#41) (Ben Noordhuis)
- 15f798d: Implement Array.prototype.with (#45) (Ben Noordhuis)
- a19b07a: Implement Array.prototype.toSorted (#44) (Ben Noordhuis)
- cfe4251: Implement String.prototype.toWellFormed (#43) (Ben Noordhuis)
- d2e632e: Allow symbols as WeakMap and WeakSet keys (#58) (Ben Noordhuis)
- feebfbc: Add Array.prototype.toSpliced (#64) (Ben Noordhuis)
- d88e9df: Implement TypedArray.prototype.findLast{Index} (#73) (Ben Noordhuis)
- 7e955f6: Implement Array.prototype.findLast{Index} (#70) (Ben Noordhuis)
- ea068d9: Add performance.{now,timeOrigin} (Saúl Ibarra Corretgé)
- 20b3aca: Update to Unicode 15.0.0 (#89) (Ben Noordhuis)
- 4727e40: Retrieve RegExp 'g' flag in spec conformant way (#92) (Ben Noordhuis)
- b56cbb1: Implement extended named capture group identifiers (#90) (Ben Noordhuis)
- d1960d1: Implement RegExp 'd' flag (#86) (Ben Noordhuis)
- 7aabea9: Implement Error causes (#103) (Divy Srivastava)
- 8d496b3: Add queueMicrotask (Saúl Ibarra Corretgé)
- 1fcb573: Implement ArrayBuffer.prototype.transfer (#101) (Divy Srivastava)
New APIs
- 6d7fd42: Add JS_GetUint8Array API (Saúl Ibarra Corretgé)
- 55e845c: Add JS_GetVersion (Saúl Ibarra Corretgé)
- 38f88c0: Remove CONFIG_BIGNUM, always enable BigInt (#34) (Ben Noordhuis)
- 3c144fd: Add JS_GetAnyOpaque() to support polymorphism (Ole André Vadla Ravnås)
- 5ce2957: Make JS_NewClassID thread aware (Saúl Ibarra Corretgé)
Build system
The build system has been replaced with CMake, here are some of the highlights:
- 39e834f: Add initial CMake support (Saúl Ibarra Corretgé)
- 0b09109: Add shared library target to CMake (#60) (Saúl Ibarra Corretgé)
- 54a4f29: Refactor build system to use CMake only (Saúl Ibarra Corretgé)
- 5d2e74f: Add
-DBUILD_QJS_LIBC
option (Divy Srivastava)
Testing infrastructure
Highlights:
- 62f6789: ci: add macos build+test workflow (#3) (Ben Noordhuis)
- 2f7fd38: ci: add linux build+test workflow (#2) (Ben Noordhuis)
- 141b775: Enable sanitizers on CI (Ben Noordhuis)
- cd4579d: Add MemorySanitizer support (Ben Noordhuis)
- 83e6fca: Add UndefinedBehaviorSanitizer support (Ben Noordhuis)
- f2a8f04: Enable UBSan sanitizer on CI (Ben Noordhuis)
- 7be933e: Enable test262 on CI (#11) (Ben Noordhuis)
- 2f51cbc: Add CI for MinGW on Windows (Saúl Ibarra Corretgé)
- af456e6: Add workflow for making releases (Saúl Ibarra Corretgé)
More
Check the git commit history for more details!