Packages
Transliterates text between scripts, applies normalization and case mappings, and executes arbitrary CLDR transforms.
Current section
Files
Jump to
Current section
Files
unicode_transform
CHANGELOG.md
CHANGELOG.md
# Changelog
## Unicode Transform 1.2.0
This is the changelog for Unicode Transform 1.2.0 released on October 28th, 2026. For older changelogs please consult the release tag on [GitHub](https://github.com/elixir-unicode/unicode_transform/tags)
### Bug Fixes
* Remove fourteen stale `Ethiopic-*` rule files left over from before CLDR renamed them to their BCP-47 identifiers; they shadowed the current reverse-direction rules, so `und-Ethi-t-und-latn-m0-sera` and its siblings resolved to outdated rule sets. See `TRANSFORMS.md` for the current Ethiopic identifiers.
### Enhancements
* Update the bundled transform rules and the conformance test data to CLDR 49. `Han-Latin` gains the Unihan 18 readings, `ug-Latin` moves to the new-style rule format, and `de-ASCII`, `Latin-NumericPinyin` and `blt-fonipa-t-blt` receive upstream set-syntax corrections.
* Require `unicode_set ~> 1.9` (and therefore `unicode ~> 2.2`), which resolves every UCD property value including `@missing` defaults, and raise the Elixir floor to 1.17 to match.
* Update the CI matrix to the latest OTP 27, 28 and 29 patch releases with Elixir 1.20.4 on the lint row, and add a docs warnings-as-errors gate.
## Unicode Transform 1.1.0
This is the changelog for Unicode Transform 1.1.0 released on July 8th, 2026. For older changelogs please consult the release tag on [GitHub](https://github.com/elixir-unicode/unicode_transform/tags)
### Bug Fixes
* The pure-Elixir transform engine (`backend: :elixir`) now conforms to 99.99% of the official CLDR transform test data, up from ~81%. Around twenty root-cause fixes across the parser, compiler, engine and resolver correct Unicode-script variable names, text-boundary and `^`/`$` anchor matching, BCP-47 `m0` keyword aliases, `''` apostrophe and backslash escaping, greedy (possessive) matching, backreferences to context groups, ASCII rule operators (`> < <>`), multi-line set definitions, filtered transforms, and CRLF test data.
* Correct the `Unicode.Transform.Builtin.apply/2` NFD documentation example, which showed a precomposed result where NFD produces a decomposed one.
* `Georgian-Latin-BGN` (`ka-Latn-t-ka-m0-bgn-2009`) now emits U+02BC to match CLDR's golden test data, working around an upstream CLDR inconsistency where the rule file itself ships U+2019.
### Enhancements
* Added a strict CLDR transform conformance suite (`mix test --only cldr_conformance`) driven by ~297k vendored CLDR test cases — one test per transform, red until the engine is fully conformant.
* Confirm the library compiles cleanly under Elixir 1.20 with `--warnings-as-errors`, and add Credo strict linting, a 90% test-coverage gate, a formatting pre-commit hook, and OTP/Elixir-scoped CI cache keys.
## Unicode Transform 1.0.0
This is the changelog for Unicode Transform 1.0.0 released on March 17th, 2026. For older changelogs please consult the release tag on [GitHub](https://github.com/elixir-unicode/unicode_transform/tags)
### Breaking Changes
* This release is a complete re-implementation of the [CLDR Transform](https://unicode.org/reports/tr35/tr35-general.html#Transforms) specification. It implements the full suite of transformations. See `Cldr.Transform.transform/2` for the primary public API.
* The library has now moved on from a proof-of-concept that code-generated one transform module at compile time to a full runtime implementation of the Unicode CLDR Transform specification with currently 394 transforms, a unified API, optional ICU NIF backend, OTP supervision, caching, CI, and comprehensive property-based testing.
* The transformations are those available in CLDR version 48 which is the current version as of March 17th, 2026.
* Consult the [README](README.md) for information on how to install and use the library.
* See [TRANSFORMS](TRANSFORMS.md) for a complete listing of all available transforms.
## Unicode Transform 0.4.0
This is the changelog for Unicode Transform 0.4.0 released on 8th December, 2025. For older changelogs please consult the release tag on [GitHub](https://github.com/elixir-unicode/unicode_transform/tags)
### Bug Fixes
* Fix rules generator to ensure that a transform to an ASCII space is not trimmed (thereby causing an empty string). Thanks to @arcanemachine for the report. Closes #2.
### Enhancements
* Updates to CLDR 47 Transform rules (most of which remain unimplemented in this release)
## Unicode Transform 0.3.0
This is the changelog for Unicode Transform 0.3.0 released on April 18th, 2022. For older changelogs please consult the release tag on [GitHub](https://github.com/elixir-unicode/unicode_transform/tags)
### Enhancements
* Generate some additional simple transforms and remove compiler warnings.
## Unicode Transform 0.2.0
This is the changelog for Unicode Transform 0.2.0 released on September 14th, 2021. For older changelogs please consult the release tag on [GitHub](https://github.com/elixir-unicode/unicode_transform/tags)
### Enhancements
* Update to use [Unicode 14](https://unicode.org/versions/Unicode14.0.0) release data.
## Unicode Transform 0.1.0
This is the changelog for Unicode Transform 0.1.0 released on March 29th, 2021. For older changelogs please consult the release tag on [GitHub](https://github.com/elixir-unicode/unicode_transform/tags)
### Enhancements
* Initial release. Supports the transform of Latin-1 to ASCII. See `Unicode.Transform.LatinAscii.transform/1`.