Backends are implementation paths behind one checked source contract. The interpreter is the reference execution path; Rust, Python, and web artifacts are products of the shared resolved and typed unit, not separate language dialects.
Contract and components
run executes the interpreter. Default Rust lowering uses the boxed runtime; --backend native specializes proven scalar islands and falls back when needed. Native build compiles generated Rust through cargo. --target python writes program.py with topaz_py_rt.py. web emits a raw-WASM package and web-worker adds worker/client glue.
Workflow
Start with check, establish expected output with run, then build the target. Inspect generated code only as an artifact: user programs remain Topaz and imports remain canonical Topaz module syntax. Differential tests compare declared observable outputs, faults, diagnostics, and projections rather than internal object layout.
Current support
Direct execution, Rust output, and Python output are tested together across the current grammar and standard-library families. Raw WASM and web-worker builds provide the browser deployment paths. The status page records any feature that is available only on a particular target.
Boundaries and limitations
Concurrent task ordering is unspecified, so programs must not depend on a particular interleaving. Compression codecs currently require the Rust-backed library path. If an output target cannot preserve a supported feature, the build must report an error instead of silently changing the program.
Command reference
topaz run main.tpz
topaz emit main.tpz --out-dir rust-out
topaz build main.tpz --backend native --out-dir native-out
topaz build main.tpz --target python --out-dir python-out