Skip to content

Tags: kjd/idna

Tags

v3.18

Toggle v3.18's commit message
v3.18

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

v3.17

Toggle v3.17's commit message
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

Toggle v3.16's commit message
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

Toggle v3.15's commit message
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

Toggle v3.14's commit message
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

Toggle v3.13's commit message
v3.13

- Correct classification error for codepoint U+A7F1

v3.12

Toggle v3.12's commit message
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

Toggle v3.11's commit message
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

Toggle v3.10's commit message
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

Toggle v3.9's commit message
v3.9

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