Песочница

Запуск проверенного байткода

Скомпилируйте Core IR, выполните байткод во встроенной виртуальной машине Rust или точной установленной виртуальной машине Топаза и сравните их.

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

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

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

(decide input)

Единственный входной datum сохраните как request.lspx.

LISPEX
14

input не читает файл или окружение. Это явное требование, записанное в Core IR и байткоде, а значение передаётся отдельным параметром команды.

Соберите Core IR и байткод

SH
lispex core-ir build \
  --source refund-window.lspx \
  --out refund-window.lpxir

lispex bytecode build \
  --ir refund-window.lpxir \
  --out refund-window.lpxbc

Первая команда разрешает имена и ячейки, захваты, хвостовые позиции и координаты исходника, не выполняя правило. Вторая переводит этот Core IR в lispex.bytecode/v1, проверяет результат и записывает новый бинарный артефакт. Существующий файл ни одна команда не перезаписывает.

Изучите или проверьте до запуска

SH
lispex bytecode inspect --bytecode refund-window.lpxbc
lispex bytecode validate --bytecode refund-window.lpxbc

inspect показывает идентификаторы, размеры таблиц в заданных пределах, требования, число opcode, координаты корней и покрытие карты исходника. validate является более краткой границей для автоматизации. Строгий разборщик проверяет и заново кодирует артефакт, принимая только одно допустимое представление байтов.

Обе команды проверяют целостность. Они не аутентифицируют производителя, не одобряют правило, не связывают запрос потребителя и не выполняют решение.

Выполните только после проверки

SH
lispex bytecode run \
  --bytecode refund-window.lpxbc \
  --input request.lspx

OUTPUT

refund

Native CLI проверяет весь артефакт до создания состояния виртуальной машины. Некорректные байты отклоняются до чтения ввода, вывода, вызова примитива или первого шага машины. Если артефакт объявляет input, параметр --input обязателен, а лишний ввод для артефакта без такого требования также отклоняется.

Один stdin нельзя использовать сразу для двух входов, и такой вызов отклоняется.

SH
lispex bytecode run --bytecode - --input -

Передайте байткод или datum через именованный файл.

Выполните тот же артефакт в виртуальной машине Топаза

Виртуальная машина Rust встроена и остаётся вариантом по умолчанию. На macOS ARM64 можно явно выбрать точный допущенный продукт Топаза 5.11.

SH
lispex bytecode run \
  --engine topaz \
  --topaz-vm /absolute/path/to/aarch64-apple-darwin \
  --bytecode refund-window.lpxbc \
  --input request.lspx

Корень продукта задаётся абсолютным путём к отдельно установленному lispex-topaz-vm/v1. Лиспекс проверяет манифест, артефакт Топаза, исполняемый файл, обёртку, управляемые файлы, линию компилятора и исходника, платформу, ресурсный контракт и объявление об отсутствии запасного пути. Поиска через PATH, соседний репозиторий, сеть или старую установку нет. Отсутствующий, изменённый, зависший или некорректный продукт даёт явную ошибку Топаза без повтора в Rust.

Выберите виртуальную машину для исходника

Для самодостаточного исходника есть короткая форма.

SH
lispex run --backend rust --engine vm rule.lspx

По умолчанию остаётся tree.

SH
lispex run --backend rust --engine tree rule.lspx

Явно выбранный vm никогда не повторяет неудачный запуск через tree. --engine относится только к Rust-бэкенду. Сочетание с другим бэкендом, таким как LIL или LIT, или с реестром внешних бэкендов является ошибкой использования.

Сравните два Rust-движка

SH
lispex compare-engines \
  --receipt tree-vm.json \
  rule.lspx

Неперезаписываемый отчёт содержит точные идентификаторы исходника, Core IR и байткода, оба семантических наблюдения, оси расхождения, расход ресурсов виртуальной машины и число запасных путей. Это полезное свидетельство регрессии, но движки разделяют Rust-значения и листья примитивов. Совпадение не является свидетельством независимой реализации или доказательством эквивалентности.

Для прямого сравнения двух виртуальных машин байткода используйте эту команду.

SH
lispex compare-vms \
  --topaz-vm /absolute/path/to/aarch64-apple-darwin \
  --receipt rust-topaz.json \
  rule.lspx

Байткод выводится один раз, затем Rust и Топаз запускаются явно. Сравниваются статус, вывод, значения, предупреждения, диагностика, ресурсы и завершённые корни. Исходник Топаза структурно отделён, но исполняемый файл создан Rust Stage 0 компилятора Топаза. Совпадение является дифференциальным свидетельством, а не доказательством или полномочием Ваучера.

Когда собран соответствующий заранее скомпилированный продукт, сравните все четыре способа выполнения в Native.

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

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

Выберите подходящий продукт

ПродуктИнструменты байткодаВиртуальная машина RustВиртуальная машина Топаза, заранее скомпилированный продукт и сравнение четырёх способов
Native macOS ARM64давстроенаточные отдельные продукты и явное сравнение
Другие поддерживаемые Nativeдавстроенанет
npm CLI и пакетнетнетявный отказ, только Native
Открытая сборка WebAssemblyнетнетнет
Песочницанетнетнет

npm, открытая сборка WebAssembly и Песочница продолжают выполнять исходники через свои заявленные tree-запуски и поддерживают точные изображения. В них нет ни читателя байткода на JavaScript, ни проверяющего модуля, ни виртуальной машины.

Скомпилированный путь Ваучера не делает байткод полномочием

Хэш байткода идентифицирует точные байты. Проверка устанавливает только структурную допустимость в заданных пределах, а локальный запуск виртуальной машины устанавливает только наблюдение данного запуска Native. Обычный .lpxbc по-прежнему не выпускает и не аутентифицирует конверт, не удовлетворяет политику доверия, не выбирает исходник или ввод и не выдаёт решение проверки допуска.

Если потребитель намеренно добавляет согласие виртуальной машины к существующим проверкам Ваучера, Native создаёт отдельный контейнер, связанный с исходником.

SH
lispex vouch compiled build \
  --source refund-window.lspx \
  --out refund-window.lpxvca

lispex vouch compiled validate \
  --artifact refund-window.lpxvca \
  --source refund-window.lspx

vouch verify --reexecute --compiled-artifact refund-window.lpxvca и vouch gate --compiled-artifact refund-window.lpxvca всё равно требуют точные внешние исходник и вход потребителя, политику доверия, аутентификацию и текущее согласие запуска tree с записью смысла. До запуска проверенной виртуальной машины Native заново выводит Core IR и байткод из исходника. Контейнер, его хэши и отчёты команд inspect и validate, а также результат виртуальной машины не могут пропустить ни одну живую проверку Ваучера или заменить свидетельство, которое создают эти проверки.

Куда дальше

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

Байткод и виртуальная машина Rust · Сборка заранее скомпилированного продукта · Native CLI