Детерминизм в Лиспексе — конкретный контракт исполнения. Сравнение называет точные байты исходного кода и ввода, исполнитель, профиль ресурсов и наблюдаемые каналы. Повтор этого набора даёт тот же результат, stdout, предупреждения и запись диагностики.
Профили ресурсов
Каждый маршрут исполнения публикует значения ввода, вывода, переходов, управления и выделения. Отчёт записывает выбранные значения и расход запуска. Программа работает до завершения, условия runtime или достижения одного из этих значений.
| Поле контракта | Что оно фиксирует | Наблюдаемый результат |
|---|---|---|
| исходник и ввод | точные байты программы и запроса | значение или диагностика runtime |
| исполнитель и профиль | именованная поддержка языка и значения ресурсов | конечный статус и отчёт ресурсов |
| набор наблюдений | stdout, предупреждения, значения и диагностика | точный порядок каналов |
| корпус и базовая линия | входы, выбранные до запуска | согласие, расхождение или несравнимость |
| идентичность артефакта | точные байты продукта запуска | квитанция или отпечаток движка |
Время по часам записывается как эксплуатационное измерение. Семантические отчёты ресурсов используют счётчики выбранного маршрута исполнения.
Выбор маршрута исполнения
Эталонный интерпретатор и проверенная Rust VM выполняют доверенный исходный код
для авторской работы, локальной автоматизации и сравнения маршрутов. lispex embed выполняет полученные правила решений с заданными значениями работы и
памяти в новом экземпляре.
Квитанция сравнения называет свой корпус, исполнители, профили и наблюдения. Сбои движка записывают конечный статус отдельно от гостевых значений и диагностики runtime.
Куда дальше
Поведение продолжений описано в разделе о хвостовых вызовах, а процесс приложения с управлением ресурсами — в руководстве embed.