Эталонные программы Core
Это критерии развития языка. Первый числовой пример уже доступен как
examples/rtp_fields.liza; полные приложения ещё не реализованы.
Все три примера сначала работают на входных значениях без сети и I/O.
Парсер RTP-заголовка
На числовом этапе — извлечение полей из уже переданных целых слов:
маски, сдвиги, ширина и порядок байтов. После массивов — разбор буфера
с проверкой длины до каждого доступа. После вариантов и Result —
типизированные ошибки разбора вместо аварийного завершения.
Набор случаев должен включать короткие и усечённые входы, некорректную версию, переменное число источников, расширение заголовка и padding. Точный набор поддерживаемых полей и правила формата фиксируются перед реализацией парсера.
Возврат диапазона payload не должен копировать его содержимое. До реализации нужно определить время жизни и права доступа к входному буферу. Возврат пары индексов сам по себе ещё не доказывает безопасность доступа к исходным данным.
Сравнение с C проводится на одинаковых входах, с одинаковой поддержкой формата, проверками границ и обработкой ошибок. Сравниваются размер исходника, количество копий и аллокаций, корректность и время исполнения. Краткость не заменяет безопасность; отсутствие копий подтверждается отдельно.
Таблица соединений
Начать с локальной таблицы значений: добавить запись, найти, заменить значение, удалить. Внешние идентификаторы представлены данными, а не адресами объектов. Это проверяет структуры, коллекции и локальное изменение привязок.
Проверить пустую и заполненную таблицы, повторный ключ, отсутствующий ключ,
замену и удаление, независимость скопированных значений.
После появления Handle добавить проверку устаревшего идентификатора при
повторном использовании слота; после ownership — время жизни ресурсов.
Ранний пример не должен незаметно вводить разделяемые изменяемые ссылки.
Конечный автомат узла кластера
Состояние и событие подаются на вход чистой функции перехода. Результат — новое состояние, описания требуемых действий либо значение ошибки. Описание действия ещё не исполняет I/O.
Сначала использовать доступные значения и условия; после вариантов —
типизированные состояния/события, match и Result.
Проверить допустимые и недопустимые переходы, тайм-ауты как входные события,
повторные события и исчерпывающее покрытие вариантов.
Это пример выразительности логики языка, а не готовый алгоритм консенсуса или гарантия отказоустойчивости. Реальная сеть и исполнение действий добавляются только после модели эффектов.