Skip to content

Swift-Markdown-engine

v0.6.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

Published 1mo Editors & IDEs
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

ReleasePort's take

Light signal
editorial:auto 1mo

The 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 summary

Updates Main changes, document, and edit across a mixed release.

Changes in this release

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 parseBlockParser splits the document into a gap-free sequence of blocks; each block's inline content is parsed by InlineParser into a DocumentAST (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 memcmp cache, 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

Track Swift-Markdown-engine

Get notified when new releases ship.

Sign up free

About Swift-Markdown-engine

All releases →

Related context

Earlier breaking changes

  • v0.10.0 `==highlight==` and `~~strikethrough~~` are now opt‑in extensions, not core grammar.
  • v0.7.0 Default `scrollView` content inset is now `0`; opt back in via `config.safeAreaInsets`.
  • v0.7.0 `scrollView.documentView` is now always an internal container view, never the `NSTextView`.

Beta — feedback welcome: [email protected]