Песочница

Контракт ограниченного вычислителя

Точный restricted profile, модель работы и выделения, import-free Wasm ABI, категории portable core, хранение и границы поддержки.

Эта страница описывает v1.13. Проверьте, является ли она текущим руководством: /version.json

Зафиксированный набор контрактов

КонтрактИдентификатор
семантический профильlispex/r7rs-rule-embedded-core/1
модель работы и логического выделенияlispex-vm-meter/1
codec значенийlispex.embed-value/v1
transcriptlispex.embed-transcript/v1
Wasm ABIlispex.embed-wasm-abi/v1
portable corelispex.embed-receipt-core/v1

Provider — точные Wasm-байты из manifest bundle, а не произвольная пересборка или строка версии Lispex. Пересборка наследует гарантии только при идентичном SHA-256.

ABI и жизненный цикл

У модуля ноль imports, одна memory с 18 начальными и 256 максимальными страницами и только функции allocation, deallocation, ABI version, prepare и evaluate вместе со стандартными globals границ memory. Запросы ограничены, length-delimited и используют big-endian.

Каждая операция получает новые Wasmtime Store, Instance, memory, allocator, guest heap, interner, cells, continuations, meter, transcript и result buffer. Неизменяемый compiled Module можно разделять только по точному SHA-256 Wasm. Instance pooling не допускается.

Раздельные области ресурсов

Подготовка владеет 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.

Work — версионированный детерминированный тариф, а не CPU time. Logical allocation задаётся моделью, а не размером объекта Rust, capacity allocator или шириной указателя. Charge происходит до эффекта, не возвращается, использует полный u64 и сообщает первую ось, чья следующая reservation превысила лимит. Proper tail calls не расходуют non-tail semantic frames.

Использованный и оставшийся бюджет не входит в portable core. Изменение тарифа, оси, единицы, порядка, overflow, depth или правила отказа требует нового model ID; бюджеты между моделями не переводятся.

Identity и core

Core разделяет identities точных представленных байтов, canonical source, семантического правила, canonical input, resource contract, запроса, артефакта вычислителя, вычисления, transcript и результата. Hash framing следует length-delimited SHA-256 контракту lispex.evaluation-identity/v1.

Core получают только детерминированный семантический исход и детерминированный отказ запроса. Операционное прерывание и engine fault не могут иметь core. Издатель может подписать готовые байты core вне вычислителя, но envelope не меняет категорию.

Ограниченный профиль

Первый профиль допускает только закрытый набор операций, проверенный bundle. Обычный полный tree-интерпретатор lispex-profile-1.5 остаётся отдельным. Неподдерживаемые формы и primitives отклоняются до VM. Provider не вызывает tree, продукты маршрутов Rust, Topaz, AOT, старый вычислитель или fallback.

Распространение и хранение

Native содержит точные байты provider. Релиз также публикует Wasm bundle, manifest, golden vectors, материалы verifier, SBOM/dependency dispositions, safety evidence и append-only release-DAG records. Обновление безопасности создаёт новую artifact identity и admission. Старые receipts проверяются сохранёнными старыми байтами и контрактами, хотя такой artifact может быть запрещён для новых adversarial evaluations.

Evaluator component не имеет Topaz build dependency. Независимый AOT component сохраняет собственный точный pin компилятора Topaz. Consumer Topaz должен закрепить digest этого evaluator component в отдельном последующем релизе.

Что не гарантируется

Контракт не обеспечивает конфиденциальность, удостоверение издателя, полномочия Vouch, правильность правила, provenance, freshness, разрешение внешнего действия, сокрытие времени, изоляцию cache или устойчивость к microarchitectural side channels. Browser и второй embedded engine не входят в первый выпуск.

Дальше

Native workflow показан в Вычислении недоверенного правила.