Pass-1 needs to be pure Rust code with no spawning of slow sub-processes such as Deno.
However in the Quarto 1 API, both claimsFile and markdownForFile are dynamic JavaScript calls with no trivial way to specify them statically.
So if TS engines are used that claim files and convert them, that's happening in Deno today.
It's slow and error-prone - but at the same time, it's ahead of q2, which does not have spin/percent script, or ipynb support yet.
Structurally,
provides the format conversion stage in the pipeline. It's just that it shouldn't spawn Deno.
We'll remove the ability to claim and parse files via TS in the following plans (merged but not fully reviewed or implemented):
2026-07-07-plan7a-static-content-pattern-claims.md
2026-07-08-plan7b-native-content-processors.md
2026-07-08-plan7c-ipynb-content-processor.md
These establish a registry of converters, written in Rust, from a native format to qmd.
Currently those converters are
- spin, via treesitter-r
- percent (porting TS parser from Quarto 1)
- ipynb - new design with provenance but otherwise ported from Quarto 1.
Converters can take extra parameters; e.g. Python and Julia both use percent scripts but look for different languages in them.
Pass-1 needs to be pure Rust code with no spawning of slow sub-processes such as Deno.
However in the Quarto 1 API, both
claimsFileandmarkdownForFileare dynamic JavaScript calls with no trivial way to specify them statically.So if TS engines are used that claim files and convert them, that's happening in Deno today.
It's slow and error-prone - but at the same time, it's ahead of q2, which does not have spin/percent script, or ipynb support yet.
Structurally,
provides the format conversion stage in the pipeline. It's just that it shouldn't spawn Deno.
We'll remove the ability to claim and parse files via TS in the following plans (merged but not fully reviewed or implemented):
2026-07-07-plan7a-static-content-pattern-claims.md2026-07-08-plan7b-native-content-processors.md2026-07-08-plan7c-ipynb-content-processor.mdThese establish a registry of converters, written in Rust, from a native format to qmd.
Currently those converters are
Converters can take extra parameters; e.g. Python and Julia both use percent scripts but look for different languages in them.