Moustafa Raafat
54b8a2b094
LibCrypto: Add a way to compare UnsignedBigInteger with double
...
This patch also make SignedBigInteger::compare_to_double make use
of the new function.
2022-11-02 22:04:34 -06:00
Yedaya Katsman
dcad8494d6
LibJS: Accept calendar names case-insensitively
...
This is a normative change in the Temporal spec
See tc39/proposal-temporal@03101c6
2022-10-24 23:00:19 +01:00
davidot
3dc99af3dc
LibJS: Make parse_temporal_duration use the new double parser
2022-10-23 15:48:45 +02:00
Moustafa Raafat
5edd4bd512
LibJS: Require NanosecondsToDays remainder less than dayLength
...
This is an normative change in the Temporal spec.
See: ac69b63
2022-10-22 19:14:14 +02:00
Moustafa Raafat
b1c8029c2b
LibJS: Require that NanosecondsToDays doesn't flip sign
...
This is an normative change in the Temporal spec.
See: e13c52d
2022-10-22 19:14:14 +02:00
Moustafa Raafat
8f964604f0
LibJS: Refactor CalendarFields for better linearity
...
This is a normative change in the Temporal spec.
See: 9b139a1
2022-10-20 00:53:44 +02:00
Idan Horowitz
d38aeddd77
LibJS: Simplify ParseTemporalTimeZoneString
...
This is an editorial change in the Temporal spec.
See: eec8efab
2022-10-20 00:47:42 +02:00
Idan Horowitz
0c61552b81
LibJS: Refactor ToRelativeTemporalObject
...
This is an editorial change in the Temporal spec.
See: 895854d9
2022-10-20 00:47:42 +02:00
Moustafa Raafat
092b33c96e
LibJS: Remove trivial operations ISO{Year,Month,Day}
...
This is an editorial change in the Temporal spec.
See: 606d8a2
2022-10-19 22:39:33 +02:00
Moustafa Raafat
69d5368b2a
LibJS: Remove trivial operation IsValidISOMonth
...
This is an editorial change in the Temporal spec.
See: a08330a
2022-10-19 22:39:33 +02:00
Moustafa Raafat
48cc557dfa
LibJS: Merge ISOMonthCode and BuildISOMonthCode
...
This is an editorial change in the Temporal spec.
See: a4d17b1
2022-10-19 22:39:33 +02:00
Moustafa Raafat
b69ceae10c
LibJS: Improve alias names in ResolveISOMonth
...
This is an editorial change in the Temporal spec.
See: 01d5fbe
2022-10-19 22:39:33 +02:00
Moustafa Raafat
d758566996
LibJS: Simplify ResolveISOMonth
...
This is an editorial change in the Temporal spec.
See: 1b83226
2022-10-19 22:39:33 +02:00
Linus Groh
b79b78a5cc
LibJS: Sync the set of rounding modes
...
This is a normative change in the Temporal spec.
See:
- 9613358
- 4c45464
2022-10-17 13:31:22 +02:00
Linus Groh
3d4ce3cc6d
LibJS: Add missing validation to remaining Calendar operations
...
This is a normative change in the Temporal spec.
See: c2a0cea
2022-10-17 12:56:05 +02:00
Linus Groh
4567ded8e4
LibJS: Reject relativeTo string such as "2022-08-18T17:01Z"
...
This is a normative change in the Temporal spec.
See: 2dc20bf
2022-10-17 12:56:05 +02:00
Linus Groh
57162ad510
LibJS: Rename IsValidTimeZoneName to IsAvailableTimeZoneName
...
This is an editorial change in the Temporal spec.
See: 873313b
2022-10-17 12:56:05 +02:00
Linus Groh
72997c6b77
LibJS: Define IsValidTimeZoneName in terms of AvailableTimeZones
...
This is an editorial change in the Temporal spec.
See: d83dcf0
Note that even though we already implement AvailableTimeZones for Intl,
I kept the existing implementation calling into LibTimeZone directly.
2022-10-17 12:56:05 +02:00
Linus Groh
b6f101f1c0
LibJS: Fix TemporalCalendarString ambiguity
...
This is a normative change in the Temporal spec.
See:
- 278d238
- b73aea7
2022-10-16 15:20:23 +02:00
Linus Groh
484c66125d
LibJS: Rename Get{IANA => Named}TimeZonePreviousTransition
...
This is an editorial change in the Temporal spec.
See: 6b759d1
2022-10-16 14:45:09 +02:00
Linus Groh
8cc260107d
LibJS: Rename Get{IANA => Named}TimeZoneNextTransition
...
This is an editorial change in the Temporal spec.
See: 4b0246a
2022-10-16 14:45:09 +02:00
Idan Horowitz
d795f9c6cf
LibJS: Change dateAdd to a required parameter of MoveRelativeDate
...
This is an editorial change in the Temporal spec.
See: 45d9079
2022-10-16 13:45:56 +02:00
Idan Horowitz
3c55643283
LibJS: Add dateAdd to all remaining MoveRelativeDate calls
...
This is a normative change in the Temporal spec.
See: a48838a
2022-10-16 13:45:56 +02:00
Idan Horowitz
4e79ce4e7a
LibJS: Add optional dateAdd parameter to MoveRelativeDate
...
This is a normative change in the Temporal spec.
See: 891060f
2022-10-16 13:45:56 +02:00
Luke Wilde
35c9e324b4
LibJS: Add fast path TimeZone conversion to PlainDate#toZonedDateTime
...
This is a normative chane in the Temporal spec.
See: fcab1af
2022-10-16 13:40:21 +02:00
Luke Wilde
707f12f927
LibJS: Remove extra property check from Instant#toZonedDateTimeISO
...
This is a normative change in the Temporal spec.
See: 7dfbd80
2022-10-16 13:40:21 +02:00
Luke Wilde
f7bb79d6d1
LibJS: Fast-path ToTemporalTimeZone when the argument is a TimeZone
...
This is a normative change in the Temporal spec.
See: 54cea53
2022-10-16 13:40:21 +02:00
Luke Wilde
8c3512d6ce
LibJS: Fast-path ToTemporalCalendar when the argument is a Calendar
...
This is a normative change in the Temporal spec.
See: 2a43b39
2022-10-16 13:40:21 +02:00
Timothy Flynn
443ffab9dc
LibJS: Use infallible ParseTimeZoneOffsetString
...
This is an editorial change in the Temporal spec. See:
654e300
2022-10-15 18:05:02 +02:00
Timothy Flynn
d992cba014
LibJS: Remove Temporal::DefaultTimeZone
...
This is an editorial change in the Temporal spec. See:
e232580
2022-10-15 18:05:02 +02:00
Timothy Flynn
735e1c4e20
LibJS: Replace GetIANATimeZoneOffset[Ns] with GetNamedTimeZoneOffset[Ns]
...
This is an editorial change in the Temporal spec. See:
e44d36b
2022-10-15 18:05:02 +02:00
Timothy Flynn
053cc90dbe
LibJS: Replace GetIANATimeZoneEpochValue with GetNamedTimeZoneEpoch[Ns]
...
This is an editorial change in the Temporal spec. See:
e834014
2022-10-15 18:05:02 +02:00
Timothy Flynn
1a84dbcb07
LibJS: Replace GetEpochFromISOParts with GetUTCEpochNanoseconds
...
This is an editorial change in the Temporal spec. See:
1b051cc
Note that since Date's implementation of this AO uses Crypto bigints
rather than allocating JS bigints, this change has the fallout of
removing some unused VM parameters and adding an overload of the
IsValidEpochNanoseconds AO for use without a JS::BigInt.
2022-10-15 18:05:02 +02:00
Timothy Flynn
4fbec2e8b3
LibJS: Replace RoundTowardsZero with truncate
...
This is an editorial change in the Temporal spec. See:
409ab66
2022-10-15 18:05:02 +02:00
snooze6214
1fde3737f4
LibJS: Move time zone annotation parsing into ParseISODateTime
...
This is an editorial change in the Temporal spec.
See: tc39/proposal-temporal@c410e25e47
2022-10-15 05:09:09 +00:00
Luke Wilde
d5d1146cc3
LibJS/Temporal: Fix inconsistency in order of observable operations
...
This is a normative change in the Temporal spec.
See: a3a8237
2022-10-14 18:55:12 +02:00
davidot
1be337353b
LibJS: Make sure to exactly add nanoseconds in add_duration
...
If the given nanoseconds values add to something above 2**53 - 1 we are
potentially rounding the double to some near integer value.
2022-10-14 11:23:50 +02:00
davidot
1b0ca52c54
LibJS: Disallow one day long time zone offsets
...
This is a normative change in the Temporal spec.
See: 9cc8b29b
2022-10-14 11:23:50 +02:00
Ben Wiederhake
48d8aff436
LibJS: Add missing includes
...
This remained undetected for a long time as HeaderCheck is disabled by
default. This commit makes the following file compile again:
// file: compile_me.cpp
#include <LibJS/Runtime/StringPrototype.h>
// That's it, this was enough to cause a compilation error.
Likewise for most other files touched by this commit.
2022-09-18 13:27:24 -04:00
Ben Wiederhake
4cd382c621
LibJS: Break another inclusion cycle by removing unnecessary include
2022-09-17 04:00:54 +00:00
Timothy Flynn
85e313077a
LibJS: Do not invoke Cell::vm in constructors before Cell is constructed
...
In a subclass of Cell, we cannot use Cell::vm() before the base Cell
object itself is constructed. Use the Realm's VM instead.
This was caught by UBSAN with vptr sanitation enabled.
2022-09-15 09:45:13 +02:00
Timothy Flynn
85994d6115
LibJS: Remove unused include from JS::Temporal::Calendar
2022-09-05 14:37:16 -04:00
Andreas Kling
35c9aa7c05
LibJS: Hide all the constructors!
...
Now that the GC allocator is able to invoke Cell subclass constructors
directly via friendship, we no longer need to keep them public. :^)
2022-08-29 03:24:54 +02:00
Linus Groh
50428ea8d2
LibJS: Move intrinsics to the realm
...
Intrinsics, i.e. mostly constructor and prototype objects, but also
things like empty and new object shape now live on a new heap-allocated
JS::Intrinsics object, thus completing the long journey of taking all
the magic away from the global object.
This represents the Realm's [[Intrinsics]] slot in the spec and matches
its existing [[GlobalObject]] / [[GlobalEnv]] slots in terms of
architecture.
In the majority of cases it should now be possibly to fully allocate a
regular object without the global object existing, and in fact that's
what we do now - the realm is allocated before the global object, and
the intrinsics between both :^)
2022-08-27 11:29:10 +01:00
davidot
6989f304bc
LibJS: Remove now unnecessary i32 casts when constructing BigIntegers
2022-08-26 19:18:26 +01:00
davidot
791855deab
LibCrypto+LibJS: Remove the create_from methods from BigInteger
...
Instead we just use a specific constructor. With this set of
constructors using curly braces for constructing is highly recommended.
As then it will not do too many implicit conversions which could lead to
unexpected loss of data or calling the much slower double constructor.
Also to ensure we don't feed (Un)SignedBigInteger infinities we throw
RangeError earlier for Durations.
2022-08-26 19:18:26 +01:00
Linus Groh
36225c0ae7
LibJS: Allow undefined for calendar in MaybeFormatCalendarAnnotation
...
This is an editorial change in the Temporal spec.
Now that this is spec'd as either an Object or undefined, we can change
the parameter type from arbitrary JS::Value to JS::Object*.
See: cdfcffd
2022-08-25 23:41:09 +01:00
Linus Groh
741cc08221
LibJS: Use fully spec'd algorithm for ToISOWeekOfYear
...
This is an editorial change in the Temporal spec.
See: 33b62a3
2022-08-25 23:41:09 +01:00
Linus Groh
b438839fcc
LibJS: Reject ambiguous time string even with a calendar
...
This is a normative change in the Temporal spec.
See: 5e2afb9
2022-08-25 23:41:09 +01:00
Linus Groh
2cf5f5c278
LibJS: Remove unused nonterminals from the ISO8601 parser
...
This is an editorial change in the Temporal spec.
See: fe9ef00
2022-08-25 23:41:09 +01:00