This repo contains the Julia execution engine for Quarto. The engine was originally built directly into quarto-cli but has since been refactored into an extension-style engine, moved into this separate repo, and is pulled into quarto-cli via a git subtree at src/resources/extension-subtrees/julia-engine/.
The engine extension requires a compatible version of quarto (>= 1.9.0). If work involves changes to the engine–quarto interface, you'll also need a corresponding dev build of quarto-cli with matching changes.
_extensions/julia-engine/— the actual extension (contains_extension.yml, the bundledjulia-engine.js, and Julia resource files likeProject.toml,*.jl)src/— TypeScript source for the engine (julia-engine.ts,constants.ts). Changes here must be bundled into_extensions/julia-engine/julia-engine.jsto take effect._quarto.yml— makes the repo root a quarto project so rendering picks up the extension from_extensions/tests/— self-contained test suite (see Testing below)
After editing the TypeScript source in src/, rebuild the bundled JS:
quarto call build-ts-extension src/julia-engine.tsThis bundles src/julia-engine.ts into _extensions/julia-engine/julia-engine.js. CI verifies the bundled JS matches the TS source.
Tests are self-contained Deno tests using jsr: imports — no import map or quarto internals needed. tests/docs/ contains .qmd files and quarto projects that the .test.ts files in tests/smoke/ render and verify. These directories mirror quarto-cli's tests/docs/ and tests/smoke/ structure and are intended to be merged into those directories when quarto-cli runs its own CI (since this extension is a fixed part of quarto-cli via git subtree).
The test runner uses the deno bundled with quarto (to avoid version mismatches):
# With quarto on PATH:
tests/run-tests.sh
# With explicit quarto path:
QUARTO=/path/to/quarto tests/run-tests.sh
# Run a specific test file:
tests/run-tests.sh smoke/julia-engine/render.test.tsCreate or edit a .qmd file in the repo root (e.g. in scratch/) with engine: julia and render it:
quarto render scratch/test.qmdSince this directory is a quarto project with the extension in _extensions/, quarto discovers and uses the engine from here.
CI runs on all three platforms (Linux, macOS, Windows) against a pinned quarto-cli revision (see QUARTO_CLI_REV in .github/workflows/ci.yml). It:
- Configures quarto from the pinned rev
- Verifies the bundled JS is up to date with the TS source
- Runs the full test suite
When bumping QUARTO_CLI_REV, use the full commit hash annotated with the version tag for clarity (e.g. abc123 # v1.9.35).
Every PR with user-facing or otherwise meaningful changes must include an update to CHANGELOG.md (enforced by CI). Add entries under the ## Unreleased section. Use the skip-changelog label to bypass the check for PRs that don't need an entry (e.g. internal cleanups, CI, or docs changes).