Releases: kjd/idna
Releases · kjd/idna
v3.18
v3.17
- Substantial 75% reduction in memory usage through new data structures and some optimization in processing speed. - Added a general 1024-character input length cap to the public validation, conversion, and codec entry points. This is well above any legitimate domain or label and guards against pathological inputs.
v3.16
- Add a command-line interface (`python -m idna`, also available as the `idna` script). Encodes or decodes one or more domains supplied as arguments or on standard input, with options to select A-label or U-label output and control error handling. - Raise the minimum supported Python version to 3.9 - Various code quality improvements
v3.15
- Enforce DNS-length cap on individual labels early in `check_label`, short-circuiting contextual-rule processing for oversized input while staying compatible with UTS 46 usage. - Tidy core helpers: hoist bidi category sets to module-level frozensets (avoiding per-codepoint list construction), simplify length checks, and reuse the shared `_unicode_dots_re` from `idna.core` in the codec module. - Use `raise ... from err` for proper exception chaining and switch internal string formatting to f-strings. - Allow `flit_core` 4.x in the build backend. - Expand the ruff lint set (flake8-bugbear, flake8-simplify, pyupgrade, perflint) and apply the surfaced fixes; pin lint CI to Python 3.14. - Add Dependabot configuration for GitHub Actions. - Convert README and HISTORY from reStructuredText to Markdown. - Reference CVE-2026-45409 for the 3.14 advisory in place of the initial GHSA identifier.
v3.14
- Removed opportunity to process long inputs into quadratic time by rejecting oversize inputs up-front. Closes a bypass of the CVE-2024-3651 mitigation. [GHSA-65pc-fj4g-8rjx]
v3.13
- Correct classification error for codepoint U+A7F1
v3.12
- Update to Unicode 17.0.0. - Issue a deprecation warning for the transitional argument. - Added lazy-loading to provide some performance improvements. - Removed vestiges of code related to Python 2 support, including segmentation of data structures specific to Jython.
v3.11
- Update to Unicode 16.0.0, including significant changes to UTS46 processing. As a result of Unicode ending support for it, transitional processing no longer has an effect and returns the same result. - Add support for Python 3.14, lowest supported version is Python 3.8. - Various updates to packaging, including PEP 740 support.
v3.10
- Reverted to Unicode 15.1.0 data. Unicode 16 has some significant changes to UTS46 processing that will require more work to properly implement.
v3.9
- Update to Unicode 16.0.0 - Deprecate setup.cfg in favour of pyproject.toml - Use ruff for code formatting