unstale

pypi / markdown

markdown

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

1 breaking2 security2 performance1 behavior and defaults7 fixes and other

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

npx @unstale/cli init

@unstale/cli 0.2.2 on npm

markdown 313 changes

Breaking changes 1

  • Python 3.15 is officially supported, and Python 3.10 support is dropped.

    3.11.0release notes

Security 2

  • Attribute names are sanitized so they cannot break out of their tag and inject markup.

    3.11.2release notes

  • Attribute names are sanitized so they cannot break out of their tag and inject markup.

    3.11.2release notes

Performance 2

  • Inline processors resume searching after the previous match, improving performance for repeated inline patterns.

    3.11.0release notes

  • Fixes quadratic-time regex backtracking when a link reference definition has no URL and has many trailing spaces.

    3.11.0release notes

Behavior and default changes 1

  • Enforcement of CommonMark style punctuation rules is reverted for backwards compatibility.

    3.11.2release notes

Fixes and other changes 7

  • Inline HTML attributes containing < or > are no longer rejected.

    3.11.1release notes

  • Emphasis handling was reworked to improve handling of nested emphasis.

    3.11.1release notes

  • Raw HTML comments inside an inline HTML element that closes in the same paragraph no longer split the paragraph.

    3.11.1release notes

  • An unterminated end tag such as </foo no longer causes all remaining content to be dropped.

    3.11.1release notes

  • Removing Abbreviations no longer raises an error.

    3.11.0release notes

  • Fixes excessive regex backtracking when matching inline code blocks.

    3.11.0release notes

  • The extension now honors tags added to Markdown.block_level_elements after the extension is loaded.

    3.11.0release notes