Песочница

Сборка Native AOT-продукта

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

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

Native-конвейер полностью явный:

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

Сгенерированная программа содержит статический граф управления. Во время выполнения она не читает исходник или байткод Lispex и не включает Rust VM, древовидный интерпретатор либо отдельную Topaz VM.

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

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

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

(decide input)

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

LISPEX
14

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

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

SH
TOPAZ_BIN=/absolute/path/to/node_modules/topaz-lang/bin/topaz-bin
RUST_TOOL_BIN=/absolute/path/to/rustup/bin

Лиспекс проверяет точные байты пакета Topaz, компилятора, npm-обёртки, установщика и прокси Rust. Поиска через PATH, checkout репозитория, сеть, старую цепочку или другой кэшированный продукт нет.

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

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

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

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

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

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

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

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

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

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

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

OUTPUT

refund

run повторно проверяет продукт и запускает только записанный исполняемый файл. Он не компилирует и не пробует древовидный интерпретатор, Rust VM, Topaz VM, парсер байткода, сеть либо другую установку.

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

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

Результат связывает manifest продукта, исходник, Core IR, байткод, сгенерированный пакет Topaz, source map, артефакт Topaz, исполняемый файл, вход, запрошенные ресурсы, наблюдения и пять нулевых fallback.

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

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 только потому, что процесс AOT завершился с кодом ошибки.

Сравните четыре Native-маршрута

После сборки AOT-продукта один исходник и вход можно явно выполнить в Rust tree, встроенной Rust VM, точной установленной Topaz VM и AOT executable:

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 и байткоду, доказывает связь предварительно собранного AOT-продукта с этими identity, проверяет оба продукта Topaz и запускает каждый маршрут без повторной попытки через другой.

Неперезаписываемая квитанция отделяет семантические оси расхождения от сопоставимых ресурсных осей. Rust VM, Topaz VM и AOT используют одну модель стоимости байткода и должны совпасть по переходам, выводу, кадрам управления и завершённым корням. Tree честно объявляет другую depth-модель, не выдумывая отсутствующие счётчики. Код 0 означает завершение всех маршрутов и совпадение проверенных осей; 1 — расхождение; 2 — ошибку выполнения или продукта; 3 — невозможность опубликовать квитанцию.

Граница безопасности

Исполняемый AOT-файл, manifest, source map и отчёты inspect, validate или run — execution-material-only; квитанция четырёх маршрутов — локальная диагностика. Это не evidence аутентификации Vouch, не результат повторного выполнения, связанный с запросом, и не grant gate. Текущая цепочка Vouch по-прежнему использует точные внешние исходник и вход с границей tree/Meaning/Rust VM.

Rust tree и Rust VM остаются независимо выбираемыми путями восстановления. Ошибка AOT видима и не включает другой маршрут автоматически.

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

ПродуктСборкаInspect / validate / run
Native macOS ARM64только точный Topaz 5.11да
Другие Native-целинетнет
npm CLI/пакетявный отказ: только Nativeнет
Открытый WASM, браузер, Worker, Песочницанетнет

Текущий маршрут — неоптимизированный AOT с приоритетом корректности. Утверждение о побайтово одинаковой повторной сборке ограничено записанными identity компилятора, Rust и инструментов macOS-финализации на текущем хосте; это не обещание воспроизводимости между хостами. Маршрут не обещает меньший бинарник, ускорение, кросс-компиляцию, стабильный ABI, формальную эквивалентность, подлинность издателя или полномочия Vouch.

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