Что здесь означает 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.
(define (decide days)
(if (<= days 30) 'refund 'review))
(decide input)Сохраните datum входа в request.lspx.
14Явно выберите инструменты сборки
Сборка заранее сейчас доступна только в Native для macOS ARM64. Укажите
абсолютные пути к установленному компилятору topaz-lang@5.11.0 и каталогу
инструментов Rust.
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. Область обнаружения точно совпадает с переданными путями.
Соберите без перезаписи
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Для запуска не нужны ни сгенерированный Топаз, ни исходник Лиспекса.
Проверьте без выполнения
lispex aot inspect --product "$PWD/refund-window-aot"
lispex aot validate --product "$PWD/refund-window-aot"Обе команды требуют абсолютный корень продукта. Они проверяют закрытый список файлов, идентичности исходника, Core IR, байткода и продукта, карту исходника, точную линию компилятора и macOS-финализации, артефакт Топаза, хеш исполняемого файла, цель и нулевые счётчики запасных путей. Исполняемый файл не запускается.
Запустите установленный продукт
lispex aot run \
--product "$PWD/refund-window-aot" \
--input request.lspxrefund
run повторно проверяет продукт и запускает записанный исполняемый файл.
Результат сохраняется на явно выбранном AOT-маршруте с нулём запасных
попыток.
Для машинного результата добавьте --json.
lispex aot run \
--product "$PWD/refund-window-aot" \
--input request.lspx \
--jsonРезультат связывает манифест продукта, исходник, Core IR, байткод, сгенерированный пакет Топаза, карту исходника, артефакт Топаза, исполняемый файл, вход, запрошенные ресурсы, наблюдения и пять нулевых счётчиков запасных путей.
Задайте лимиты ресурсов
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, точной установленной виртуальной машине Топаза и в скомпилированном исполняемом файле.
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 · Среды выполнения и интерпретаторы