Current section
Files
Jump to
Current section
Files
iconvex_specs
ICU_LMBCS_DIFFERENTIAL.md
ICU_LMBCS_DIFFERENTIAL.md
# ICU 78.3 LMBCS differential
Generated by `tools/verify_icu_lmbcs_variants.exs` from the pinned file containing all 1,112,064 Unicode scalars.
Each native encoder is byte-identical to one ICU conversion call; each native discard decoder is byte-identical to ICU UTF-32BE output after both skip U+FFFE/U+FFFF sentinels.
The runner also differentially checks invalid groups, explicit and implicit truncated prefixes, malformed MBCS pairs, and Unicode-group sentinel boundaries.
- Independent oracle: **uconv v2.1 ICU 78.3** (`/opt/homebrew/Cellar/icu4c@78/78.3/bin/uconv`)
- ICU input block: **5,000,000 bytes** (one conversion callback)
- Unicode scalars encoded: **1,112,064/1,112,064 per profile**
- Unicode scalars decoded after sentinel discard: **1,112,062/1,112,062 per profile**
- Profiles passed: **12/12**
- Mismatches: **0**
| Profile | Encoded bytes | Encoded SHA-256 | Decoded scalars | Decoded UTF-32BE SHA-256 |
|---|---:|---|---:|---|
| `LMBCS-1` | 6480823 | `16908926c8667f1fc3b82f31698a4ea746a4a9dfd9c9bb8fffcd66010f4eac13` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-2` | 6480803 | `e52d9d79c4c7a9b5e415869ef11046f0072335bc9ac4ce21ee6cfb023fa49861` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-3` | 6480816 | `ce9396f83c8fcd6aa5692acad9c432a7bcaaaed8d155f71372582fa16bba5475` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-4` | 6480809 | `ead2cc9f1f427fad5b2aba774c17d10a5e5275b9722b5496d083f9b97e391fae` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-5` | 6480774 | `d95aecd8027776fbe7b4f39f3af8f9d0622fb10fa0ac453a62826f4437b9eb28` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-6` | 6480817 | `b97facc9c56304b6efcc3487a0b58b7d0e65e6180d356e6832c5c052fd3eebee` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-8` | 6480866 | `27f8cd05a72b72fee914def4eae24589baf7d4da60efdc93d99aa00e3528a422` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-11` | 6480774 | `9317ca095504f41bf6be58ed65ec4717067cd4c406f01c3b54d7a9e0325d3527` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-16` | 6478603 | `5ada4bbba306c660914fb6a3deb811462ea07cb331b0a267c1f0f6e7c00e8b26` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-17` | 6468824 | `cf2fa57272bca6cacb44ff2d312910f31ceaae00bd9f35c2efb89a9b8e10d9ba` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-18` | 6476418 | `812ad25076bf5530a91b0403ba6383fbf88bc24047895d118cf5bbe22058305b` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
| `LMBCS-19` | 6459881 | `8ded5d0636e59bcbbb415cbd24e8e5c3cadc82c41f05c400519d8ce2e85ab397` | 1112062 | `0b35a3bffebd578da5b94b31303bdc692a0b7420dfa60f3955e18abd92fa88f2` |
ICU's `lastConverterIndex` is local to a conversion callback. The verifier therefore overrides `uconv`'s 4,096-byte default block; otherwise callback boundaries can choose a different valid national group for ambiguous characters and do not represent the one-call native API being compared.