Sourced from idna's releases.
v3.19
- Restore the
std3_rulesoption, which had no effect since changes to UTS #46 processing in Unicode 16. Note thatuts46_remap()defaults to enabling STD3 rules, so direct callers will see input containing non-LDH ASCII characters rejected again.- Performance improvements to UTS #46 mapping, particularly for ASCII-only domains.
- Test on free-threaded CPython with the GIL disabled and document thread safety.
- Expose the Unicode version of the generated tables as
idna.unicode_version, and show it inidna --version.- Add
code,text,codepointandpositionattributes toIDNAErrorso that the failed rule and the offending character can be identified without parsing the exception message.- The deprecated
transitionalargument toencode()anduts46_remap()is now completely ignored, and gives a deprecation warning for the latter.- Reject A-labels that are not the canonical Punycode encoding of their U-label.
- Fix CONTEXTJ violations raising
IDNAErrorinstead ofInvalidCodepointContext.- Consistently raise
IDNAErrorfor empty labels and non-ASCII bytes passed to label helper functions and the incremental codec.- Add property-based tests, extended fuzzing targets, coverage measurement, and CI checks that the data tables match the generator output.
- Various code quality and tooling improvements.
Thanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for contributions to this release.
Sourced from idna's changelog.
3.19 (2026-08-18)
- Restore the
std3_rulesoption, which had no effect since changes to UTS #46 processing in Unicode 16. Note thatuts46_remap()defaults to enabling STD3 rules, so direct callers will see input containing non-LDH ASCII characters rejected again.- Performance improvements to UTS #46 mapping, particularly for ASCII-only domains.
- Test on free-threaded CPython with the GIL disabled and document thread safety.
- Expose the Unicode version of the generated tables as
idna.unicode_version, and show it inidna --version.- Add
code,text,codepointandpositionattributes toIDNAErrorso that the failed rule and the offending character can be identified without parsing the exception message.- The deprecated
transitionalargument toencode()anduts46_remap()is now completely ignored, and gives a deprecation warning for the latter.- Reject A-labels that are not the canonical Punycode encoding of their U-label.
- Fix CONTEXTJ violations raising
IDNAErrorinstead ofInvalidCodepointContext.- Consistently raise
IDNAErrorfor empty labels and non-ASCII bytes passed to label helper functions and the incremental codec.- Add property-based tests, extended fuzzing targets, coverage measurement, and CI checks that the data tables match the generator output.
- Various code quality and tooling improvements.
Thanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for contributions to this release.
03a9a11
Release 3.192d2a7ef
Pre-release 3.19rc05cce130
Merge pull request #268 from
kjd/fix-std3-regex-alert3914b75
Split the STD3 disallowed-character range so uppercase is explicitce9fd98
Merge pull request #267 from
kjd/housekeeping809240c
Fail CI when the license copyright year is behind the current yeard9e16c5
Consolidate test fixtures, prune stale gitignore entries, and fix doc
typosef30fee
Remove dead code and pare back superfluous commentsb907913
Tighten the version support and Unicode notes in the README6204cbe
Ignore local build artifacts and stop packaging stray tooling
config