В Топазе один проверяемый исходный язык и несколько путей выполнения или поставки. Выбирайте путь по среде, которой будет принадлежать готовая программа.
Выбор по продукту
topaz runнепосредственно запускает интерпретатор во время разработки.- Обычная команда
buildсоздаёт платформенный исполняемый файл. --target pythonсоздаёт пакет, который запускается на Python 3.11 или новее без исходников.tpzи CLI Топаза.--target webподходит, если существующая среда модулей ES вызывает выбранные экспорты Топаза.--target web-workerдобавляет созданный транспорт Worker для такой среды.- Пакетная цель
web-appнужна, когда Топаз владеет жизненным циклом браузера и интерфейсом. - Пакетная цель
http-serviceсоздаёт один ограниченный обработчик HTTP/1.1.
Raw Web и Worker являются продуктами WASM, а управляемое Web Application включает ту же проверенную оболочку Raw Web в полный статический продукт.
topaz run main.tpz
topaz build main.tpz --out-dir native-product
topaz build --target python --root my-app --locked --out-dir python-product
topaz build main.tpz --target web --out-dir web-product
topaz build main.tpz --target web-worker --out-dir worker-product
web-app и http-service — пакетные цели, выбираемые через [build].target в
topaz.toml.
Цель и способ генерации — разные решения
--target выбирает продукт. --backend native выбирает необязательную
стратегию специализации внутри продуктов на основе Rust. Сначала она пробует
специализировать подходящие скалярные вычисления и ограниченные операции
Bytes или ByteBuffer; неподдерживаемые формы остаются на общем пути с
упакованными значениями. Эта настройка не превращает Python-продукт в
платформенный исполняемый файл и не меняет цель браузерного продукта.
Если решение важно, к проверенной команде emit или build с этой стратегией
можно добавить --native-report-json <path>. Отчёт показывает, какие функции
полностью или частично специализированы, а какие оставлены на общем пути с
упакованными значениями, не меняя байты продукта.
Явный отказ на границе цели
Цели используют общие разбор, разрешение модулей и статическую проверку, но не обещают безусловную поддержку всех операций, зависящих от среды. Если выбранная цель не может сохранить операцию, генерация сообщает ошибку с местом в исходнике до записи продукта.
Например, детерминированное сжатие DEFLATE с фиксированными кодами Хаффмана,
фиксированный zlib и защита RS(255,223) доступны в интерпретаторе, созданном
Rust, Raw Web, Worker и песочнице, но созданный Python отклоняет их до записи
артефакта.
Hash.crc32 доступен и в Python.
Порядок выполнения параллельных задач намеренно не определён. Программа не должна зависеть от конкретного чередования, выбранного механизмом выполнения.
Границы Rust, Python и LIT
Созданные Rust и Python — артефакты поставки, а не дополнительный синтаксис Топаза или стабильный API для ручного редактирования. Отдельные страницы симметрично описывают требования, файлы среды выполнения и явные исключения.
LIT — ограниченная поверхность интеграции Lispex и внутренней проверки. Один написанный на Топазе исходник интерпретатора проходит через несколько маршрутов Топаза, но LIT не является поставляемой целью Топаза и не доказывает эквивалентность всего языка.