Skip to content

Releases: kjd/idna

v3.18

02 Jun 14:34

Choose a tag to compare

- When decoding a domain, add a `display` argument that will pass
  through invalid labels rather than raising an exception.

v3.17

28 May 14:33

Choose a tag to compare

- 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

22 May 00:16

Choose a tag to compare

- 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

12 May 22:46

Choose a tag to compare

- 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

10 May 20:32

Choose a tag to compare

- 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

22 Apr 16:43

Choose a tag to compare

- Correct classification error for codepoint U+A7F1

v3.12

21 Apr 13:33

Choose a tag to compare

- 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

12 Oct 14:55

Choose a tag to compare

- 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

15 Sep 18:08

Choose a tag to compare

- 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

14 Sep 02:58

Choose a tag to compare

- Update to Unicode 16.0.0
- Deprecate setup.cfg in favour of pyproject.toml
- Use ruff for code formatting