Saúl Ibarra Corretgé
268cde8270
Add API to build Date objects
2023-11-24 23:05:27 +01:00
Ben Noordhuis
22a3d80740
Implement Map.groupBy
2023-11-24 11:30:21 +01:00
Ben Noordhuis
3e54403b08
Implement Object.groupBy
2023-11-24 11:30:21 +01:00
Divy Srivastava
a8a5ecb095
Specialize bytecode for default ctor ( #112 )
2023-11-24 01:27:18 +01:00
Saúl Ibarra Corretgé
5e4d45a9d4
Add -ng suffix to CLI output
2023-11-23 00:07:26 +01:00
Ben Noordhuis
165128257f
Fix AsyncGenerator.prototype.return error handling ( #109 )
...
A poisoned .constructor property is observable and the resulting
exception should be delivered to the catch handler, not silently
dropped, otherwise the generator hangs.
2023-11-21 23:57:10 +01:00
Saúl Ibarra Corretgé
8d496b3e3c
Add queueMicrotask
...
Ref: https://github.com/quickjs-ng/quickjs/issues/16
2023-11-21 23:43:17 +01:00
Divy Srivastava
1fcb573e6b
Implement ArrayBuffer.prototype.transfer ( #101 )
2023-11-21 19:29:23 +01:00
Ben Noordhuis
9e8d278161
Use ReferenceError from right realm/context ( #107 )
...
The "this is not initialized" ReferenceError for a class C defined in
context B but instantiated in context A should be an instance of the
ReferenceError from A, not B.
2023-11-21 19:24:15 +01:00
Ben Noordhuis
7c9cf46f97
Make Date methods argument coercion spec compliant ( #104 )
2023-11-21 15:04:38 +01:00
Divy Srivastava
7aabea9db0
Implement Error causes ( #103 )
2023-11-21 14:59:26 +01:00
Ben Noordhuis
d8ea7df950
Reject date strings with negative year zero ( #100 )
2023-11-21 11:43:45 +01:00
Saúl Ibarra Corretgé
5ce2957e23
Make JS_NewClassID thread aware
...
It's as thread-safe as JSRuntime, which isn't thread-safe, but multiple
threads can now allocate them on different runtimes without a problem.
2023-11-21 07:02:34 +01:00
Ben Noordhuis
b56a82d19f
Normalize inputs to String.prototype.localeCompare ( #97 )
...
NFC-normalize the inputs, otherwise strings like "Å" and "A\u030A"
(latin A with combining diacritical mark) don't compare equal.
2023-11-21 00:00:54 +01:00
Saúl Ibarra Corretgé
a721bda7b5
Drop CONFIG_ALL_UNICODE and enable it by default
2023-11-20 10:52:04 +01:00
Ben Noordhuis
bef2a12566
DRY surrogate pair handling ( #95 )
2023-11-20 09:46:02 +01:00
Ben Noordhuis
d1960d1bfe
Implement RegExp 'd' flag ( #86 )
2023-11-20 09:45:44 +01:00
Ben Noordhuis
4727e40ac8
Retrieve RegExp 'g' flag in spec conformant way ( #92 )
2023-11-19 17:26:03 +01:00
Ben Noordhuis
5af98ca858
Remove non-standard Date.__date_clock method ( #88 )
2023-11-18 19:15:05 +01:00
Ben Noordhuis
8ba4f4b824
Remove dead code ( #87 )
2023-11-18 19:14:24 +01:00
Saúl Ibarra Corretgé
ea068d9a70
Add performance.{now,timeOrigin}
...
Ref: https://github.com/quickjs-ng/quickjs/issues/16
2023-11-18 11:16:35 +01:00
Ben Noordhuis
d88e9df9de
Implement TypedArray.prototype.findLast{Index} ( #73 )
2023-11-17 11:56:22 +01:00
Ben Noordhuis
7e955f6f4c
Implement Array.prototype.findLast{Index} ( #70 )
2023-11-17 11:54:21 +01:00
Ben Noordhuis
90d8c6bae0
Fix uninitialized memory access ( #68 )
...
An alternative fix is to zero the `values` and `count` fields in
JS_NewObjectFromShape() irrespective of the object's class_id but
handling it in JS_GetPropertyValue() feels cleaner.
Fixes: https://github.com/quickjs-ng/quickjs/issues/63
2023-11-17 00:12:10 +01:00
Ben Noordhuis
48fc4bb26d
Update Array.prototype[Symbol.unscopables] ( #65 )
...
Add change-array-by-copy methods to Array.prototype[Symbol.unscopables].
2023-11-16 13:05:51 +01:00
Ben Noordhuis
feebfbc6ee
Add Array.prototype.toSpliced ( #64 )
2023-11-16 13:04:53 +01:00
Ben Noordhuis
d2e632e77a
Allow symbols as WeakMap and WeakSet keys ( #58 )
2023-11-16 09:07:59 +01:00
Saúl Ibarra Corretgé
9749a90cc6
Skip stack checks whenbuilding with ASAN
2023-11-14 12:44:16 +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
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
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
Ben Noordhuis
0720b068ca
Implement String.prototype.isWellFormed ( #41 )
2023-11-11 13:47:22 +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
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
0068db8a11
Avoid UB when checking if float fits in int32
2023-11-08 19:17:13 +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
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
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é
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
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
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
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
bellard
446099aa9e
added Object.hasOwn()
2022-03-06 18:54:27 +01:00
bellard
b9f58802dc
fixed invalid Array.prototype.push/unshift optimization
2022-03-06 18:53:03 +01:00
bellard
b5e62895c6
2021-03-27 release
2021-03-27 11:17:31 +01:00
bellard
b1f67dfc1a
2020-11-08 release
2020-11-08 14:30:56 +01:00
bellard
7c312df422
2020-09-06 release
2020-09-06 19:10:15 +02:00
bellard
8900766099
2020-07-05 release
2020-09-06 19:07:30 +02:00
bellard
1722758717
2020-04-12 release
2020-09-06 19:04:20 +02:00
bellard
383e2b06c8
2020-03-16 release
2020-09-06 19:02:03 +02:00
bellard
0e8fffd4de
2020-01-19 release
2020-09-06 18:57:11 +02:00
bellard
91459fb672
2020-01-05 release
2020-09-06 18:53:08 +02:00