Fabrice Bellard [Mon, 19 Oct 2026 16:27:29 +0000 (18:27 +0200)]
fixed 6 test262 errors: unknown named time zones are now rejected by ToTemporalTimeZoneIdentifier, PlainMonthDay.from(string) now stores the calendar reference date, ToRawPrecision now drops the digit added by a rounding carry and trims the trailing zeros not needed by minimumSignificantDigits, and the short (abbreviated) weekday names are now available in the locale data
Fabrice Bellard [Mon, 19 Oct 2026 16:07:12 +0000 (18:07 +0200)]
explicit resource management: added 'using' variable declarations (initial patch by bnoordhuis and saghul) - simplified the code by removing 'OP_dispose_scope' as the disposal code can be generated on the fly - avoid declaring 'using' as a keyword - use peek_token() to efficiently test the presence of a 'using' declaration - added DECL_MASK_USING to identify the statements where 'using' declarations are allowed
Fabrice Bellard [Mon, 12 Oct 2026 10:07:55 +0000 (12:07 +0200)]
disable Temporal and Intl on 32 bit hosts because int128 is not always supported in this case - avoid depending on float128 for duration division - simplified some int128 code
Fabrice Bellard [Sat, 10 Oct 2026 15:53:37 +0000 (17:53 +0200)]
added experimental AI coded Temporal and Intl support. There is no external dependency. Intl includes its own locale data (can be manually updated from the CLDR) and Temporal includes the calendar algorithms and a timezone database (can be manually updated from the system TZif files)
run-test2: don't increment the test number for strict mode - fixed print_error() for large error messages - don't return an exit code different from 0 if there are errors when updating the error file - added -q option to disable progress output and also disable it when not outputting to a tty
added JS_ToInt64SatF() and fixed String.prototype.repeat with it. Modify Iterator.prototype.drop/take to use it even if it is not strictly compliant as it avoids converting to double when the argument is a short integer value
bptato [Thu, 4 Jun 2026 09:58:49 +0000 (11:58 +0200)]
Check return values of fallible functions (#518)
Port of https://github.com/quickjs-ng/quickjs/pull/1409 (bnoordhuis).
I modified it to prevent an atom leak in js_parse_statement_or_decl,
otherwise it's the same.
Fabrice Bellard [Tue, 2 Jun 2026 16:12:02 +0000 (18:12 +0200)]
added multi-threading support in run-test262 (initial patch by bnoordhuis) - fixed unsafe thread termination in show_progress() - use the number of physical cores by default - added -T option to force the number of threads - avoid hardcoding the maximum number of threads
Fabrice Bellard [Tue, 2 Jun 2026 12:08:19 +0000 (14:08 +0200)]
ArrayBuffer.prototype.transfer: avoid destroying the old array buffer in case the allocation of the new array buffer fails. Also avoid setting opaque = NULL for the custom array buffer free function
bptato [Tue, 24 Mar 2026 18:44:11 +0000 (19:44 +0100)]
Fix member access on non-decimal numeric literals
In other engines, 0x0.toString() returns '0', but QJS would try to parse it
as a float and then throw.
Also removes remnants of hex float parsing which is no longer supported
anyway.
(Port of https://github.com/quickjs-ng/quickjs/pull/377)
Nick Vatamaniuc [Tue, 24 Mar 2026 04:46:16 +0000 (00:46 -0400)]
Avoid initializer-string warning for the digits array
Some newer compilers emit this warning:
```
warning: initializer-string for character array is too long, array size is 36
but initializer has size 37 (including the null terminating character);
did you mean to use the 'nonstring' attribute? [-Wunterminated-string-initialization]
12146 | static char const digits[36] = "0123456789abcdefghijklmnopqrstuvwxyz";
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
To avoid the warning initialize the array as individual characters