Этот справочник поможет выбрать вычислитель и прочитать его файлы результатов. Здесь перечислены точные идентификаторы, поля ресурсов и жизненный цикл для встраивания через Native. Оба вычислителя считают работу и память и останавливаются на пределе, поэтому их называют вычислителями с управлением ресурсами.
Сначала прочитайте исход
В полном примере встраивания правило решения
получает целое число 14. 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-complete | complete |
| Ошибка выполнения | semantic-fault | semantic-fault |
| Остановка по ресурсам | semantic-exhausted | exhausted |
| Запрос отклонён | request-refusal | request-refusal |
| Сбой движка | engine-fault | engine-fault |
Выберите один из двух вычислителей
Вычислитель решений принимает набор операций из своего пакета. Полный
вычислитель предоставляет все 205 примитивных процедур. В его реестре нет
процедур со статусом Deferred. Native выбирает его явно через embed full.
| Свойство | Вычислитель решений | Полный вычислитель |
|---|---|---|
| Начало команды | lispex embed | lispex embed full |
| Профиль языка | lispex/r7rs-rule-embedded-core/1 | lispex/r7rs-rule-current-profile-bounded/1 |
| Модель работы и выделения ресурсов | lispex-vm-meter/1 | lispex-full-vm-meter/1 |
| Заголовок файла | LPXART01 | LPXFAR01 |
| Начальное число страниц памяти WASM | 18 | 19 |
| Максимальное число страниц | 256 | 256 |
Идентификатор полного компонента — lispex-evaluator/rust-vm-current-profile/1.
Манифест пакета перечисляет файлы и их метаданные. Он идентифицирует вычислитель
по точному SHA-256 WASM. Этот хеш обозначает одни и те же байты в архивах
выпуска и приложениях.
Оба вычислителя используют следующие форматы v1.
| Формат | Идентификатор |
|---|---|
| Кодек значений, их двоичное представление | lispex.embed-value/v1 |
| Запись событий вычисления в их порядке | lispex.embed-transcript/v1 |
| Двоичный интерфейс вызовов WASM | lispex.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, манифест, тестовые данные, материалы для проверки и перечень программных компонентов. Они включают решения по обработке зависимостей, сведения о безопасности и граф записей выпусков, куда можно только добавлять записи. Сохранённые байты вычислителя позволяют читать исторические записи.
Вызывающее приложение сохраняет исходник и управляет сетевым доступом, деловой политикой, актуальностью, защитой от повторного использования и внешними действиями. Обмен решениями передаёт подписанные записи издателя и применяет политику получателя. Ваучер Лиспекса аутентифицирует подписанные данные и проверяет локальное условие допуска действия. Компоненты Топаза сохраняют собственные идентификаторы компилятора и проверок допуска.