Песочница

Контракт Core IR

Канонический контракт `lispex.core-ir/v1` записывает разрешённый смысл всего текущего профиля в одном ограниченном и строго проверяемом представлении байтов.

Фиксированные идентификаторы

ОсьИдентификатор
схема артефактаlispex.core-ir/v1
семантический профильlispex-profile-1.5
реестр примитивовlispex.primitive-registry/v1
модель стоимостиlispex.core-ir-cost/v1
семейство производителяlispex-rust-core-ir/v1
домен хэша артефактаlispex/core-ir-hash/v1
домен хэша реестраlispex/primitive-registry-hash/v1

Реестр назначает каждому из 205 исполняемых встроенных имён стабильный числовой ID. Скрытый intrinsic нормализатора ссылается прямо на ID примитива. Видимый в исходнике builtin остаётся обычной изменяемой глобальной ячейкой, изначально содержащей этот ID, поэтому затенение и переопределение верхнего уровня сохраняют нынешний смысл.

От исходника к разрешённому смыслу

точные байты исходника
  → reader
  → гигиенически нормализованный Core
  → разрешение bindings и closures
  → канонические байты Core IR

Артефакт удаляет синтаксический сахар и записывает:

  • идентификаторы лексических и глобальных ячеек вместо поиска по имени;
  • фиксированные и rest-параметры, let, letrec, внутренние определения и forwarding-ячейки, активируемые динамическим определением;
  • общие изменяемые захваты замыканий, включая транзитивные;
  • обычные и хвостовые вызовы без повторного вывода хвостовой позиции;
  • контексты нуля, одного и нескольких значений;
  • границы guard, исключений, continuations и dynamic-wind;
  • канонические literal datum и позиции исходника с единицы;
  • явные требования к входам среды;
  • идентификаторы реестра примитивов и модели стоимости.

Аудиторская проекция обязана точно восстановить байты нормализованного Canonical Core до lowering. Это свидетельство сохранения внутри одной линии Rust, а не независимая реализация и не доказательство эквивалентности.

Одно допустимое кодирование

Артефакт — канонический UTF-8 JSON с фиксированным порядком полей, тегированными массивами, минимальными неотрицательными десятичными числами, точными строками Unicode и ровно одним завершающим LF. Globals, requirements, captures, bindings и functions подчиняются детерминированному порядку и непрерывности.

Строгий reader отклоняет повторные, отсутствующие, неожиданные или переставленные поля; альтернативную запись чисел и datum; неизвестные теги и ID; повреждённые ссылки, захваты и хвостовые позиции; неверные координаты; лишние байты и любой артефакт, который не перекодируется побайтно.

Пределы проверяются до неограниченной работы:

ПределМаксимум
входной исходник4 MiB
артефакт Core IR16 MiB
узлы выражений100 000
bindings100 000
functions100 000
globals100 000
структурная глубина1 024

source_sha256 — существующий разделённый доменом идентификатор точных байтов исходника. core_ir_sha256 — разделённый доменом идентификатор полного канонического артефакта. Их нельзя заменять обычным хэшем файла или хэшем удобного для чтения inspection JSON.

Отчёты команд Native

  • core-ir build при записи именованного артефакта выдаёт lispex.core-ir-build/v1; с --out - выдаются только байты артефакта.
  • core-ir validate после строгого чтения и повторного кодирования выдаёт lispex.core-ir-validation/v1.
  • core-ir inspect выдаёт lispex.core-ir-inspection/v1 с идентификаторами, счётчиками, globals, requirements и читаемыми нормализованными корнями.
  • Ошибка использования завершается кодом 2, ошибка исходника или проверки — кодом 1, превышение предела либо ошибка ввода-вывода и публикации — кодом 3.

Все три команды доступны только в Native и ничего не исполняют. npm, открытый WASM и Песочница не предоставляют reader или команд Core IR.

Сосуществование с Meaning Graph

Core IR — не новое имя csk.meaning-graph/v0. Meaning Graph остаётся именным форматом проверяемого подмножества для lower, eval-graph и diff-receipt. Core IR охватывает весь текущий нормализованный профиль и содержит разрешённые ячейки и сведения о замыканиях. Существующие байты, хэши, квитанции и утверждения Meaning Graph не меняются.

Граница полномочий

Core IR — материал компиляции класса integrity-only. Канонические байты, успешное чтение, inspection-отчёт или совпавший хэш не устанавливают авторство, происхождение, доверие, свежесть, намерение запроса, выполнение, правильность или grant решения. Команды Core IR не входят в Vouch, а отчёт не может повысить себя до свидетельства Vouch или полномочия gate.

Куда дальше

Короткий процесс команд описан в руководстве, а поверхности продукта сравниваются на странице сред выполнения.

Сборка и проверка Core IR · Среды выполнения и интерпретаторы