unstale

pypi / yarl

yarl

What changed in yarl 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-21.

7 breaking1 new APIs and options1 performance3 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.1 on npm

yarl 112 changes

Breaking changes 7

  • The pure Python quoter now rejects non-ASCII safe and protected characters when created, matching the C extension.

    1.25.1release notes

  • C and pure Python quoting implementations now reject percent signs in safe or protected when requoting, and spaces in safe or protected for query strings, keeping their behavior consistent.

    1.25.1release notes

  • The URL constructor and builder APIs now reject Unicode default-ignorable and format code points in hosts when IDNA normalization could change the host.

    1.24.5release notes

  • URL.build and URL.with_host now reject hosts that expand to /, ? or # under IDNA normalization.

    1.24.5release notes

  • When validate_host=True, IPv6 zone IDs now reject ASCII control characters and the empty string.

    1.24.5release notes

  • URL-building APIs now percent-encode a scheme-shaped leading colon in a relative path so its serialized form cannot be parsed as an absolute or executable-scheme URL.

    1.24.5release notes

  • Host validation now rejects Unicode percent characters that NFKC-normalize to a literal percent sign.

    1.24.5release notes

New APIs and options 1

  • Added a faster replacement for urllib.parse.parse_qsl with keep_blank_values=True that also accepts max_fields and encoding.

    1.25.1release notes

Performance 1

  • Improved C and pure Python unquoter performance, especially for long strings and strings with many percent-encoded characters.

    1.25.1release notes

Fixes and other changes 3

  • Fixed query parsing to stop returning empty fields and preserve invalid percent-encoded UTF-8; behavior again matches urllib.parse.parse_qsl. Related query methods also no longer double encode those escapes.

    1.25.1release notes

  • The Cython quoting backend now drops lone surrogates consistently with the pure-Python backend and preserves percent escapes when a surrogate falls within one.

    1.24.5release notes

  • IPv6 Zone ID URLs now expose the decoded % separator in host instead of %25.

    1.24.5release notes