icu_kit 0.2.0
icu_kit: ^0.2.0 copied to clipboard
Internationalization for Flutter and Dart on Unicode's ICU4X. Numbers, dates, plurals, lists, collation, segmentation, bidi, IDNA — same output on every platform, including web.
Changelog #
0.2.0 #
The number pipeline gains the full ECMA-402 formatting surface.
- Engine updated — web: re-run
flutter pub run icu_kit:setup --force web(native updates itself) - Added the complete ECMA-402 digit surface to
format()— minimum/maximum fraction and integer digits, plus minimum/maximum significant digits — on all three engines. - Added
IcuCompactFormatfor compact notation (1.2M) on all three engines. - Added
signDisplay,roundingMode,roundingIncrement, andtrailingZeroDisplayacross number, currency, percent, and unit formatting. - Added
currencyDisplay: "code"and explicituseGroupingcontrol to the currency, percent, and unit facades. - Added
IcuPluralRules.categoryOfDecimalfor operand-exact plural selection (trailing-zero aware).
Commits since v0.1.0 (25)
- f04e861 stamp: asset hashes for v0.2.0
- 33bef7a release: v0.2.0
- 3a5a6c2 chore: promote dev to prod (0.2.0) (#11)
- 1d7e705 fix: harden the ECMA-402 number surface against three review-flagged defects
- e987b0c test: bump the chrome contract-guard module-class count to 81
- a5c4ff2 refactor: drop the redundant toDecimalFfi bridge — relative-time uses the shared shapedDecimalFfi
- 9e5a863 chore: format the 0.2.0 number-surface files
- 31e0c1e docs(changelog): add the mandatory web re-fetch action bullet for the engine bump
- 24bf817 test: regenerate browser-engine surface snapshot + count (81) for the new number classes
- 07d97f8 Merge branch 'prod' into dev
- 92f755d chore: bump pinned versions (#10)
- 15377a8 docs: document the 0.2.0 number surface — compact, digit/rounding/sign, categoryOfDecimal
- 0703d0d docs(changelog): revert the 0.1.0 API-bullet edit; add 0.2.0 for the ECMA-402 number surface
- e3e23ad chore: re-stamp gitignore — template adds pubspec.lock.floorbak (interrupted analyze-floor snapshot)
- 55ef75f test: prove IcuGroupingStrategy.min2 on the browserIntl engine
- f4cf3e7 fix(number): browser-Intl roundingIncrement parity + audit polish
- feeddd7 chore: bump vendor to the tracked compact binding regen
- 69edffe docs: record the ECMA-402 knob patches in the capability + patch ledgers
- dae6959 feat(number): IcuCompactFormat — ECMA-402 compact notation on all 3 engines
- 9cfdf47 feat(number): signDisplay, roundingMode, roundingIncrement, trailingZeroDisplay
- 50388f5 feat: currencyDisplay:code + useGrouping on percent/currency/unit (all 3 engines)
- ebc86ab feat(number): significant digits — completes ECMA-402 digit shaping
- 85750f8 feat(number): ECMA-402 digit shaping on format() — fraction + integer
- a585181 feat(plural): add categoryOfDecimal for operand-exact plural selection
- e122ad6 chore: refresh lockfiles (#9)
0.1.0 #
First release — full ECMA-402 / Unicode internationalization for Dart and Flutter on all six platforms.
- API: one Dart API for number, currency, percent, and unit formatting (as strings or typed
formatToPartsparts); plural rules; dates and times across 17 calendars; time zones; relative time; lists; collation; display names; segmentation; case mapping; normalization; bidi; Unicode properties; exemplar characters; and IDNA. No Flutter dependency. - Engines: native via dart:ffi (the build hook compiles icu_capi from the vendored ICU4X source); web via a bundled WebAssembly build of that engine (19 MB, or a 2.1 MB lean variant, 0.6 MB gzipped, via
dart run icu_kit:setup --lean); or the browser's built-inIntlwith no ICU4X download (IcuKit.init(webEngine: WebEngine.browserIntl)). - Data: CLDR ships bundled, or loads lazily per-locale (
bundleCldrData: false+IcuData.lazy) for a lean binary.slicecuts per-locale data by facade family (68 KB to 5.6 MB). One binary serves bundled and lazy data without a flag — seeexample_lean/. - Vendoring: ICU4X 2.2.0 as a fork submodule carrying icu_kit's patches on a named branch.
Commits since initial (27)
- c49d020 stamp: asset hashes for v0.1.0
- 0b868fc release: v0.1.0
- c4bcde0 release: promote dev to prod, cut 0.1.0 stable (#8)
- 2ad8826 fix(build): explicit .exe on llvm-ar for Windows-host Android cross-compile
- 59ba7fa docs: correct SDK constraint in analysis_options comment (3.10 -> 3.11)
- 6a8bee7 fix(pubspec): distinct 5th topic — icu replaces internationalization
- 359ad27 fix(lint): keep pana's static-analysis score clean on generated bindings
- 8b68aa8 fix(deploy): correct BW_PREFIX for icu_kit secrets (was cellar)
- a6d60f4 docs: drop the misleading '~19 MB' from the format-nothing aside (#7)
- b76cd96 fix(ci): absolute output path in compile_rust.sh + a full PR guard
- 818824e fix(ci): android cross-compile + wasm dart in the release matrix
- 152382d feat: formatToParts — ECMA-402 typed part output across all number facades (#6)
- 7e7e790 feat: browser-Intl web engine — zero-download i18n via IcuKit.init(webEngine:) (#5)
- 5c8b758 chore: refresh lockfiles (#4)
- e63e659 chore: bump Flutter SDK (#3)
- f1fa32a ci: bump dorny/paths-filter from 4.0.1 to 4.0.2 in the actions group across 1 directory (#1)
- 850c474 fix: run build.sh through the shell on Windows — bare bash resolves to WSL
- 4896b20 fix: resolve every full-test failure from run 29179441173
- d1647f3 fix: independent-audit findings — dead free-disk flag, lean-surface CI filters, cargo-input dep tracking, jq json_get, size-claims gate over every surface, CI/CD architecture + release runbook docs
- 9f97157 docs: cite doc sections by topic, not number — section refs rot on renumber
- 247f7dd fix: base tag reads from build.json — no duplicated icu@ pin to lie after a bump
- a101438 ci: pin binaryen like the family — versions.env sha256s, fetch_verified gate, four-mode upgrade radar, pinned-only wasm-opt
- c45c8da docs: versions.env carries the family pin contract — what tracks latest, who bumps, what is deliberately absent
- 1577af8 ci: align the vendored make-target's whuppi/ci capability refs to v2.0.5
- 9f51416 ci: cargo-test the vendored fork — test-rust target + path-filtered Rust job, matching the family rebase-safety harness
- 5cbc863 ci: align with the family reference — 16 KB APK alignment gate, drop sha-pin boilerplate the pana-only pin never had
- de860dd feat: icu_kit — ECMA-402 internationalization for Dart and Flutter via ICU4X