Набор контрактов
| Контракт | Идентификатор |
|---|---|
| профиль решений | lispex/r7rs-rule-embedded-core/1 |
| модель работы и логического выделения | lispex-vm-meter/1 |
| полный профиль языка | lispex/r7rs-rule-current-profile-bounded/1 |
| полная модель работы | lispex-full-vm-meter/1 |
| кодек значений | lispex.embed-value/v1 |
| transcript | lispex.embed-transcript/v1 |
| интерфейс WebAssembly | lispex.embed-wasm-abi/v1 |
| portable core | lispex.embed-receipt-core/v1 |
Манифест пакета идентифицирует provider по точному SHA-256 WebAssembly. Эта идентичность сопровождает байты в архивах выпуска и у потребителей.
Два компонента вычислителя
Компонент решений выполняет закрытый набор операций из своего пакета. Full
component выполняет все 205 сгенерированных строк примитивов с нулём Deferred
под идентичностью lispex-evaluator/rust-vm-current-profile/1. Full-артефакты
используют конверт LPXFAR01, а артефакты решений — LPXART01.
Оба компонента сохраняют общие контракты v1 интерфейса, кодека значений,
transcript и portable core. Native выбирает Full component явными командами
embed full.
Интерфейс и жизненный цикл
Модуль имеет ноль импортов, одну memory с 18 начальными и 256 максимальными страницами и экспортирует функции allocation, deallocation, interface-version, prepare и evaluate со стандартными memory boundary globals. Запросы используют length-delimited big-endian fields и значения байтов, заданные вызывающей стороной.
Каждая операция создаёт новые Wasmtime Store, Instance, memory, allocator, guest heap, interner, cells, continuations, work counter, transcript и result buffer. Неизменяемый compiled Module можно разделять по точной идентичности WebAssembly.
Области ресурсов
Подготовка владеет raw_source_bytes, prepare_work,
prepare_logical_allocation и syntax_depth. Вычисление владеет
canonical_input_bytes, eval_work, eval_logical_allocation,
semantic_frames, traversal_depth, output_bytes, diagnostic_bytes,
transcript_bytes, transcript_events и result_bytes.
Работа использует версионированный детерминированный тариф. Логическое
выделение использует единицы модели. Стоимость начисляется до эффекта, использует
полный u64 и останавливается на первом резервировании сверх выбранного
значения. Правильные хвостовые вызовы повторно используют текущее семантическое
продолжение.
Идентичность и результаты
Portable core связывает точный отправленный исходник, канонический исходник,
семантическое правило, канонический ввод, контракт ресурсов, запрос, артефакт
вычислителя, вычисление, transcript и результат через length-delimited SHA-256
конструкцию lispex.evaluation-identity/v1.
| Конечный класс | Запись продукта |
|---|---|
| детерминированный семантический исход | результат, transcript и portable core |
| детерминированный отказ запроса | отказ, transcript и portable core |
| эксплуатационное прерывание | конечный статус движка |
| сбой движка | конечный статус движка и диагностика |
Издатель может подписать готовые байты portable core в процессах обмена решениями и Ваучера.
Каталог решения Native
Процесс Native выглядит так:
rule run -> inspect -> verify -> replayrule run принимает точный исходник и строгие JSON-файлы вместе с отдельными
значениями подготовки и вычисления. Объекты JSON становятся records, массивы —
vectors, строки, логические значения и exact integers сохраняют виды значений,
а null становится пустым списком.
Завершённый запуск создаёт пять файлов в новом выходном каталоге.
| Член | Роль |
|---|---|
prepared.lpxembed | точный подготовленный артефакт правила |
canonical-input.lpxvalue | канонический ввод |
result.lpxembed | детерминированный исход и привязка запроса |
receipt-core.lpxreceipt | portable core |
summary.json | читаемая проекция канонических членов |
inspect сводит каталог, verify проверяет набор членов и привязки байтов, а
replay вычисляет записанный запрос в новом экземпляре и сопоставляет результат
и portable core.
Поставка и владение продуктами
Native содержит точные байты provider. Выпуск также публикует пакет WebAssembly, манифест, vectors, материалы verifier, состав программного обеспечения, dependency dispositions, safety evidence и append-only записи release DAG. Сохранённые байты provider поддерживают чтение исторических квитанций.
Хост-приложение владеет хранением исходника, сетевым доступом, деловой политикой, актуальностью, предотвращением повторного использования и внешними действиями. Обмен решениями владеет конвертами издателя и политикой получателя. Ваучер владеет подписанным свидетельством и локальным шлюзом решения. Компоненты Топаза сохраняют свои идентификаторы compiler и admission.
Куда дальше
Процесс Native описан в руководстве Встраивание Лиспекса.