diff --git a/CHANGELOG.md b/CHANGELOG.md index 040ff138..c411d126 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,18 +1,95 @@ # Change Log -## Unreleased - -* ✨ Add `--enable-tables` to the CLI for file, standard input and interactive parsing in [#422](https://github.com/executablebooks/markdown-it-py/pull/422) -* šŸ› Fix CLI interactive mode joining input lines with an extra newline, which split every line into its own paragraph and broke hard line breaks, in [#172](https://github.com/executablebooks/markdown-it-py/issues/172) -* šŸ› Fix trimming and splitting with the Python whitespace set instead of the CommonMark one, which dropped U+001C–U+001F and U+0085 from paragraphs, headings, table cells and fence info strings and let distinct reference labels resolve each other, in [#418](https://github.com/executablebooks/markdown-it-py/pull/418), thanks to [@Nexory](https://github.com/Nexory) -* šŸ“š Document the Python renderer constructor contract. -* šŸ”§ Drop the optional dependency on the `commonmark` package and its benchmark, since the upstream package is unmaintained, in [#401](https://github.com/executablebooks/markdown-it-py/pull/401) +## 4.3.0 - 2026-11-10 + +This release fixes two quadratic-time parsing paths that let crafted input stall rendering for minutes (security), +aligns several parsing rules with CommonMark 0.31.2 and markdown-it 15.0.x, +turns parser rules that never advance into a `RuntimeError` instead of an infinite loop, +makes rendering linear on PyPy and free-threaded CPython, and adds support for Python 3.14. +Python 3.10 is still supported. +If you write plugins or render rules, or edit `SyntaxTreeNode` trees, please read the upgrade notes at the end. + +### šŸ”’ Security + +* šŸ‘Œ Fix quadratic-time inline parsing of long runs of characters that start an inline rule without completing one (such as `&`, `<`, `~` or incomplete entities), which let a few hundred kilobytes of input stall rendering for seconds to minutes, in [#423](https://github.com/executablebooks/markdown-it-py/pull/423), thanks to [@hdimer](https://github.com/hdimer) ([#411](https://github.com/executablebooks/markdown-it-py/pull/411)) +* šŸ‘Œ Reject unterminated inline HTML (`