Parent: #475 Depends on: #528, #563
Goal
Compile each Intl.DateTimeFormat instance's validated locale, calendar, numbering-system, hour-cycle, style expansion, and component selection into one immutable formatter-owned native record, so steady consumers do not repeatedly traverse and reinterpret the engine's internal options object.
Current boundary
dtfStoreOptions normalizes constructor input into an internal \x00opts object, but dtfBuildParts performs generic property reads for every component on every format, formatToParts, formatRange, and formatRangeToParts call. It also re-expands date/time styles and re-derives hour behavior on the steady path.
This issue owns resolved-state compilation and lookup only. Direct text emission, locale pattern coverage, range interval data, and numeric scratch allocation are separate slices so their effects remain independently measurable.
Scope
- Add frozen construction and steady-state controls spanning default/component/style, locale/calendar/numbering-system/hour-cycle, Temporal input, parts, and range consumers.
- Store one immutable native resolved record with explicit GC ownership and relocation/destruction handling.
- Compile style expansion and invariant formatter decisions once, while preserving the per-input Temporal component restrictions required by ECMA-402.
- Make all DateTimeFormat consumers read the native record without generic internal property traversal.
- Preserve
resolvedOptions, legacy chaining,Date.prototype.toLocale*, subclassing, Proxy/getter order at construction, OOM failure atomicity, and shared-realm read-only use.
No-workaround rules
- No service-name/source/workload recognition, hidden preformatting, unbounded process-global cache, ICU/system-JSC dependency, English-only bypass, skipped observable option access, or duplicated formatter algorithm.
- No raw pointers into movable GC storage; every borrowed slice in the record needs a stable ownership ruling.
- No weakening locking, GC barriers, OOM behavior, or Temporal/date semantics to improve a benchmark.
Acceptance
- Benchmark boundary records deterministic construction and steady text/parts/range controls with exact zig-js/JSC checksums.
- Steady consumers perform zero generic reads from the internal normalized options object.
- The resolved record has explicit moving-GC, destruction, OOM, bounded-heap, and no-GIL ownership tests.
- Focused DateTimeFormat and Temporal test262 subtrees, full Intl402, full unit, TSan, no-GIL, and movement gates pass.
- Exact-parent evidence reports wall time, retired instructions where available, backing allocations/bytes, and construction non-regression.