Фиксированные идентификаторы
| Ось | Идентификатор |
|---|---|
| схема артефакта | 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. Отдельные backend добавляют собственные идентификаторы реализации и наблюдения исполнения.
Одно допустимое кодирование
Артефакт представляет собой канонический 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 содержит разделённый доменом
идентификатор полного канонического артефакта. Потребители используют эти
контрактные поля для идентификации исходника и артефакта.
Отчёты команд 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 и Песочница владеют выполнением исходника через эталонный runtime.
Сосуществование с Meaning Graph
Core IR владеет разрешением имён, захватами замыканий, хвостовыми позициями и
нормализованным полным профилем. lower без параметра версии и все вызовы
diff-receipt сохраняют контракт v0. Явный lower --graph-version v1
проецирует проверенный Core IR в csk.meaning-graph/v1, eval-graph выбирает
путь по тегу графа, а meaning-diff пишет отдельный отчёт Meaning. В v1.19
этими командами владеет Native. Ваучер повторно получает Core IR из точного
исходника, прошедшего аутентификацию.
Роль продукта
Core IR является материалом компиляции класса integrity-only. Канонические
байты, строгое чтение, inspection и разделённый доменом идентификатор создают
разрешённый артефакт для Meaning Graph, компиляции байткода, VM и связанного с
исходником compiled-процесса Ваучера. Политика получателя и текущее повторное
выполнение добавляют аутентификацию и контекст решения.
Куда дальше
Короткий процесс команд описан в руководстве, а места, где Лиспекс работает, сравниваются на странице сред выполнения.
Сборка и проверка Core IR · Среды выполнения и интерпретаторы