Changes for version 0.04 - 2026-03-04
- replace CaseFolding.txt (--cf) with UnicodeData.txt (--ud) for correct case mappings. CaseFolding.txt provides case folding (normalization for comparison), not case mapping (towlower/towupper).
- add --bsearch-both generator with uint8_t index arrays
- add --table generator (musl-new style)
- fix lower param convention: lower=1 means towlower, lower=0 means towupper
- fix towupper(DZ) bug: remove spurious reverse pair [0x1F3, 0x1F1]
- fix simulate(): use index-based iteration instead of fragile each
- fix add_lace() clash: demote clashing lace to pair instead of warning
- add upper bound exclusion guard for towupper performance, avoiding full table scans for >1M codepoints above the last cased character
- eliminate separate @lace array: merge 2-member lace entries into @map, simplify simulate() and C gen loop to single-pass iteration
- emit titlecase digraph lace exceptions only into the loop(s) where the digraphs actually land (casemaps vs casemapsl depends on --bits)
- bench: use Unicode 10.0 data to match musl-old, add setlocale
- try more downloaders, like curl or LWP::Simple if wget fails.
Documentation
Generate small case mapping tables
Examples
- examples/Makefile
- examples/bench-bits.c
- examples/bench-bits.sh
- examples/bench.c
- examples/casemap.h
- examples/test-glibc.c
- examples/test-iswalpha.c
- examples/test.c
- examples/towctrans-glibc.c
- examples/towctrans-musl-new.c
- examples/towctrans-musl-old.c
- examples/towctrans-my.c
- examples/update-bench.pl
- examples/wchar-lookup.h