Changelog
This changelog is generated automatically from GitHub Releases.
v0.4.0
2026-10-06 · GitHub
multimark v0.4.0 adds markdown_to_html_batch(), a fast way to render many Markdown documents to HTML in one call, with optional multi-threading. Pre-built wheels now cover Linux aarch64, and Pyodide/WebAssembly wheels are published to PyPI for the first time, so micropip.install("multimark") works in browser-based Python environments running Pyodide 314 or later.
New Features
- Batch HTML rendering — New
markdown_to_html_batch()function renders a list of Markdown documents to HTML in a single call. The parse/render loop runs entirely in C and releases the GIL for the whole batch, removing most of the per-document Python overhead. Setworkers=Nto split the batch across threads for multi-core parallelism; results are always returned in input order. It accepts the same rendering options as markdown_to_html() (smart,unsafe,hardbreaks,footnotes, and so on). GFMextensions=are not yet supported in batch mode. (#8) - Pyodide / WebAssembly wheels on PyPI — Pyodide wheels are now published to PyPI with the PEP 783
pyemscripten_2026_0_wasm32platform tag, somicropip.install("multimark")installs a pre-built wheel in Pyodide 314+ (Python 3.14), JupyterLite, Shinylive, and Marimo WASM mode. Earlier Pyodide versions (0.28/0.29, Python 3.13) are not supported. Under Pyodide, which cannot start threads, leaveworkersunset inmarkdown_to_html_batch(). (#9) - Linux aarch64 wheels — Pre-built
manylinuxandmusllinuxwheels are now published for 64-bit ARM Linux (AWS Graviton, Raspberry Pi 4/5, ARM containers), so these platforms no longer need a C compiler to build from the source distribution. As with other platforms, onecp39-abi3wheel covers CPython 3.9 and newer. (#7)
Enhancements
- The release workflow now uploads the Pyodide wheel in its own job, after the native wheels and sdist, so a problem with the Pyodide build or upload can no longer block the rest of a release.
- Pyodide wheels are now built with cibuildwheel 4.2.1, both in CI and with the local
make dist-pyodideandmake dist-alltargets. (#9)
Documentation
v0.3.2
2026-08-08 · GitHub
Packaging fix release: no functional changes from v0.3.0.
v0.3.1
2026-08-08 · GitHub
Packaging fix release: no functional changes from v0.3.0.
v0.3.0
2026-08-08 · GitHub
multimark v0.3.0 adds a full AST parsing API, adopts the Python stable ABI for forward-compatible wheels, and ships pre-built Pyodide/WebAssembly wheels for browser-based Python environments. Python 3.14 is now tested in CI, and a single abi3 wheel per platform covers all CPython versions from 3.9 onward.
New Features
Streaming parser — New Parser class for incremental Markdown parsing. Feed content in chunks with
parser.feed(), then render to any output format or access the AST viaparser.finish(). Supports context manager usage for automatic resource cleanup. (#6)AST access — New parse() function and Node class expose the full CommonMark/GFM abstract syntax tree. Inspect document structure, traverse with
node.walk(), read properties like heading_level, url, and literal, mutate the tree in place, and render subtrees independently. (#6)Pyodide / WebAssembly wheels — Pre-built wheels for Pyodide are now published to PyPI, enabling multimark in browser-based Python environments such as JupyterLite, Shinylive, and Marimo WASM mode. (#6)
Python stable ABI (abi3) wheels — Wheels now use the
cp39-abi3tag, providing a single wheel per platform that works with all CPython versions from 3.9 onward — including future releases like 3.14. (#4)
Enhancements
- Python 3.14 is now included in the CI test matrix. (#6)
- Added manually triggered CI workflows for testing native wheel, Pyodide wheel, and sdist builds before a release. (#6)
- Centralized all cibuildwheel configuration in
pyproject.tomlso CI and local builds share the same settings. (#6) - Added Makefile targets for local wheel and sdist builds (
make dist-wheel,make dist-pyodide,make dist-sdist,make dist-all). (#6)
Documentation
v0.2.0
2026-06-09 · GitHub
Multimark v0.2.0 introduces a command-line interface for converting Markdown directly from the terminal. The CLI supports all five output formats, GFM extensions, and rendering options. This makes it easy to use multimark in shell pipelines, scripts, and agent workflows without writing Python.
New Features
Command-line interface — New
multimarkCLI command converts Markdown from a file or stdin to HTML, LaTeX, man, CommonMark, or XML. Supports all GFM extensions (-e table,-e strikethrough, etc.) and rendering flags (--smart,--unsafe,--footnotes, and more). Built with Click for shell completion and automatic help generation. (#1)--widthCLI option — Controls line wrapping for LaTeX, man page, and CommonMark output directly from the command line. Defaults to no wrapping; set a column width (e.g.,--width 72) to wrap long paragraphs. (#2)
v0.1.3
2026-05-20 · GitHub
Packaging fix release: no functional changes from v0.1.0.
v0.1.2
2026-05-20 · GitHub
Packaging fix release: no functional changes from v0.1.0.
v0.1.1
2026-05-20 · GitHub
Packaging fix release: no functional changes from v0.1.0.
v0.1.0
2026-05-20 · GitHub
This is the first public release of multimark: fast Python bindings to cmark-gfm, the C reference implementation of CommonMark with GitHub Flavored Markdown extensions.
multimark provides five output renderers (HTML, LaTeX, groff man, XML, and normalized CommonMark) through a minimal, consistent API. All GFM extensions are supported (tables, strikethrough, autolinks, task lists, and tag filtering) and raw HTML is safely stripped by default. Pre-built wheels are available for Linux, macOS, and Windows across Python 3.9–3.13, with no system dependencies required.
Highlights
- Five renderers — markdown_to_html(), markdown_to_latex(), markdown_to_man(), markdown_to_commonmark(), and markdown_to_xml(), all sharing the same interface.
- GFM extensions — Enable tables, strikethrough, autolinks, task lists, and tag filtering via the
extensions=parameter. - Options flags — Boolean keyword arguments (
smart,unsafe,hardbreaks,sourcepos,footnotes,normalize) plus a composable Options bitmask for advanced flags. - Safe by default — Raw HTML is stripped unless
unsafe=Trueis explicitly set. - Cross-platform wheels — Built with cibuildwheel for Linux, macOS, and Windows (Python 3.9–3.13).