Topazdocs
Инструменты и выполнение

Интерпретатор и бэкенды

Непосредственное выполнение, generated-цели и ограниченный артефакт интеграции Lispex в инструментарии Topaz.

Backends — implementation paths за единым checked source contract. Interpreter — reference execution; Rust, Python и web artifacts производятся из общего resolved/typed unit, а не отдельных dialects.

Контракт и компоненты

run запускает интерпретатор. Стандартное понижение в Rust использует упакованную среду выполнения. --backend native сначала пробует доказанный скалярный путь для всего модуля, а при отказе сохраняет упакованную оболочку приложения и заменяет подходящие функции верхнего уровня нативными вспомогательными функциями. Точные параметры и локальные значения Bytes и ByteBuffer могут напрямую использовать проверенные операции длины, чтения, среза, записи, заполнения, копирования и снимка. Прямое бинарное поле доказанного проверяющим read-only record-параметра один раз проецируется в тот же ограниченный путь. Недоказанные records, вложенные проекции, захваты, динамические вызовы, обобщения, значения по умолчанию, переменное число аргументов, параллельность и внешние модули остаются упакованными. Нативная команда build компилирует созданный Rust через cargo. --target python записывает program.py и topaz_py_rt.py. Цель web создаёт пакет raw-WASM, а web-worker добавляет код рабочего процесса и клиента.

Рабочий процесс

Начните с check, зафиксируйте ожидаемый output через run, затем build target. Generated code — artifact; программы остаются Topaz, imports используют canonical module syntax. Differential tests сравнивают объявленные outputs, faults, diagnostics и projections, не internal layout.

Чтобы увидеть выбор нативного понижения, добавьте --native-report-json <путь> к проверенной нативной команде emit или build. Детерминированный документ topaz.native-lowering-report.v1 помечает каждую функцию верхнего уровня как native, hybrid-native или boxed и приводит стабильную причину упакованного выбора. Запись отчёта не меняет обычный вывод или созданные артефакты.

Бинарный быстрый путь использует те же проверенные операции, что и упакованная среда выполнения. Поэтому ошибки границ, фиксированная длина, перекрывающееся копирование в себя, проверка до изменения и неизменяемые снимки сохраняют наблюдаемый контракт; неподдерживаемые формы переходят к упакованному пути без догадок.

Текущая поддержка

Непосредственное выполнение, Rust и Python совместно тестируются на текущей грамматике и семействах стандартной библиотеки. Raw WASM и web worker служат целями для браузера. Ограничения отдельных целей перечислены на странице состояния инструментария.

Детерминированная функция Codec.deflateFixedCompress использует одну реализацию в интерпретаторе, generated Rust, raw Web, Web Worker и Playground. В generated Python точной реализации пока нет, поэтому emitter сообщает ошибку с позицией в исходнике до записи артефакта.

Codec.zlibFixedCompress поддерживает те же пути и оборачивает точные raw-байты фиксированным заголовком RFC 1950 и трейлером Adler-32. Generated Python отклоняет функцию на той же границе до создания артефакта.

Детерминированная функция Codec.reedSolomon255223Protect доступна на тех же маршрутах и создаёт точные систематические кодовые слова RS(255,223). Generated Python отклоняет её на той же границе до создания артефакта.

Некриптографическая функция Hash.crc32 общая для интерпретатора, generated Rust, generated Python, raw Web, Web Worker и Playground. Все пути возвращают одно и то же беззнаковое целое CRC-32/ISO-HDLC.

Артефакт интеграции 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, а не независимые реализации, и независимость исходного кода не заявляется. Интеграционный артефакт не входит в установщик или языковую поверхность.

Границы и ограничения

Порядок параллельных задач не определён, поэтому программа не должна зависеть от конкретного чередования. Поддержка двоичных codec зависит от цели; raw fixed-Huffman compression, фиксированный zlib и защита RS(255,223) — явные исключения generated Python. Если цель не может сохранить поддерживаемое поведение, сборка должна сообщить ошибку, а не незаметно изменить программу.

Справочник команд

topaz run main.tpz
topaz emit main.tpz --out-dir rust-out
topaz build main.tpz --backend native --out-dir native-out
topaz build --root . --locked --backend native --native-report-json native-report.json --out-dir native-out
topaz build main.tpz --target python --out-dir python-out

Связанная документация