Packages

Public-specification codecs for Iconvex

Current section

Files

Jump to
iconvex_specs ALGORITHMIC_DIFFERENTIAL.md
Raw

ALGORITHMIC_DIFFERENTIAL.md

# Algorithmic Codec Differential
Generated by `tools/exhaustive_algorithmic_differential.exs`. Every one of the 1,112,064 Unicode scalar values is encoded and decoded in a single stateful stream. For ICU-supported codecs, ICU's bytes are decoded by Iconvex and Iconvex's bytes are decoded by ICU. BOCU-1, CESU-8, and modified IMAP UTF-7 also require byte-identical encoder output; SCSU permits multiple conformant compressed forms. Punycode's full scalar-stream row is a normative RFC round trip; its independent pinned CPython differential is exercised by the focused conformance suite. UTF-5's row is a source-exact draft round trip over the same complete scalar stream.
- Unicode scalars: **1,112,064/1,112,064**
- Corpus: `test/fixtures/all-unicode-scalars.utf32be`
- Corpus bytes: **4448256**
- Corpus SHA-256: `d037f6200ae8845906b4372a8b3fcd39730e3a61c4af0e354823010e6f93be54`
- Runner SHA-256: `acf54c14868cd77f425a3ecb9ce9abf45db20c05e1759c62cdba76b65b3eba78`
- Runtime SHA-256: `30f5c209155484fe0ff79fe250a07998efcea13dbee6e02d5f70afaad5fe571d`
- Codecs passed: **10/10**
- Mismatches: **0**
- Explicit non-row disposition: **UTF-6 excluded** because its source draft's 63-byte hostname-label limit means the monolithic 1,112,064-scalar corpus is not a valid UTF-6 value.
- UTF-6 runtime SHA-256: `82ac0b0e4f914bac3bc1e98447f6c9b86b3f0f09eaea9dd5fdcd6d3d1d536a45`; exhaustive alternative: `test/utf6_test.exs` checks every Unicode scalar in a reverse-legal hostname context and enforces the 63-byte label limit.
- Independent oracle: **uconv v2.1 ICU 78.3** (`/opt/homebrew/Cellar/icu4c@78/78.3/bin/uconv`)
| Codec | Result | Iconvex bytes | Iconvex SHA-256 | Oracle bytes | Encoder equality | ms |
|---|---:|---:|---|---:|---|---:|
| `BOCU-1` | PASS | 1152318 | `272b1ae9a54878ddd5615f618c855847545bb2a100a76476f0689ac4f9de5ce0` | 1152318 | true | 237 |
| `CESU-8` | PASS | 6479744 | `f280c24a03986ac98757eb4d04290780c9bf3272758c9b97518579a2ce722599` | 6479744 | true | 483 |
| `UTF-7-IMAP` | PASS | 5761554 | `0e3e5d9625db5eafcc4bc8905fac25942a9baac213453fc6460e2bad062a49c5` | 5761554 | true | 159 |
| `SCSU` | PASS | 1179688 | `b83b563e85bf93e00ea1e8724f1e563e70ece304468d6b961efcb02f4665011e` | 4225150 | N/A (non-unique) | 205 |
| `JAVA-MODIFIED-UTF-8` | PASS | 6479745 | `300f7ab5834d2c8d885e095eaab9d4675c37fe3e3b36c69e55d7edff34c9be3a` | 0 | N/A (normative specification) | 993 |
| `PUNYCODE` | PASS | 4474444 | `6372b8518766a6aeefe7aaa42ba578ccca295605d88c50285c00fea614efd6b9` | 0 | N/A (normative specification) | 965 |
| `UTF-EBCDIC` | PASS | 5282656 | `ec1f7df0046f7c6e8fed3ca087c17ad5734ce2a95e61591afdc140ec008d9474` | 0 | N/A (normative specification) | 1435 |
| `UTF-1` | PASS | 5081838 | `5114b5ad9b5215b2b4b384f54db443bb5a19910850575c1d44d91ec1ef409eb7` | 0 | N/A (normative specification) | 175 |
| `UTF-5` | PASS | 5558000 | `af4168758fe965816194aa1919c721f85c84ddbf571d133123ba41693b64e406` | 0 | N/A (normative specification) | 721 |
| `X-USER-DEFINED` | PASS | 256 | `40aff2e9d2d8922e47afd4648e6967497158785fbd1da870e7110266bf944880` | 0 | complete 256-byte repertoire | 0 |