Commit graph

331 commits

Author SHA1 Message Date
Saúl Ibarra Corretgé
b98df4d994 Run 262 tests when building with {a,ub}san 2023-11-14 12:44:16 +01:00
Saúl Ibarra Corretgé
7926755704 Leave symbols in for Release CMake builds too 2023-11-13 13:02:44 +01:00
Ben Noordhuis
f404980ec0
Add fused get_loc0_loc1 opcode (#55)
get_loc0 and get_loc1 are individually very frequent opcodes _and_ they
are very often paired together, making them ideal candidates for opcode
fusion.

Reduces microbench.js running time by about 4%.
2023-11-13 00:54:13 +01:00
Saúl Ibarra Corretgé
ba9569c76f Drop MinGW CI using Makefile 2023-11-12 23:15:41 +01:00
Saúl Ibarra Corretgé
1ccb36eee8 Add ASAN/MSAN/UBSAN support to CMake 2023-11-12 23:15:41 +01:00
Saúl Ibarra Corretgé
94b85a0784
Test Debug and Release CMake build types on CI (#52) 2023-11-12 23:04:46 +01:00
Ben Noordhuis
920cfc679a
Add copyright notices (#51)
I believe we made enough substantial changes to have a credible claim to
copyright holdership.
2023-11-12 22:42:07 +01:00
Ben Noordhuis
1e3893d25e
Remove duplicate test (#50) 2023-11-12 13:35:52 +01:00
Ben Noordhuis
e8ff1f4a3a
Remove broken SHORT_OPCODES=0 build mode (#49) 2023-11-12 13:35:41 +01:00
Ben Noordhuis
a92e74acac
Remove broken OPTIMIZE=0 build mode (#47) 2023-11-12 13:34:08 +01:00
Ben Noordhuis
162a8b7409
Remove trailing whitespace (#46)
Not purely cosmetic because it breaks navigation with { and } in the
One True Editor.
2023-11-12 10:01:40 +01:00
Ben Noordhuis
15f798db27
Implement Array.prototype.with (#45) 2023-11-11 23:35:46 +01:00
Ben Noordhuis
a19b07af37
Implement Array.prototype.toSorted (#44) 2023-11-11 21:51:02 +01:00
Ben Noordhuis
cfe4251c9a
Implement String.prototype.toWellFormed (#43)
Reworks isWellFormed to be consistent style-wise with toWellFormed.
2023-11-11 21:50:46 +01:00
Saúl Ibarra Corretgé
afee50e89e Fix compilation warning
~~~
/home/runner/work/quickjs/quickjs/qjs.c:506:28: error: ‘best[3]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
  506 |                 if (i == 0 || best[j] > ms)
      |                     ~~~~~~~^~~~~~~~~~~~~~~
/home/runner/work/quickjs/quickjs/qjs.c:506:28: error: ‘best[2]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
/home/runner/work/quickjs/quickjs/qjs.c:506:28: error: ‘best[1]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
~~~
2023-11-11 18:33:51 +01:00
Saúl Ibarra Corretgé
c17371b42a Don't set global compilation flags on CMake 2023-11-11 18:33:51 +01:00
Ben Noordhuis
0720b068ca
Implement String.prototype.isWellFormed (#41) 2023-11-11 13:47:22 +01:00
Saúl Ibarra Corretgé
0dc99e4ac2 Don't use -Werror by default on CMake 2023-11-10 22:06:23 +01:00
Saúl Ibarra Corretgé
f603aef16b Export library incldue directories 2023-11-10 22:03:50 +01:00
Saúl Ibarra Corretgé
087f66247c Drop unused definition 2023-11-10 21:57:01 +01:00
Saúl Ibarra Corretgé
68f7b1be3c Fix CMake generated artifact location 2023-11-10 21:42:40 +01:00
Ben Noordhuis
7b64da2325
Improve BigInt hashing (#38)
Fixes: https://github.com/quickjs-ng/quickjs/issues/35
2023-11-10 21:01:09 +01:00
Ben Noordhuis
8d62210e7d
Remove non-standard BigInt methods (#37)
Fixes: https://github.com/quickjs-ng/quickjs/issues/20
2023-11-10 20:10:52 +01:00
Saúl Ibarra Corretgé
55e845c5dd Add JS_GetVersion 2023-11-10 16:48:49 +01:00
Ben Noordhuis
38f88c0898
Remove CONFIG_BIGNUM, always enable BigInt (#34)
Fixes: https://github.com/quickjs-ng/quickjs/issues/17
2023-11-10 16:09:54 +01:00
Ole André Vadla Ravnås
3c144fd553 Add JS_GetAnyOpaque() to support polymorphism
To be able to check if the class ID is one of multiple known ones, where
the data has a common structure.
2023-11-10 11:01:22 +01:00
Ben Noordhuis
ae17b8522d
Remove operator overloading (#32)
Part of https://github.com/quickjs-ng/quickjs/issues/17
2023-11-10 10:23:40 +01:00
Saúl Ibarra Corretgé
39e834fc18 Add initial CMake support 2023-11-09 17:52:33 +01:00
Ben Noordhuis
e449cb08ef
Remove BigFloat (#31)
Part of https://github.com/quickjs-ng/quickjs/issues/17
2023-11-08 22:23:06 +01:00
Saúl Ibarra Corretgé
c1ed688610 Drop non-standard JSON extension
Ref: https://github.com/quickjs-ng/quickjs/issues/20
2023-11-08 22:14:25 +01:00
Ben Noordhuis
5d5b3cc21f
Remove BigDecimal (#29)
Part of https://github.com/quickjs-ng/quickjs/issues/17
2023-11-08 21:07:16 +01:00
Ben Noordhuis
558a2ac761 Exit on sanitizer trap, don't recover
Fixes: https://github.com/quickjs-ng/quickjs/issues/22
2023-11-08 19:17:13 +01:00
Ben Noordhuis
8956d6bbd3 Fix UB unaligned load 2023-11-08 19:17:13 +01:00
Ben Noordhuis
0068db8a11 Avoid UB when checking if float fits in int32 2023-11-08 19:17:13 +01:00
Saúl Ibarra Corretgé
2f51cbc4e6 Add CI for MinGW on Windows 2023-11-08 11:12:54 +01:00
Saúl Ibarra Corretgé
4f02ab8cfa
Fix use-after-free on error during module evaluation
E.g. if during evaluation of module A, we start loading module B and
an error occurs. This results in a call to js_free_modules() with
JS_FREE_MODULE_NOT_EVALUATED, and since module A isn't yet evaluated,
it gets freed prematurely.

To solve this we improve js_free_modules() to ensure `eval_mark` is not
set. Once js_evaluate_module() returns for module A, it will notice that
an exception occurred and call js_free_modules() with
JS_FREE_MODULE_NOT_EVALUATED. Since `eval_mark` has been cleared by then,
module A gets cleaned up as well.

Co-authored-by: Ole André Vadla Ravnås <oleavr@gmail.com>
2023-11-07 22:23:09 +01:00
Ben Noordhuis
a3a57febed
Implement Array.prototype.toReversed (#19) 2023-11-07 17:31:33 +01:00
Saúl Ibarra Corretgé
e2ae8746ca
Drop support for "use strip"
Ref: https://github.com/quickjs-ng/quickjs/issues/20
2023-11-07 00:29:11 +01:00
Saúl Ibarra Corretgé
1fb9a5010f
Drop support for "use math"
Ref: https://github.com/quickjs-ng/quickjs/issues/20
2023-11-06 23:07:31 +01:00
Ben Noordhuis
9b3b3084fa
Implement TypedArray.prototype.at (#18) 2023-11-06 00:05:44 +01:00
Ben Noordhuis
83d909e70b Ignore more build artifacts 2023-11-05 14:47:33 +01:00
Ben Noordhuis
a59faac8c4
Improve interactive output on GHA (#15)
Before this commit the output of the test262 step was only visible in
the web interface at the end of the test run. Now it prints a status
update every few seconds.
2023-11-05 13:48:44 +01:00
Ben Noordhuis
18eb603e0d
Implement Promise.withResolvers (#14) 2023-11-05 11:08:58 +01:00
Ben Noordhuis
99eb81e1a6
Implement Array.prototype.at (#13) 2023-11-05 11:08:46 +01:00
Ben Noordhuis
55018345ed
Implement String.prototype.at (#12) 2023-11-05 11:08:27 +01:00
Ben Noordhuis
7be933ebca
Enable test262 on CI (#11)
Fixes: https://github.com/quickjs-ng/quickjs/issues/3
2023-11-04 10:27:57 +01:00
Ben Noordhuis
b6e5541d93 Enable ASan en UBSan sanitizers on macOS CI 2023-11-03 01:31:31 +01:00
Ben Noordhuis
e5bdada266 Remove unsafe sprintf() and strcat() calls
Prep work for enabling the sanitizers on macos CI since they are marked
as deprecated and cause the build to fail when -Werror is enabled.
2023-11-03 01:31:31 +01:00
Saúl Ibarra Corretgé
79f3bbc215 Fix build when bignum extensions are not enabled 2023-11-02 09:36:35 +01:00
Saúl Ibarra Corretgé
6d7fd42aae Add JS_GetUint8Array API
Shorthand for getting the underlying buffer of a Uint8Array.
2023-11-01 23:06:31 +01:00