Path: blob/main/src/resources/extension-subtrees/julia-engine/AGENTS.md
12922 views
quarto-julia-engine
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.
Repo structure
_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)
Building
After editing the TypeScript source in src/, rebuild the bundled JS:
This bundles src/julia-engine.ts into _extensions/julia-engine/julia-engine.js. CI verifies the bundled JS matches the TS source.
Testing
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).
Running tests locally
The test runner uses the deno bundled with quarto (to avoid version mismatches):
Quick: render in this repo
Create or edit a .qmd file in the repo root (e.g. in scratch/) with engine: julia and render it:
Since this directory is a quarto project with the extension in _extensions/, quarto discovers and uses the engine from here.
CI
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).