Parent: #475 Related: #460, #473
Problem
A public Intl.DisplayNames differential against the host JavaScriptCore found that current generated/owned data and composition rules are not exact outside the already-covered English lookup subset:
new Intl.DisplayNames("en", {type:"language"}).of("zh-Hant")returnsTraditional Chinese; JSC returnsChinese, Traditional.- English short/standard language composition uses long region wording (
English (United States)versus JSCEnglish (US)). - Non-English resolved locales currently fall back to codes even for known currencies: French
USD/EUR/JPYreturns the codes rather than localized names.
The existing structural Intl402 suite remains green, so this needs an explicit data/algorithm child rather than being hidden inside a performance change.
Requirements
- Generate locale-indexed DisplayNames language, region, script, currency, calendar, and date-time-field data from pinned owned CLDR inputs; edit the generator, never generated tables by hand.
- Implement exact dialect/standard and long/short/narrow pattern composition, aliases, canonicalization, fallback, and missing-data behavior.
- Preserve ECMA-402 validation and observable coercion order.
- Keep tables immutable, bounded, shared safely across realms, and independent of ICU/system JavaScriptCore.
- Add exact public differential controls across representative locales/scripts/regions/currencies and all supported types/styles.
Acceptance
- Frozen public controls match system JSC exactly for text and
resolvedOptions(), including the repros above. - Full DisplayNames + Intl402 test262 has no regressions.
- Generator determinism, pinned-input provenance, bounded table footprint, OOM, moving-GC, no-GIL, TSan, and full units pass.
- Any unsupported locale/data family remains explicitly visible rather than silently reported as complete.