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.
Lispex integration artifact
One canonical Lispex-in-Topaz source is executed by the interpreter, generated Rust, generated Python, and Web routes. The implementation has its own UTF-8 reader and normalizer, uses one explicit machine for lexical state, numeric operations, tail calls, control transfer, and primitive dispatch, and routes every supported guest call through the common dispatcher. Host apply, eval, control, and callback fallback are not part of the supported path.
Internal integration evidence records a bounded four-route check surface. LIT currently supports 84 of 205 primitive capability rows and six of 18 guest-calling rows; unsupported rows fail loudly. These routes are variants of one Topaz-written LIT source, not independent implementations, and no source-independence claim is made. The integration artifact is not part of the installer or language surface.
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