Фиксированные идентификаторы
| Ось | Идентификатор |
|---|---|
| схема артефакта | 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, исключений, продолжений и dynamic-wind
- канонические literal datum и позиции исходника с единицы
- явные требования к входам среды
- идентификаторы реестра примитивов и модели стоимости
Аудиторская проекция обязана точно восстановить байты нормализованного Canonical Core до lowering. Это свидетельство сохранения внутри одной линии Rust, а не независимая реализация и не доказательство эквивалентности.
Одно допустимое кодирование
Артефакт представляет собой канонический UTF-8 JSON с фиксированным порядком полей, тегированными массивами, минимальными неотрицательными десятичными числами, точными строками Unicode и ровно одним завершающим LF. Globals, requirements, captures, bindings и functions подчиняются детерминированному порядку и непрерывности.
Строгий считыватель отклоняет повторные, отсутствующие, неожиданные или переставленные поля. Он также отклоняет альтернативную запись чисел и datum, неизвестные теги и ID, повреждённые ссылки, захваты и хвостовые позиции, неверные координаты, лишние байты и любой артефакт, который не перекодируется побайтно.
Пределы проверяются до начала любой неограниченной работы.
| Предел | Максимум |
|---|---|
| входной исходник | 4 MiB |
| артефакт Core IR | 16 MiB |
| узлы выражений | 100 000 |
| bindings | 100 000 |
| functions | 100 000 |
| globals | 100 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, открытый WebAssembly и Песочница не предоставляют ни считыватель 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-отчёт или совпавший хэш не устанавливают авторство,
происхождение, доверие, свежесть, намерение запроса, выполнение, правильность
или разрешение решения. Команды Core IR не входят в Ваучер, а их отчёты не могут
стать свидетельством Ваучера или полномочием проверки допуска.
Куда дальше
Короткий процесс команд описан в руководстве, а места, где Лиспекс работает, сравниваются на странице сред выполнения.
Сборка и проверка Core IR · Среды выполнения и интерпретаторы