← Back to all sparks
Q

q2

INFRA · APIS
Velocity6.3

q2 is the experimental implementation of Quarto 2 in Rust.

Ten releases in six days, methodically porting Quarto's surface into a Rust binary.

rust-rewritepublishing-toolchainquartodeveloper-toolingexperimental
Current state
q2 is the Quarto team's Rust reimplementation of Quarto, shipping as a statically linked single binary with signed release archives and a bundled Quarto Hub MCP server. It is explicitly marked experimental and not production-ready, and it is moving fast — ten releases between 7 and 13 August. The release notes are raw commit logs rather than curated summaries, and reading them shows a consistent programme: work items are investigated, design decisions recorded, tests written red, then implemented in numbered phases, with 'Q1 parity' as the recurring benchmark against the existing Quarto.
Where it's heading
The project is working through the original Quarto's feature surface item by item — project profiles, environment files, shortcodes in metadata, listings, callouts, crossrefs, TOC handling, aliases — while building infrastructure the original lacks, notably a numbered diagnostic catalogue (Q-2-47, Q-14-4 and so on) with a lint that requires a documentation page for every error code. Version 0.18.0's Lua filter support is the load-bearing one, since Quarto's extension ecosystem is written in Lua. Distribution choices point at the same goal: musl-static Linux builds, minisign signatures, no glibc requirement.
Prediction
Expect the parity grind to continue at this cadence, with the remaining high-value Q1 features and diagnostic coverage as the visible queue. The commit logs also show npx distribution planned for the MCP server, which is the nearest thing to a stated roadmap item in these entries.

Recent moves

  1. 17h ago

    TOC entries carry inline markup; draft banner restored

    A parity batch: table-of-contents entries and toc-title now carry inline markup rather than dropping quote glyphs and formatting, the draft alert banner Q1 emits on draft pages is restored, and site-root-relative paths resolve across navbar logos, images and footer regions. Release binaries are also stripped of symbols.

    View source ↗
  2. 1d ago

    Adds alias redirect stubs and diagnostic suppression

    Implements aliases as redirect stubs for website projects, a migration blocker for anyone moving a published site, and adds a diagnostics configuration key for suppressing warnings. Smart-punctuation ellipses and adjacent footnote definitions both get parser fixes.

    View source ↗
  3. 2d ago

    Bumps samod and automerge; fixes indented continuations

    Mostly a dependency release, moving samod to 0.13.0 and automerge to 3.4.1, with one parser fix so indented continuation lines stop raising hard errors. The smallest release in this run.

    View source ↗
  4. 2d ago

    Lua filters supported; mermaid bundled instead of CDN-loaded

    ⚡ SPARK

    The release that addresses the central question for a reimplementation — whether the existing extension ecosystem runs on it — by supporting the returned-table and filter-list Lua filter forms. Bundling the mermaid runtime rather than fetching it from a CDN is a smaller but telling choice about how rendered sites should behave.

    View source ↗
  5. 3d ago

    Mermaid cell options, callout titles, email autolinks

    A dense parity release working through markdown and crossref behaviour: mermaid cell options behind %%| markers, fig-cap parsed as markdown inlines with fig-alt routed to mermaid's accDescr, include shortcodes expanding inside fenced code blocks, callout title attributes honoured, and CommonMark email autolinks. Reference-style link syntax now warns at render time rather than failing silently.

    View source ↗
  6. 3d ago

    Project profiles, environment files, shortcodes in metadata

    The largest feature release in this window by volume, landing three Q1 configuration features at once: project profiles as _quarto-<profile>.yml overlays with conditional content, _environment file loading, and shortcode resolution across all metadata values and include files. A Jupyter kernel leak is also fixed, kernels now shutting down when their scope ends. The stored release notes are truncated at 8000 characters, so the tail of this commit log is not visible.

    View source ↗