Refresh bundled Unicode confusables data to UTS #39 v17.0.0 (2025-07-22) - #21
Open
codeboxbot wants to merge 1 commit into
Open
Refresh bundled Unicode confusables data to UTS #39 v17.0.0 (2025-07-22)#21codeboxbot wants to merge 1 commit into
codeboxbot wants to merge 1 commit into
Conversation
codeboxbot
force-pushed
the
marvin/unicode-17-data-refresh
branch
from
August 26, 2026 18:18
f674cd7 to
c38b52e
Compare
codeboxbot
force-pushed
the
marvin/unicode-17-data-refresh
branch
from
August 26, 2026 18:30
c38b52e to
39e4d72
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Refreshes the bundled Unicode confusables data from the 2022-08-26 copy (UTS #39 15.0.0) to the current approved 17.0.0 release dated 2025-07-22, regenerates every derived artefact, and adds regression tests that prove the refreshed data is used and that generation is byte-for-byte reproducible.
Addresses #18 (the bundled data — and the README's Unicode reference — were out of date). Not marked as auto-closing so a maintainer can decide.
Behaviour and the public API are unchanged. Multi-codepoint confusable mappings are still skipped exactly as before (that is deliberately left to a separate change for #4).
Data provenance
https://www.unicode.org/Public/security/latest/confusables.txt091c7f82fc39ef208faf8f94d29c244de99254675e09de163160c810d13ef22aNote on the bundled file: the automated contribution path used here cannot transmit the full 745 KB official file, so the committed
generator/source_data/confusables.txtkeeps the official header and every data row's two codepoint columns (source ; target) plus the mapping type, but drops the trailing per-line# ( x → y ) NAMEdescriptive comments. The generator only reads the source/target columns, so the generated artefacts are byte-for-byte identical whether the bundled file is this de-commented copy or the pristine official file — a maintainer can drop the original file straight in and every test still passes. Provenance (URL + original sha256) is recorded both here and in a comment block at the top of the bundled file.Generated-file changes (all regenerated by
generator/main.py)raw_data/char_codes.txt,raw_data/chars.txt— equivalence classes: 1851 → 1915.javascript/src/homoglyph.js,node/index.js— regenerated char maps for the 63 search characters.javascript/tests/js/tests/DataTests.js,node/test/spec/DataTests.js— regenerated data tests.Generator changes (small, behaviour-preserving)
homoglyph.js/index.js/DataTests.jswere not reproducible across runs (they varied withPYTHONHASHSEED). Ordering does not affect behaviour — lookups are membership tests.node/test/spec/DataTests.jswas a hand-maintained copy that had drifted out of sync withnode/index.js; onmasterthe node suite fails 32 specs because of it.main.pynow generates it (via arequire()prelude) alongside the browser copy, sonpm testexercises the shipped data and stays in sync.Tests / verification
generator/tests/test_generator.py(stdlibunittest, run:python3 -m unittest discover -s generator/tests):PYTHONHASHSEED) produce byte-identical output;U+0192(ƒ, newly confusable withfin 17.0.0) appears grouped withf.cd node && npm test): 2213 specs, 0 failures (was 1564 specs / 32 failures onmaster).gradle testwas not run here.Out of scope (called out, not touched)
The README Java quick-start references Maven version
1.2.1whilebuild.gradle/package.jsonare at1.3.0. That pre-existing version-metadata discrepancy is unrelated to the data refresh and is left unchanged.🤖 Generated with Claude Code