Timothy Flynn
128675770c
LibJS: Implement Intl.Locale.prototype.variants
...
This is a normative change in the ECMA-402 spec. See:
e8c995a
2025-06-04 17:11:35 -04:00
aplefull
223c9c91e6
LibJS: Implement rawJSON and isRawJSON functions
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-04-24 09:33:49 -04:00
Andreas Kling
a0bb31f7a0
LibJS: Make async functions & generators faster with helper types
...
Instead of returning internal generator results as ordinary JS::Objects
with properties, we now use GeneratorResult and CompletionCell which
both inherit from Cell directly and allow efficient access to state.
1.59x speedup on JetStream3/lazy-collections.js :^)
2025-04-01 02:30:42 +02:00
Andreas Kling
f1914893e9
LibJS+LibWeb: Remove more uses of DeprecatedFlyString
2025-03-24 22:27:17 +00:00
Andreas Kling
46a5710238
LibJS: Use FlyString in PropertyKey instead of DeprecatedFlyString
...
This required dealing with *substantial* fallout.
2025-03-24 22:27:17 +00:00
Andreas Kling
53da8893ac
LibJS: Replace PropertyKey(char[]) with PropertyKey(FlyString)
...
...and deal with the fallout.
2025-03-24 22:27:17 +00:00
aplefull
80b2c11c81
LibJS: Implement Math.sumPrecise
2025-03-03 21:46:22 +01:00
Timothy Flynn
26c2484c2f
LibJS: Implement the AsyncDisposableStack interface
...
This is very similar to the DisposableStack interface, except disposal
of resources is promise-based.
2025-01-17 20:46:32 +01:00
Timothy Flynn
5cfd50224c
LibJS: Use enums instead of strings in Intl.DurationFormat AOs
2024-12-04 08:01:35 -05:00
Jonne Ransijn
58631e9eef
LibJS: Add missing CommonPropertyNames
s and StringMayBeNumber::No
s
2024-12-01 10:42:49 +01:00
Timothy Flynn
511029807a
LibJS: Implement Date.prototype.toTemporalInstant
2024-11-26 15:02:07 -05:00
Timothy Flynn
a93d32a306
LibJS: Alphabetically sort property keys and error types
...
And make ErrorType definitions use a better hanging-indent style, to
make it easier to maintain going forward.
i.e. instead of:
M(VeryLongErrorNameHere, "very long error "
"message across multiple "
"lines"
We now have:
M(VeryLongErrorNameHere,
"very long error message across multiple "
"lines")
2024-11-26 11:35:15 -05:00
Timothy Flynn
6a9aec29d5
LibJS: Remove unused property names and error types
...
Held off on this during the Temporal rewrite in favor of just removing
these all in one go.
2024-11-26 11:35:15 -05:00
Timothy Flynn
b95528d7b5
LibJS: Stub out Temporal.ZonedDateTime.prototype.getTimeZoneTransition
...
We will have to add facilities to determine next/previous time zone
transitions. Ideally, ICU can provide this.
2024-11-26 11:00:56 +01:00
Timothy Flynn
f2c19f96f8
LibJS: Implement Temporal.Now
2024-11-25 13:32:58 +01:00
rmg-x
ea20545853
LibJS: Add support for Float16Array
...
Implements TC39 stage three proposal for Float16Arrays:
https://tc39.es/proposal-float16array
2024-11-10 14:48:20 -07:00
Timothy Flynn
93712b24bf
Everywhere: Hoist the Libraries folder to the top-level
2024-11-10 12:50:45 +01:00
Andreas Kling
13d7c09125
Libraries: Move to Userland/Libraries/
2021-01-12 12:17:46 +01:00
Egor Ananyin
7c9c3a10d3
LibJS: Add almost all Math functions
2020-12-28 19:03:11 +01:00
Luke
be30dc2b18
LibJS: Implement Object.prototype.isPrototypeOf
...
Spec: https://tc39.es/ecma262/#sec-object.prototype.isprototypeof
2020-12-28 13:10:07 +01:00
Xavier Cooney
ca0f3db004
LibJS: Implement Array.prototype.sort()
2020-12-27 23:24:33 +01:00
Xavier Cooney
1cf92d39eb
LibJS: Implement String.prototype.endsWith()
2020-12-26 01:09:04 +01:00
Luke
200c7572b7
LibJS: Implement Object.prototype.propertyIsEnumerable
...
Spec: https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
This is used by core-js, which is used by frameworks such as Vue.
2020-12-24 21:00:28 +01:00
Andreas Kling
df2a6cb4ab
LibJS: Add Math.acos() and Math.asin()
2020-12-08 17:49:02 +01:00
Andreas Kling
63b748642a
LibJS: Add Math.atan()
2020-12-08 17:49:02 +01:00
Andreas Kling
cc14b5a6d7
LibJS: Implement a very hackish "arguments" object
...
We now lazily create an "arguments" array inside functions when code
tries to access it.
This doesn't follow the spec at all but still covers a lot of the
basic uses of arguments, i.e "arguments.length" and "arguments[n]"
2020-12-05 16:41:41 +01:00
Andreas Kling
e6dadd9e5b
LibJS: Implement parseInt()
...
Here's a reasonably faithful implementation of ECMAScript 2021 18.2.5.
Some corner cases are not covered, I've left them as FIXME's in the
included unit test.
Also I had to tweak JS::Value::to_i32() to always convert infinity to
zero, which is in accordance with ToInt32 AFAICT.
2020-12-05 13:55:55 +01:00
Linus Groh
32571dfa53
LibJS: Add ArrayBuffer
2020-12-02 23:49:00 +01:00
Linus Groh
ddaab598a7
LibJS: Add TypedArray.BYTES_PER_ELEMENT
2020-12-02 12:52:31 +01:00
Andreas Kling
3565d3c60c
LibJS: Add six typed arrays (signed and unsigned 8/16/32-bit)
...
This patch adds six of the standard type arrays and tries to share as
much code as possible:
- Uint8Array
- Uint16Array
- Uint32Array
- Int8Array
- Int16Array
- Int32Array
2020-12-01 21:05:25 +01:00
Andreas Kling
2d9d883274
LibJS: Add a basic implementation of String.prototype.substr()
2020-11-29 20:29:49 +01:00
AnotherTest
210a3db44d
LibJS: Implement `RegExpPrototype::exec()'
...
This implements *only* the builtin exec() function.
2020-11-27 21:32:41 +01:00
AnotherTest
8ba273a2f3
LibJS: Hook up Regex<ECMA262> to RegExpObject and implement `test()'
...
This makes RegExpObject compile and store a Regex<ECMA262>, adds
all flag-related properties, and implements `RegExpPrototype.test()`
(complete with 'lastIndex' support) :^)
It should be noted that this only implements `test()' using the builtin
`exec()'.
2020-11-27 21:32:41 +01:00
Andreas Kling
a1029738fd
LibJS: Add some more items to CommonPropertyNames that I missed
2020-10-14 00:10:49 +02:00
Andreas Kling
7b863330dc
LibJS: Cache commonly used FlyStrings in the VM
...
Roughly 7% of test-js runtime was spent creating FlyStrings from string
literals. This patch frontloads that work and caches all the commonly
used names in LibJS on a CommonPropertyNames struct that hangs off VM.
2020-10-13 23:57:45 +02:00