Revision history for the Perl package Unicode::Towctrans.
0.05 2026-03-18
Finished optimizations, cannot think of any more.
- add --if-tree code generator mode (for --bsearch and
--bsearch-both), with dedicated tests. Fast, but big.
- add --unroll tunable for generated loops and optimize linear PAIRL
handling for unrolled code paths. Default to 5.
- fix --bsearch-both generation with custom --bits layouts.
- resolve latest Unicode version from the net. requires now LWP::UserAgent.
- add -n/--no-network mode to resolve Unicode version from perl UCD
without network access.
- avoid duplicate UnicodeData.txt downloads in generator workflow.
- update examples/test to use the current generated version.
- improve test and CI coverage: move extra tests to xt/, add xtest,
add examples and pre-commit checks in CI, and harden c-asan test.
- tested ok with safeclib.
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.
0.03 2026-02-22
- add --musl and --safec generators
- extend benchmark to error counting
- fix bench for glibc size
- format for indent 4
- document tunables, change MIN_EXCL to 2500 (matching musl-old)
0.02 2026-02-19
- massive performance and size improvements
- added benchmarks and iswalpha tests.
- add conditional turkish locale check: add -DHAVE_LOCALE_TR
if there's a chance the user will be on a turkish or azeri locale
for the turkish i rule.
- added pre-commit checks
0.01 2026-02-17
- first version; created from scratch