Песочница

Справочник вычислителей с пределами выполнения

Идентификаторы вычислителей, классы исходов, поля ресурсов, интерфейс WASM и сохранённые записи.

Этот справочник поможет выбрать вычислитель и прочитать его файлы результатов. Здесь перечислены точные идентификаторы, поля ресурсов и жизненный цикл для встраивания через Native. Оба вычислителя считают работу и память и останавливаются на пределе, поэтому их называют вычислителями с управлением ресурсами.

Сначала прочитайте исход

В полном примере встраивания правило решения получает целое число 14. JSON с результатом проверки содержит такие поля.

JSON
{
  "category": "semantic-complete",
  "code": "complete",
  "semantic_profile_id": "lispex/r7rs-rule-embedded-core/1"
}

При eval_work, равном 0, то же подготовленное правило даёт category: "semantic-exhausted" и code: "eval_work". Файл результата записывает остановку по ресурсам. CLI завершается с кодом 0, если успешно записывает любой из этих исходов.

Исход вычисленияКатегория вычислителя решенийКатегория полного вычислителя
Завершеноsemantic-completecomplete
Ошибка выполненияsemantic-faultsemantic-fault
Остановка по ресурсамsemantic-exhaustedexhausted
Запрос отклонёнrequest-refusalrequest-refusal
Сбой движкаengine-faultengine-fault

Выберите один из двух вычислителей

Вычислитель решений принимает набор операций из своего пакета. Полный вычислитель предоставляет все 205 примитивных процедур. В его реестре нет процедур со статусом Deferred. Native выбирает его явно через embed full.

СвойствоВычислитель решенийПолный вычислитель
Начало командыlispex embedlispex embed full
Профиль языкаlispex/r7rs-rule-embedded-core/1lispex/r7rs-rule-current-profile-bounded/1
Модель работы и выделения ресурсовlispex-vm-meter/1lispex-full-vm-meter/1
Заголовок файлаLPXART01LPXFAR01
Начальное число страниц памяти WASM1819
Максимальное число страниц256256

Идентификатор полного компонента — lispex-evaluator/rust-vm-current-profile/1. Манифест пакета перечисляет файлы и их метаданные. Он идентифицирует вычислитель по точному SHA-256 WASM. Этот хеш обозначает одни и те же байты в архивах выпуска и приложениях.

Оба вычислителя используют следующие форматы v1.

ФорматИдентификатор
Кодек значений, их двоичное представлениеlispex.embed-value/v1
Запись событий вычисления в их порядкеlispex.embed-transcript/v1
Двоичный интерфейс вызовов WASMlispex.embed-wasm-abi/v1
Переносимая основная запись одного запускаlispex.embed-receipt-core/v1

Разделите лимиты подготовки и вычисления

Оба файла лимитов CLI используют logical_allocation. Двоичный запрос различает prepare_logical_allocation и eval_logical_allocation.

Поле запроса подготовкиРесурс
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Байты закодированного результата

Кадр продолжения хранит действия, оставшиеся после вызова. Правильный хвостовой вызов повторно использует текущее семантическое продолжение.

Каждая ресурсная модель задаёт стоимость работы и единицы логического выделения. Вычислитель начисляет стоимость до эффекта. Он использует весь диапазон беззнакового 64-битного целого и останавливается перед первым резервированием сверх лимита. Условия повторяемости описаны в разделе об условиях выполнения.

Вызовите интерфейс WASM

Каждый модуль имеет ноль импортов и одну память. Он экспортирует функции выделения, освобождения, версии интерфейса, подготовки и вычисления. Стандартные глобальные значения обозначают границы памяти. Запросы кодируют длины полей и беззнаковые целые в порядке big-endian, от старшего байта к младшему. Лимиты ресурсов передаёт вызывающая сторона.

Каждая подготовка или вычисление создаёт новые Wasmtime Store и Instance. Память, распределитель, куча программы, хранилище символов, изменяемые ячейки и продолжения создаются заново. Счётчик работы, запись событий и буфер результата также принадлежат одной операции. Приложение может совместно использовать неизменяемый скомпилированный Module с тем же точным идентификатором WASM.

Сохраните идентификаторы и результаты

Переносимая основная запись связывает отправленный исходник, канонический исходник, семантическое правило и канонический ввод. Она также связывает лимиты ресурсов, запрос, файл вычислителя, вычисление, запись событий и результат. Каноническая форма означает единственное установленное байтовое представление. Конструкция lispex.evaluation-identity/v1 хеширует поля с указанием длины по алгоритму SHA-256.

Конечный классСохранённые сведения
Детерминированный семантический исходРезультат, запись событий и переносимая основная запись
Детерминированный отказ запросаОтказ, запись событий и переносимая основная запись
Эксплуатационное прерываниеКонечный статус движка
Сбой движкаКонечный статус движка и диагностика

Издатели могут подписывать готовые байты основной записи в процессах обмена решениями и Ваучера Лиспекса. Подпись и разрешение действия приложением — разные этапы.

Используйте каталог решения Native

Руководство по решающим правилам содержит полный пример с rule run, rule inspect, rule verify и rule replay. rule run принимает исходник и файл строгого JSON, а также отдельные лимиты подготовки и вычисления.

Ввод JSONЗначение Лиспекса
ОбъектЗапись
МассивВектор
Строка, логическое значение, точное целоеСоответствующий вид значения
nullПустой список

Завершённый запуск создаёт пять файлов в новом выходном каталоге.

ФайлСодержимое
prepared.lpxembedПодготовленное правило
canonical-input.lpxvalueВвод в установленной двоичной кодировке
result.lpxembedИсход и его связь с запросом
receipt-core.lpxreceiptПереносимая основная запись
summary.jsonЧитаемое описание этих файлов в JSON

rule inspect выводит сводку каталога. rule verify проверяет состав файлов и связи между их байтами. rule replay выполняет записанный запрос в новом экземпляре и проверяет результат и переносимую основную запись.

Определите обязанности приложения

Native включает точные байты вычислителя. Выпуски также содержат пакет WASM, манифест, тестовые данные, материалы для проверки и перечень программных компонентов. Они включают решения по обработке зависимостей, сведения о безопасности и граф записей выпусков, куда можно только добавлять записи. Сохранённые байты вычислителя позволяют читать исторические записи.

Вызывающее приложение сохраняет исходник и управляет сетевым доступом, деловой политикой, актуальностью, защитой от повторного использования и внешними действиями. Обмен решениями передаёт подписанные записи издателя и применяет политику получателя. Ваучер Лиспекса аутентифицирует подписанные данные и проверяет локальное условие допуска действия. Компоненты Топаза сохраняют собственные идентификаторы компилятора и проверок допуска.