Песочница

Сборка и проверка Core IR

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

Сборка без выполнения

Core IR представляет собой промежуточную форму, в которую переводится программа до любого выполнения. Начните с файла исходника, например refund-window.lspx.

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

Команда читает и нормализует точный исходник, разрешает имена в ячейки, отмечает хвостовые вызовы, записывает захваты замыканий и создаёт байты lispex.core-ir/v1 в единственном допустимом виде. Правило при этом не вычисляется. JSON-отчёт содержит хэши исходника, Core IR и реестра примитивов, семантический профиль и счётчики, удерживаемые в заданных пределах.

Путь назначения должен быть новым, и существующий артефакт не перезаписывается. В конвейере - означает стандартный ввод или вывод.

SH
cat refund-window.lspx |
  lispex core-ir build --source - --out - >refund-window.lpxir

С --out - stdout содержит только байты артефакта в этом единственном допустимом виде, а диагностика остаётся в stderr.

Проверка перед хранением или сравнением

SH
lispex core-ir validate --ir refund-window.lpxir

Проверяются предел байтов, структура JSON, фиксированные идентификаторы schema/profile/registry, позиции исходника, разрешённые ссылки, захваты, хвостовые позиции, текст datum в заданном виде, порядок и точное повторное кодирование. Даже безобидное изменение пробелов или порядка полей отклоняется, потому что у одного смыслового артефакта есть только одно допустимое представление.

Просмотр разрешённого смысла

SH
lispex core-ir inspect --ir refund-window.lpxir

Отчёт показывает следующее.

  • source_sha256 точных входных байтов исходника
  • core_ir_sha256 всего артефакта
  • числа globals, requirements, roots, nodes, bindings и functions
  • разрешённые глобальные ячейки и исходные идентификаторы примитивов
  • требуемые явные входы среды
  • читаемые корни нормализованного Core с позициями исходника

В отчёте явно указаны execution: "not-run" и authority: "integrity-only". Он полезен для ревью и детерминированного сравнения, но не заменяет артефакт и не исполняется.

Переход к проверенному байткоду

Сам Core IR остаётся невыполняемым. Когда Native должен вместо этого выполнять скомпилированный байткод, переведите строго проверенный артефакт в байткод.

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

Отдельный lispex.bytecode/v1 имеет собственные двоичную идентичность, проверяющий модуль, модель ресурсов и виртуальную машину Rust. Он не превращает отчёт команды inspect для Core IR в исполняемый вход.

Core IR и Meaning Graph различаются

lispex lower без параметра версии по-прежнему создаёт именной csk.meaning-graph/v0, а diff-receipt сохраняет замороженный путь квитанции v0. Явный lower --graph-version v1 проецирует проверенный Core IR в разрешённый csk.meaning-graph/v1; eval-graph выбирает версию по тегу, а meaning-diff создаёт отдельный отчёт v1, не являющийся квитанцией. Core IR остаётся единственным источником разрешённых ячеек, захватов и хвостовых позиций. Проекция не разрешает имена повторно и не переносит графы или квитанции v0. В v1.19 эти команды Meaning v1 доступны только в Native и не заявляют полный язык или полномочия Ваучера.

Выбор продукта

Команды Core IR и байткода доступны в Native. npm, открытая сборка WebAssembly и Песочница не принимают байты Core IR или байткода и не содержат ни читателя на JavaScript, ни виртуальной машины. Используйте на них только документированные возможности исходника, изображений и Ваучера.

Частая ошибка

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

Куда дальше

Точный формат описан в справочнике контракта, а автоматизацию и коды завершения описывает справочник CLI.

Запуск проверенного байткода · Контракт Core IR · Native CLI

Сборка и проверка Core IR · Лиспекс