Вы можете повторить правило при одинаковых условиях и сравнить результат, вывод, предупреждения и диагностику. Сохраните исходник, ввод, вычислитель, профиль языка и лимиты ресурсов. Одинаковый результат при одинаковых условиях называется детерминизмом, а набор лимитов называется профилем ресурсов.
Как прочитать остановку по лимиту
В примере встраивания вычислитель решений
выполняет (if (< input 15) "allow" "deny") с целым числом 14 на входе.
Правило возвращает "allow". JSON с результатом проверки содержит такие поля.
{
"category": "semantic-complete",
"code": "complete"
}В отдельном файле лимитов вычисления задайте eval_work равным 0 и снова
выполните подготовленное правило. Новая запись содержит такие поля.
{
"category": "semantic-exhausted",
"code": "eval_work"
}Второй запуск останавливается по лимиту работы. Вместо ответа правила он
записывает исход по ресурсам. Обе команды embed evaluate завершаются с кодом
0, поскольку успешно создают файл результата. Различайте исходы по полям
category и code. В руководстве приведены все файлы и команды.
Сохраните условия выполнения
Детерминизм означает повторяемость при одинаковых заданных условиях выполнения. Для повторного запуска или сравнения сохраните следующие сведения.
| Что сохранить | Что записать |
|---|---|
| Исходник и ввод | Точные отправленные байты |
| Вычислитель | Точный исполняемый файл или файл WASM и его идентификатор |
| Профиль языка | Поддерживаемые формы и процедуры |
| Профиль ресурсов | Выбранные лимиты и версию счётчика расхода ресурсов |
| Каналы вывода | Значения, stdout, предупреждения, диагностику и их порядок |
Счётчик расхода ресурсов измеряет работу по правилам выбранного вычислителя. Время по часам показывает длительность запуска. При смене реализации среды выполнения число единиц работы может измениться. Сравнивайте точный расход в пределах одной реализации.
Для отчёта сравнения также сохраните выбранные до запуска входные данные и ожидаемые результаты. В отчёте указаны случаи, исполнители, профили и каналы. Совпадение, расхождение или невозможность сравнения относятся к этому набору.
Выберите лимиты для способа выполнения
Профиль ресурсов объединяет лимиты одного способа выполнения. В зависимости от способа это объём ввода и вывода, шаги вычисления, глубина управления и объём выделяемых ресурсов. Программа завершается, сообщает об ошибке выполнения или останавливается перед превышением лимита.
Эталонный интерпретатор и ВМ Лиспекса выполняют доверенный
исходник для разработки правил, локальной автоматизации и сравнений.
Вычислители embed выполняют переданные правила с явными лимитами работы и
выделения ресурсов. Каждая подготовка или вычисление начинается в новом
экземпляре. Эти две операции используют отдельные лимиты.
Отличайте сбои движка и эксплуатационные прерывания от значения правила, ошибки выполнения и исхода по ресурсам. Вычислитель записывает их как статус движка.