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