Timothy Flynn
f9fa548d43
LibJS: Pass time zone strings around as String more regularly
...
These are String from the outset, so this patch is almost entirely just
changing function parameter types. This will allow us to cache time zone
parse results without invoking any extra allocations.
2026-02-19 09:20:15 +01:00
Timothy Flynn
206a18acd4
LibJS: Use single-line if/else steps in Temporal operations
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/978311d
2026-02-14 19:47:29 +01:00
Timothy Flynn
78ff593cc8
LibJS: Use "either" / "one of" when comparing multiple items in Temporal
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/5b02980
2026-02-14 19:47:29 +01:00
Timothy Flynn
d9ce90978c
LibJS: Use = for Temporal mathematical value and BigInt comparisons
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/67ca9de
2026-02-14 19:47:29 +01:00
Timothy Flynn
ececb8c38c
LibJS: Improve note about precise division in NudgetToCalendarUnit
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/0e8220c
2026-02-14 19:47:29 +01:00
Timothy Flynn
6cd765c19c
LibJS: Flip validity check to an assertion in IsValidDuration
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/e65f411
2026-01-16 14:31:31 +01:00
Timothy Flynn
3eabdcf460
LibJS: Replace Temporal's BalanceISODate with AddDaysToISODate
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/b28ef08
2026-01-13 13:02:22 -05:00
Timothy Flynn
37f49d5f6d
LibJS: Use nanoseconds to normalize values in IsValidDuration
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/68004cc
https://github.com/tc39/proposal-temporal/commit/a6043aa
https://github.com/tc39/proposal-temporal/commit/1962c8b
Note that we were already performing this calculation using nanoseconds.
2025-11-21 13:52:55 +01:00
Timothy Flynn
54b9ddcc80
LibJS: Use relative date in NudgeToCalendarUnit when comparing durations
...
This is a normative change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/17e12be
The test added here would previously crash.
2025-11-20 08:28:51 -05:00
Timothy Flynn
cb6ca85564
LibJS: Handle relativeTo ZDTs that fall within second DST wallclock time
...
This is a normative change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/1a089eb
2025-09-28 11:33:43 -04:00
Timothy Flynn
2fa6655dcb
LibJS: Ensure NudgeToCalendarUnit is given a non-zero duration sign
...
Otherwise, we trip internal Temporal spec assertions.
This is an editorial change in the Temporal spec. See:
https://github.com/tc39/proposal-temporal/commit/30f8575
2025-08-29 01:14:20 +02:00
Timothy Flynn
8f51d1dd04
LibJS: Integrate Temporal.Duration into Intl.DurationFormat
...
This is a normative change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/2d97205
2025-03-01 14:49:20 +01:00
Timothy Flynn
f16fe66def
LibJS: Migrate IsValidDuration to ECMA-262
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/03770bb
Note: We were actually already using the Temporal definition of this AO
in Intl.DurationFormat, so there's no change needed there.
2025-03-01 14:49:20 +01:00
Timothy Flynn
0e81092685
LibJS: Make CombineDateAndTimeDuration infallible
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/794960c
2024-12-05 15:29:08 -05:00
Timothy Flynn
46c3406008
LibJS: Swap arguments in invocation to AddTimeDurationToEpochNanoseconds
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/630b043
This also changes the second argument of this AO to not use the alias of
TimeDuration, as that should not be used to refer to epoch nanoseconds.
This was missed in commit 2d9405e5d7 .
2024-12-05 15:29:08 -05:00
Timothy Flynn
713e86cc1d
LibJS: Mark some AO invocations in the Nudge* AOs as infallible
...
These are editorial changes in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/7aef51e
https://github.com/tc39/proposal-temporal/commit/35cc12d
https://github.com/tc39/proposal-temporal/commit/2637ba5
https://github.com/tc39/proposal-temporal/commit/76dc52f
https://github.com/tc39/proposal-temporal/commit/034f756
2024-12-05 15:29:08 -05:00
Timothy Flynn
4cbb5661d0
LibJS: Make ToDateDurationRecordWithoutTime infallible
...
This is an editorial change in the Temporal proposal. See:
https://github.com/tc39/proposal-temporal/commit/05017b9
2024-12-05 15:29:08 -05:00
Timothy Flynn
2d9405e5d7
LibJS: Use the TimeDuration alias a bit less in Temporal
...
It was a bit of a semantic mistake too use this alias too eagerly.
Namely, it should not be used to refer to epoch nanoseconds. We now only
use the TimeDuration alias where the spec refers to a value as a time
duration.
2024-11-26 11:35:15 -05:00
Timothy Flynn
d0149d8fc0
LibJS: Begin implementing the relativeTo option of Duration.total
2024-11-23 14:46:00 +01:00
Timothy Flynn
0befd52725
LibJS: Begin implementing the relativeTo option of Duration.compare
2024-11-23 14:46:00 +01:00
Timothy Flynn
35f22dcf79
LibJS: Implement Temporal.PlainYearMonth.prototype.add/subtract
2024-11-22 19:55:24 +01:00
Timothy Flynn
cb5d1b5086
LibJS: Implement Temporal.PlainYearMonth.prototype.until/since
2024-11-22 19:55:24 +01:00
Timothy Flynn
5689621c2b
LibJS: Implement Temporal.Duration.prototype.round
...
Until we have re-implemented Temporal.PlainDate/ZonedDateTime, some of
Temporal.Duration.prototype.round (and its invoked AOs) are left
unimplemented.
2024-11-20 19:04:30 -05:00
Timothy Flynn
4742775262
LibJS: Implement stringification Temporal.Duration prototypes
2024-11-20 19:04:30 -05:00
Timothy Flynn
a80523be18
LibJS: Implement mathematical Temporal.Duration prototypes
...
Includes:
Temporal.Duration.prototype.negated
Temporal.Duration.prototype.abs
Temporal.Duration.prototype.add
Temporal.Duration.prototype.subtract
2024-11-20 19:04:30 -05:00
Timothy Flynn
5fe0d3352d
LibJS: Implement the Temporal.Duration constructor
...
This also includes a stubbed Temporal.Duration.prototype.
Until we have re-implemented Temporal.PlainDate/ZonedDateTime, some of
Temporal.Duration.compare (and its invoked AOs) are left unimplemented.
2024-11-20 19:04:30 -05:00
Timothy Flynn
c8d2404230
LibJS: Update spec steps for the few remaining Temporal AOs
2024-11-20 19:04:30 -05:00
Timothy Flynn
f7517c5b8d
LibJS: Remove our existing Temporal implementation
...
Our Temporal implementation is woefully out of date. The spec has been
so vastly rewritten that it is unfortunately not practical to update our
implementation in-place. Even just removing Temporal objects that were
removed from the spec, or updating any of the simpler remaining objects,
has proven to be a mess in previous attempts.
So, this removes our Temporal implementation. AOs used by other specs
are left intact.
2024-11-20 19:04:30 -05:00
Shannon Booth
f87041bf3a
LibGC+Everywhere: Factor out a LibGC from LibJS
...
Resulting in a massive rename across almost everywhere! Alongside the
namespace change, we now have the following names:
* JS::NonnullGCPtr -> GC::Ref
* JS::GCPtr -> GC::Ptr
* JS::HeapFunction -> GC::Function
* JS::CellImpl -> GC::Cell
* JS::Handle -> GC::Root
2024-11-15 14:49:20 +01:00
Timothy Flynn
93712b24bf
Everywhere: Hoist the Libraries folder to the top-level
2024-11-10 12:50:45 +01:00