This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
ReleasePort's take
Light signalThe Markdown engine has been replaced with a full AST pipeline for better structure handling.
Why it matters: Switching to an AST‑based parser improves rendering accuracy and enables future extensibility; developers should review markdown‑related code paths after upgrading to version 0.6.0.
Summary
AI summaryUpdates Main changes, document, and edit across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
Introduces two-phase AST parse: BlockParser and InlineParser create DocumentAST. Introduces two-phase AST parse: BlockParser and InlineParser create DocumentAST. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
| Feature | Low |
Adds tables and block LaTeX as first-class AST blocks with a dedicated cell scanner. Adds tables and block LaTeX as first-class AST blocks with a dedicated cell scanner. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
| Performance | Medium |
Incremental parsing and tokenization reduce edit cost to O(edit). Incremental parsing and tokenization reduce edit cost to O(edit). Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Low |
Fixes heading marker spacing, nested-marker reveal, task‑checkbox glyph issues. Fixes heading marker spacing, nested-marker reveal, task‑checkbox glyph issues. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Low |
Fixes trailing‑image scroll and measurement problems. Fixes trailing‑image scroll and measurement problems. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Low |
Fixes file‑switch scroll oscillation and incomplete code fence visibility while typing. Fixes file‑switch scroll oscillation and incomplete code fence visibility while typing. Source: llm_adapter@2026-06-04 Confidence: low |
— |
| Bugfix | Low |
Corrects task‑checkbox glyph display. Corrects task‑checkbox glyph display. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
| Bugfix | Low |
Resolves file‑switch scroll oscillation problem. Resolves file‑switch scroll oscillation problem. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
| Bugfix | Low |
Prevents incomplete code fences from remaining visible while typing. Prevents incomplete code fences from remaining visible while typing. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
| Refactor | Medium |
Replaces regex-driven Markdown engine with full AST pipeline. Replaces regex-driven Markdown engine with full AST pipeline. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Refactor | Low |
Implements an AST visitor styler for paragraph styles, inline coloring, and caret-aware marker handling. Implements an AST visitor styler for paragraph styles, inline coloring, and caret-aware marker handling. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
| Refactor | Low |
Replaces structural regexes with hand-written scanners for block-level tokenization. Replaces structural regexes with hand-written scanners for block-level tokenization. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
Full changelog
Highlights
Replaces the regex-driven Markdown engine with a full AST pipeline — parsing, tokenizing, and styling now run off a real syntax tree instead of re-scanning the whole document with NSRegularExpression on every keystroke.
Main changes
- Two-phase AST parse —
BlockParsersplits the document into a gap-free sequence of blocks; each block's inline content is parsed byInlineParserinto aDocumentAST(BlockNodes with inline children). - Tables & block LaTeX as first-class AST blocks — with a table-cell scanner that reuses the inline parser, instead of regex detection.
- AST visitor styler — block paragraph styles, inline colouring, and caret-aware marker reveal/shrink all derive from the tree; this is the live styler now, not the old regex passes.
- Scanners instead of regex — block-level tokens come from hand-written scanners; the structural regexes in the tokenizer and styler are gone.
- Incremental parsing & tokenization — per keystroke only the edited block window is re-parsed/re-tokenized (prefix/suffix reuse + buffer
memcmpcache, wiki-link fast path), so editing cost is ≈ O(edit) instead of O(document).
Bundled fixes
Heading marker spacing & nested-marker reveal, task-checkbox glyph, file-switch scroll oscillation, incomplete code fences staying visible while typing, and trailing-image scroll/measurement.
Tests
swift test — 61 tests across the AST parser, styler, and end-to-end pipeline suites.
Full changelog: https://github.com/nodes-app/swift-markdown-engine/compare/0.5.1...0.6.0
What's Changed
- implement full AST instead of regex by @luca-chen198 in https://github.com/nodes-app/swift-markdown-engine/pull/52
Full Changelog: https://github.com/nodes-app/swift-markdown-engine/compare/0.5.1...0.6.0
Breaking Changes
- Regex-driven parsing and styling are removed; all rendering now uses a full Abstract Syntax Tree (AST) pipeline.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Swift-Markdown-engine
All releases →Related context
Related tools
Earlier breaking changes
Beta — feedback welcome: [email protected]