|
1 | 1 | # Change Log
|
2 | 2 |
|
| 3 | +## 3.0.0 - 2023-06-03 |
| 4 | + |
| 5 | +⚠️ This release contains some minor breaking changes in the internal API and improvements to the parsing strictness. |
| 6 | + |
| 7 | +**Full Changelog**: <https://github.com/executablebooks/markdown-it-py/compare/v2.2.0...v3.0.0> |
| 8 | + |
| 9 | +### ⬆️ UPGRADE: Drop support for Python 3.7 |
| 10 | + |
| 11 | +Also add testing for Python 3.11 |
| 12 | + |
| 13 | +### ⬆️ UPGRADE: Update from upstream markdown-it `12.2.0` to `13.0.0` |
| 14 | + |
| 15 | +A key change is the addition of a new `Token` type, `text_special`, which is used to represent HTML entities and backslash escaped characters. |
| 16 | +This ensures that (core) typographic transformation rules are not incorrectly applied to these texts. |
| 17 | +The final core rule is now the new `text_join` rule, which joins adjacent `text`/`text_special` tokens, |
| 18 | +and so no `text_special` tokens should be present in the final token stream. |
| 19 | +Any custom typographic rules should be inserted before `text_join`. |
| 20 | + |
| 21 | +A new `linkify` rule has also been added to the inline chain, which will linkify full URLs (e.g. `https://example.com`), |
| 22 | +and fixes collision of emphasis and linkifier (so `http://example.org/foo._bar_-_baz` is now a single link, not emphasized). |
| 23 | +Emails and fuzzy links are not affected by this. |
| 24 | + |
| 25 | +* ♻️ Refactor backslash escape logic, add `text_special` [#276](https://github.com/executablebooks/markdown-it-py/pull/276) |
| 26 | +* ♻️ Parse entities to `text_special` token [#280](https://github.com/executablebooks/markdown-it-py/pull/280) |
| 27 | +* ♻️ Refactor: Add linkifier rule to inline chain for full links [#279](https://github.com/executablebooks/markdown-it-py/pull/279) |
| 28 | +* ‼️ Remove `(p)` => `§` replacement in typographer [#281](https://github.com/executablebooks/markdown-it-py/pull/281) |
| 29 | +* ‼️ Remove unused `silent` arg in `ParserBlock.tokenize` [#284](https://github.com/executablebooks/markdown-it-py/pull/284) |
| 30 | +* 🐛 FIX: numeric character reference passing [#272](https://github.com/executablebooks/markdown-it-py/pull/272) |
| 31 | +* 🐛 Fix: tab preventing paragraph continuation in lists [#274](https://github.com/executablebooks/markdown-it-py/pull/274) |
| 32 | +* 👌 Improve nested emphasis parsing [#273](https://github.com/executablebooks/markdown-it-py/pull/273) |
| 33 | +* 👌 fix possible ReDOS in newline rule [#275](https://github.com/executablebooks/markdown-it-py/pull/275) |
| 34 | +* 👌 Improve performance of `skipSpaces`/`skipChars` [#271](https://github.com/executablebooks/markdown-it-py/pull/271) |
| 35 | +* 👌 Show text of `text_special` in `tree.pretty` [#282](https://github.com/executablebooks/markdown-it-py/pull/282) |
| 36 | + |
| 37 | +### ♻️ REFACTOR: Replace most character code use with strings |
| 38 | + |
| 39 | +The use of `StateBase.srcCharCode` is deprecated (with backward-compatibility), and all core uses are replaced by `StateBase.src`. |
| 40 | + |
| 41 | +Conversion of source string characters to an integer representing the Unicode character is prevalent in the upstream JavaScript implementation, to improve performance. |
| 42 | +However, it is unnecessary in Python and leads to harder to read code and performance deprecations (during the conversion in the `StateBase` initialisation). |
| 43 | + |
| 44 | +See [#270](https://github.com/executablebooks/markdown-it-py/pull/270), thanks to [@hukkinj1](https://github.com/hukkinj1). |
| 45 | + |
| 46 | +### ♻️ Centralise indented code block tests |
| 47 | + |
| 48 | +For CommonMark, the presence of indented code blocks prevent any other block element from having an indent of greater than 4 spaces. |
| 49 | +Certain Markdown flavors and derivatives, such as mdx and djot, disable these code blocks though, since it is more common to use code fences and/or arbitrary indenting is desirable. |
| 50 | +Previously, disabling code blocks did not remove the indent limitation, since most block elements had the 3 space limitation hard-coded. |
| 51 | +This change centralised the logic of applying this limitation (in `StateBlock.is_code_block`), and only applies it when indented code blocks are enabled. |
| 52 | + |
| 53 | +This allows for e.g. |
| 54 | + |
| 55 | +```md |
| 56 | +<div> |
| 57 | + <div> |
| 58 | + |
| 59 | + I can indent as much as I want here. |
| 60 | + |
| 61 | + <div> |
| 62 | +<div> |
| 63 | +``` |
| 64 | + |
| 65 | +See [#260](https://github.com/executablebooks/markdown-it-py/pull/260) |
| 66 | + |
| 67 | +### 🔧 Maintenance changes |
| 68 | + |
| 69 | +Strict type annotation checking has been applied to the whole code base, |
| 70 | +[ruff](https://github.com/charliermarsh/ruff) is now used for linting, |
| 71 | +and fuzzing tests have been added to the CI, to integrate with Google [OSS-Fuzz](https://github.com/google/oss-fuzz/tree/master/projects/markdown-it-py) testing, thanks to [@DavidKorczynski](https://github.com/DavidKorczynski). |
| 72 | + |
| 73 | +* 🔧 MAINTAIN: Make type checking strict [#](https://github.com/executablebooks/markdown-it-py/pull/267) |
| 74 | +* 🔧 Add typing of rule functions [#283](https://github.com/executablebooks/markdown-it-py/pull/283) |
| 75 | +* 🔧 Move linting from flake8 to ruff [#268](https://github.com/executablebooks/markdown-it-py/pull/268) |
| 76 | +* 🧪 CI: Add fuzzing workflow for PRs [#262](https://github.com/executablebooks/markdown-it-py/pull/262) |
| 77 | +* 🔧 Add tox env for fuzz testcase run [#263](https://github.com/executablebooks/markdown-it-py/pull/263) |
| 78 | +* 🧪 Add OSS-Fuzz set up by @DavidKorczynski in [#255](https://github.com/executablebooks/markdown-it-py/pull/255) |
| 79 | +* 🧪 Fix fuzzing test failures [#254](https://github.com/executablebooks/markdown-it-py/pull/254) |
| 80 | + |
3 | 81 | ## 2.2.0 - 2023-02-22
|
4 | 82 |
|
5 | 83 | ### What's Changed
|
|
0 commit comments