ReviewOS

home-lang/home

Bun parity: finish Intl locale and formatter matrix

#377
Closed chris opened this 10 days ago ·
10 days ago

Focused checkpoint under #66, following #376.

Upstream corpus frontier: js/web/intl/intl.test.ts (position 4172).

Scope:

  • preserve the upstream test unchanged
  • port Intl locale, canonicalization, formatter, segmenter, and supported-values behavior exercised by Bun
  • retain native ICU behavior where available and normalize only observable Bun contracts
  • surface actionable operation/phase/input/cause metadata with composed stacks for Intl failures
  • add permanent regression coverage and validate the contiguous tail plus full build

Parent: #66 Predecessor: #376

10 days ago

Completed and pushed in f9bcfe3 (feat(intl): port locale and native module parity).

Ported logically from the unchanged Bun corpus:

  • js/web/intl/intl.test.ts at position 4172: 11 pass, 20 upstream ICU-version/platform-gated todos, 0 fail, 0 unsupported.
  • js/web/nationalized.test.ts at position 4173: 2 pass, 0 fail, 0 unsupported.
  • node:fs.readFileSync() now accepts file: URL objects and preserves Node-style ERR_INVALID_URL_SCHEME errors for non-file URLs.
  • abort-controller now matches Buns native module identity: CommonJS returns the native AbortController constructor itself, with AbortController, AbortSignal, default, and __esModule exports for CJS/ESM interop.
  • Added permanent native regressions for URL-backed corpus fixture reads and exact require/re-export/dynamic-import identity.

Verification:

  • Focused unchanged corpus: 2 files, 13 pass, 20 todo, 0 fail, 0 unsupported.
  • All eight focused native regressions pass.
  • zig build --cache-dir /private/tmp/home-zig-abi-cache passes.

Cumulative contiguous ledger through position 4173: 514 files, 7,783 pass, 311 todo, 172 allowed-empty, 0 fail, 0 unsupported.

Next frontier: position 4174, js/web/request/request-clone-leak.test.ts. Its isolated stress run produced no failure but exceeded the 300-second checkpoint cap, so it is intentionally not claimed here.

Sign in to comment on this issue.