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. Set workers=N to 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). GFM extensions= 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_wasm32 platform tag, so micropip.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, leave workers unset in markdown_to_html_batch(). (#9)
  • Linux aarch64 wheels — Pre-built manylinux and musllinux wheels 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, one cp39-abi3 wheel 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-pyodide and make dist-all targets. (#9)

Documentation

  • WHEELS.md now covers the Linux aarch64 wheel matrix and the new Pyodide wheel tag, the supported Pyodide versions, threading limits under Pyodide, and how the Pyodide wheel is published. (#7, #9)

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 via parser.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-abi3 tag, 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.toml so 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

  • Added a user guide page on parsing and AST usage. (#6)
  • Added WHEELS.md documenting the complete wheel build matrix, local build commands, and pre-release testing workflows. (#6)
  • Added parser types (Parser, Node, NodeType, ListType, DelimType, parse) to the API reference. (#6)

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 multimark CLI 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)

  • --width CLI 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=True is explicitly set.
  • Cross-platform wheels — Built with cibuildwheel for Linux, macOS, and Windows (Python 3.9–3.13).