[JSC][Temporal] Remove Temporal.Calendar object and update JS layer to Stage 4 spec
b35d67a
Temporal's Stage 3 design exposed Temporal.Calendar as a first-class JS constructor; Stage 4 dropped it in favor of embedded string calendar IDs. JSC goes further and replaces strings with a compact CalendarID integer enum, dispatching ICU calendar math through CalendarICUBridge at compile time. This integer now flows through every Temporal type boundary — parsers, constructors, with() methods, arithmetic operations — making conversion and validation at each boundary security-relevant.
Source/JavaScriptCore/runtime/TemporalCalendar.h
- class TemporalCalendar final : public JSNonFinalObject {
- String m_calendarId;
+ enum class CalendarID : uint8_t { ISO8601, Gregory, Japanese, /* ... */ };
The commit simultaneously fixes several spec-compliance bugs: PlainYearMonth rejects bare YYYY-MM without calendar annotation, PlainDateTime defaults missing time fields to 0 instead of undefined, PlainMonthDay.prototype.with() throws TypeError for unrecognised fields, PlainTime constructor rejects NaN.
Significance
Sweeping refactor that touches every calendar-aware Temporal type at its constructor, parser, and prototype boundary, with multiple simultaneous spec-compliance fixes signaling the previous code had latent incorrect behaviors.
Audit directions
Aaa Aaaaaaaaaaaa Aaaaaaa Aaaa Aaa Aaaaa Aaaaaaa Aaaaa Aaaaaaaa Aaaaaaaaaaa Aaa Aaaaaa a Aaaaa Aaaaaaa Aaa Aaaaaaaaaaaaaa Aaaaaaaaaaa Aaaaaaaa Aaaaa Aaaaaa Aaaaaaaa Aaa Aaaaaaaa Aaaaaa Aaa Aaaaaaa Aa Aaaaaaaaaaaa Aaaaaaaaaa Aaa Aaaaaaaaa Aaaaaaaaa Aaaa Aaaaaaaaaaaaaaaaaaaa Aaa Aaaaaaaaaaaaaaa Aaaaa Aaa Aaaaaaaaaa Aaa Aaa Aaaa Aaaaaaaa Aaaaaaa Aaaaaaa Aaa Aaaa Aaaaaaa Aaaaaaaa Aaaaaaaaaa Aaaaaa Aaaaaaaaaaa Aaaaaaaaaaaaa Aaaaaaaaaa Aaa Aaaaaaa Aa Aaaaaaaaa Aaaaaaaaaaaa Aa Aa Aaaaaaaaaaaaaaaaaaaaaaaaaaaaa Aaaaaaaaa Aaaaaaaa Aaaaaaaaaaaaa Aaa Aaaaaaaa Aaaaaaa Aaaa Aaaaaa Aa a a Aaaaa Aaaaaaa Aaaaaaa Aaaa Aaaa Aaaaaaaaaa Aaaaaaaaa Aaaaa Aaaaaaa a Aaaaaaaaa Aaaaaaaa Aaaa Aa Aaa Aaa Aaaaaa Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Aaa Aaaaaa Aaaaaaaaa Aaa Aaaaaaaaaaaa Aaaaaa a Aaaaa Aaaaaaaaaaa Aaaa Aaaaaaaaaaaaaaaaaaaaaaaaaa Aaa Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
🔒Integer enum dispatch and new validation paths across every Temporal constructor — audit directions for the calendar boundary transitions are included.
Subscribe to read more