Песочница

Сборка заранее скомпилированного продукта

Сгенерируйте читаемый Топаз, скомпилируйте его точной установленной цепочкой Топаза и запустите Native-продукт Лиспекса без исходников.

Что здесь означает AOT

AOT означает ahead of time, то есть сборку заранее. Native компилирует правило до запуска и создаёт продукт без исходника Лиспекса внутри. Native-конвейер полностью явный.

точный исходник Lispex
  -> lispex.core-ir/v1
  -> lispex.bytecode/v1
  -> читаемый сгенерированный Topaz + source map
  -> точный установленный компилятор Topaz 5.11
  -> topaz.artifact.v1
  -> Native-продукт без исходников

Сгенерированная программа напрямую выполняет статический граф управления. Исходник Лиспекса, байткод, виртуальная машина Rust, tree-интерпретатор исходника и отдельная виртуальная машина Топаза сохраняют собственные именованные маршруты сборки и выполнения.

Подготовьте правило

Сохраните refund-window.lspx.

LISPEX
(define (decide days)
  (if (<= days 30) 'refund 'review))

(decide input)

Сохраните datum входа в request.lspx.

LISPEX
14

Явно выберите инструменты сборки

Сборка заранее сейчас доступна только в Native для macOS ARM64. Укажите абсолютные пути к установленному компилятору topaz-lang@5.11.0 и каталогу инструментов Rust.

SH
lispex routes fetch \
  --route aot-compiler \
  --target aarch64-apple-darwin \
  --out /absolute/tools/lispex-aot-compiler

TOPAZ_BIN=/absolute/tools/lispex-aot-compiler/product/bin/topaz-bin
RUST_TOOL_BIN=/absolute/path/to/rustup/bin

Получение подготавливает точный закрытый пакет Топаза и проверяет манифест выпуска. Сборка выбирает компилятор по переданному абсолютному пути и проверяет находящиеся там компилятор, npm-обёртку, установщик и прокси Rust. Область обнаружения точно совпадает с переданными путями.

Соберите без перезаписи

SH
lispex aot build \
  --source refund-window.lspx \
  --topaz-compiler "$TOPAZ_BIN" \
  --rust-tool-bin "$RUST_TOOL_BIN" \
  --out refund-window-aot

Каталог назначения не должен существовать. Лиспекс собирает в приватной подготовительной области в заданных пределах и сначала строго проверяет выданный компилятором артефакт Топаза и все управляемые файлы. Затем он удаляет зависящие от пути локальные символы линкера и заменяет подпись линкера одной фиксированной ad-hoc подписью AOT Лиспекса. Манифест продукта записывает точные хеши /usr/bin/strip и /usr/bin/codesign, а итоговый артефакт Топаза заново связывается с финальным исполняемым файлом. Манифест Лиспекса записывается последним, после чего закрытый продукт публикуется атомарно.

Установленный каталог содержит только эти файлы.

lispex-aot-product.json
lispex-source-map.json
topaz-artifact.json
target/debug/program
LICENSE
NOTICE
GENERATED-OUTPUT-NOTICE.txt

Для запуска не нужны ни сгенерированный Топаз, ни исходник Лиспекса.

Проверьте без выполнения

SH
lispex aot inspect --product "$PWD/refund-window-aot"
lispex aot validate --product "$PWD/refund-window-aot"

Обе команды требуют абсолютный корень продукта. Они проверяют закрытый список файлов, идентичности исходника, Core IR, байткода и продукта, карту исходника, точную линию компилятора и macOS-финализации, артефакт Топаза, хеш исполняемого файла, цель и нулевые счётчики запасных путей. Исполняемый файл не запускается.

Запустите установленный продукт

SH
lispex aot run \
  --product "$PWD/refund-window-aot" \
  --input request.lspx

OUTPUT

refund

run повторно проверяет продукт и запускает записанный исполняемый файл. Результат сохраняется на явно выбранном AOT-маршруте с нулём запасных попыток.

Для машинного результата добавьте --json.

SH
lispex aot run \
  --product "$PWD/refund-window-aot" \
  --input request.lspx \
  --json

Результат связывает манифест продукта, исходник, Core IR, байткод, сгенерированный пакет Топаза, карту исходника, артефакт Топаза, исполняемый файл, вход, запрошенные ресурсы, наблюдения и пять нулевых счётчиков запасных путей.

Задайте лимиты ресурсов

SH
lispex aot run \
  --product "$PWD/refund-window-aot" \
  --input request.lspx \
  --machine-transitions 1000000 \
  --output-bytes 1048576 \
  --control-frames 10000 \
  --json

Все три значения записываются беззнаковыми 64-битными десятичными числами в одном заданном виде. Ведущие нули, знак, переполнение, неверный учёт либо невозможное сочетание успеха и диагностики закрыто отклоняются. Модели стоимости движков могут различаться, поэтому сравнивайте одинаковые запросы. Равные счётчики фиксируют согласие ресурсных наблюдений, а квитанция четырёх способов отдельно фиксирует семантическое согласие. Достигнутый лимит остаётся типизированным результатом fault с диагностикой и наблюдаемыми счётчиками. Native-родитель сохраняет этот JSON вместе с кодом завершения процесса.

Сравните четыре способа выполнения в Native

После сборки скомпилированного продукта один исходник и вход можно явно выполнить в Rust tree, встроенной виртуальной машине Rust, точной установленной виртуальной машине Топаза и в скомпилированном исполняемом файле.

SH
lispex compare-routes \
  --topaz-vm /absolute/path/to/aarch64-apple-darwin \
  --aot-product "$PWD/refund-window-aot" \
  --receipt four-routes.json \
  --input request.lspx \
  refund-window.lspx

Лиспекс один раз читает и нормализует исходник, выводит по одному Core IR и байткоду, доказывает связь предварительно собранного скомпилированного продукта с этими идентичностями, проверяет оба продукта Топаза и запускает каждый из четырёх способов. Каждый результат сохраняет выбранный маршрут.

Атомарно опубликованная квитанция отделяет семантические оси расхождения от сопоставимых ресурсных осей. Виртуальная машина Rust, виртуальная машина Топаза и скомпилированный продукт используют одну модель стоимости байткода и должны совпасть по переходам, выводу, кадрам управления и завершённым корням. Tree объявляет собственную модель глубины и оставляет неприменимые счётчики пустыми. Код 0 означает завершение всех четырёх способов и совпадение проверенных осей. Код 1 означает расхождение. Код 2 означает ошибку выполнения или продукта. Код 3 означает невозможность опубликовать квитанцию.

Роли продуктов

Скомпилированный исполняемый файл, манифест продукта, карта исходника, отчёты команд inspect, validate или run, а также квитанция четырёх способов дают execution-material-only и локальную диагностику. Ваучер добавляет аутентификацию издателя, политику доверия получателя, точные внешние исходник и вход, текущее повторное выполнение с привязкой запроса и локальное решение проверки допуска для запуска tree, записи смысла и виртуальной машины Rust.

Запуск tree и виртуальная машина Rust остаются независимо выбираемыми путями восстановления. Каждый способ сохраняет свой результат и идентификатор маршрута.

Поддержка продуктов

ПродуктСборкаInspect / validate / run
Native macOS ARM64точный установленный Топаз 5.11поддерживается

Маршрут записывает точные исходник, Core IR, байткод, компилятор, Rust, инструменты финализации macOS и хост в одну линию Native-продукта. Сборки с теми же записанными хостом и инструментами сравниваются побайтово. Топаз владеет производительностью, размером бинарника, кросс-компиляцией и развитием интерфейса. Ваучер владеет аутентификацией издателя, политикой доверия и локальным разрешением.

Запуск проверенного байткода · Native CLI · Среды выполнения и интерпретаторы

Сборка заранее скомпилированного продукта · Лиспекс