Backends — implementation paths за единым checked source contract. Interpreter — reference execution; Rust, Python и web artifacts производятся из общего resolved/typed unit, а не отдельных dialects.
Контракт и компоненты
run запускает interpreter. Default Rust lowering использует boxed runtime; --backend native специализирует доказанные scalar islands и fallback при необходимости. Native build компилирует generated Rust через cargo. --target python пишет program.py и topaz_py_rt.py. web создаёт raw-WASM package, web-worker добавляет worker/client glue.
Рабочий процесс
Начните с check, зафиксируйте ожидаемый output через run, затем build target. Generated code — artifact; программы остаются Topaz, imports используют canonical module syntax. Differential tests сравнивают объявленные outputs, faults, diagnostics и projections, не internal layout.
Текущая поддержка
Непосредственное выполнение, Rust и Python совместно тестируются на текущей грамматике и семействах стандартной библиотеки. Raw WASM и web worker служат целями для браузера. Ограничения отдельных целей перечислены на странице состояния инструментария.
Артефакт интеграции Lispex
Один канонический исходник Lispex-in-Topaz выполняется интерпретатором, generated Rust, generated Python и Web. Реализация содержит собственные UTF-8 reader и normalizer, использует одну явную machine для лексического состояния, чисел, хвостовых вызовов, передачи управления и dispatch primitives. Каждый поддерживаемый guest-вызов проходит через общий dispatcher; fallback к host apply, eval, control или callback не входит в поддерживаемый путь.
Внутренние свидетельства интеграции фиксируют ограниченную поверхность проверки четырёх маршрутов. LIT сейчас поддерживает 84 из 205 строк primitive capabilities и шесть из 18 guest-calling; неподдерживаемые строки завершаются явно. Эти маршруты — варианты одного исходника LIT на Topaz, а не независимые реализации, и независимость исходного кода не заявляется. Интеграционный артефакт не входит в установщик или языковую поверхность.
Границы и ограничения
Порядок параллельных задач не определён, поэтому программа не должна зависеть от конкретного чередования. Кодеки сжатия сейчас требуют библиотечный путь Rust. Если цель не может сохранить поддерживаемое поведение, сборка должна сообщить ошибку, а не незаметно изменить программу.
Справочник команд
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