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
Saúl Ibarra Corretgé
b11a10471d
fixup!
2023-11-01 22:42:59 +01:00
Saúl Ibarra Corretgé
a9ac7a07ff
Add top-level await support
...
Original author: zamfofex <zamfofex@twdb.moe>
2023-11-01 22:42:59 +01:00
Saúl Ibarra Corretgé
f51616eac8
Don't build with Atomics support by default
...
It's not currently implemented for Windows which makes the bytecode
generated by qjsc not portable.
2023-11-01 21:39:12 +01:00
Saúl Ibarra Corretgé
5f70d08c02
Update .gitignore
2023-11-01 21:06:41 +01:00
Ben Noordhuis
f2a8f04f13
Enable UBSan sanitizer on CI
2023-11-01 09:31:30 +01:00
Ben Noordhuis
d6fbd6b744
Fix UB signed integer overflow
2023-11-01 09:31:30 +01:00
Ben Noordhuis
4a8372a709
Fix UB left shift of negative number
2023-11-01 09:31:30 +01:00
Ben Noordhuis
83e6fca8be
Add UndefinedBehaviorSanitizer support
2023-11-01 09:31:30 +01:00
Ben Noordhuis
a9957cdcee
Fix UB nullptr passing to memcpy()
2023-11-01 09:31:30 +01:00
Ben Noordhuis
8217c69157
Fix UB shift into sign bit
2023-11-01 09:31:30 +01:00
Ben Noordhuis
141b7759c7
Enable sanitizers on CI
2023-11-01 05:20:14 +01:00
Ben Noordhuis
cd4579d106
Add MemorySanitizer support
2023-11-01 05:20:14 +01:00
Ben Noordhuis
f8b3a2e93c
Fix sloppy mode arguments uninitialized value use
...
MemorySanitizer complained about uninitialized reads in
the indexed property code path in JS_GetPropertyValue()
with JS_CLASS_MAPPED_ARGUMENTS objects.
2023-11-01 05:20:14 +01:00
Ben Noordhuis
67585d0421
Fix -Wimplicit-const-int-float-conversion warnings
...
Compare against 0x1p63 instead of INT64_MAX. Converting INT64_MAX to
double rounds it up to INT64_MAX+1.
It made code like `if (d <= INT64_MAX) v = (int64_t)d;` behave subtly
wrong when `d >= 0x1p63` because then `v = (int64_t)d` wraps around to
a negative value.
2023-11-01 05:20:14 +01:00