Parent: #475 Discovered while validating: #569
Problem
new Intl.NumberFormat("ar-EG").format(3) uses ASCII digits in zig-js, while JavaScriptCore resolves the locale default Arabic numbering system and emits Arabic digits. An explicit -u-nu-arab extension works, so digit translation exists; locale default resolution currently falls back to latn unless an option or Unicode extension is present.
This affects NumberFormat text, parts, ranges, resolvedOptions, currencies, units, percent, scientific, and compact notation independently of currency display-name lookup.
Requirements
- Generate the default numbering system and any CLDR numbering-system fallback metadata for every supported locale from the repository-pinned CLDR input.
- Resolve precedence exactly:
numberingSystemoption, supported-u-nu-extension, locale default, then the specified fallback. - Keep generated data immutable and shared safely by realms/threads.
- Preserve exact digit translation and part boundaries for Number and BigInt across text, parts, and ranges.
Acceptance
- Differential controls cover Arabic, Persian, Thai, Indic, and Latin-default locale families, including explicit option/extension overrides.
resolvedOptions().numberingSystemand all NumberFormat sinks agree.- Relevant Intl402, OOM, bounded heap, moving GC, no-GIL, TSan, and full units pass.
Non-goals
- No locale switch, system ICU/JSC dependency, copied output fixture as implementation data, or mutable process-global cache.