Песочница

Повторяемые результаты и пределы выполнения

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

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

Как прочитать остановку по лимиту

В примере встраивания вычислитель решений выполняет (if (< input 15) "allow" "deny") с целым числом 14 на входе. Правило возвращает "allow". JSON с результатом проверки содержит такие поля.

JSON
{
  "category": "semantic-complete",
  "code": "complete"
}

В отдельном файле лимитов вычисления задайте eval_work равным 0 и снова выполните подготовленное правило. Новая запись содержит такие поля.

JSON
{
  "category": "semantic-exhausted",
  "code": "eval_work"
}

Второй запуск останавливается по лимиту работы. Вместо ответа правила он записывает исход по ресурсам. Обе команды embed evaluate завершаются с кодом 0, поскольку успешно создают файл результата. Различайте исходы по полям category и code. В руководстве приведены все файлы и команды.

Сохраните условия выполнения

Детерминизм означает повторяемость при одинаковых заданных условиях выполнения. Для повторного запуска или сравнения сохраните следующие сведения.

Что сохранитьЧто записать
Исходник и вводТочные отправленные байты
ВычислительТочный исполняемый файл или файл WASM и его идентификатор
Профиль языкаПоддерживаемые формы и процедуры
Профиль ресурсовВыбранные лимиты и версию счётчика расхода ресурсов
Каналы выводаЗначения, stdout, предупреждения, диагностику и их порядок

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

Для отчёта сравнения также сохраните выбранные до запуска входные данные и ожидаемые результаты. В отчёте указаны случаи, исполнители, профили и каналы. Совпадение, расхождение или невозможность сравнения относятся к этому набору.

Выберите лимиты для способа выполнения

Профиль ресурсов объединяет лимиты одного способа выполнения. В зависимости от способа это объём ввода и вывода, шаги вычисления, глубина управления и объём выделяемых ресурсов. Программа завершается, сообщает об ошибке выполнения или останавливается перед превышением лимита.

Эталонный интерпретатор и ВМ Лиспекса выполняют доверенный исходник для разработки правил, локальной автоматизации и сравнений. Вычислители embed выполняют переданные правила с явными лимитами работы и выделения ресурсов. Каждая подготовка или вычисление начинается в новом экземпляре. Эти две операции используют отдельные лимиты.

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

Правильные хвостовые вызовы · Справочник вычислителя