Перейти к содержанию

Эталонные программы Core

Это критерии развития языка. Первый числовой пример уже доступен как examples/rtp_fields.liza; полные приложения ещё не реализованы. Все три примера сначала работают на входных значениях без сети и I/O.

Парсер RTP-заголовка

На числовом этапе — извлечение полей из уже переданных целых слов: маски, сдвиги, ширина и порядок байтов. После массивов — разбор буфера с проверкой длины до каждого доступа. После вариантов и Result — типизированные ошибки разбора вместо аварийного завершения.

Набор случаев должен включать короткие и усечённые входы, некорректную версию, переменное число источников, расширение заголовка и padding. Точный набор поддерживаемых полей и правила формата фиксируются перед реализацией парсера.

Возврат диапазона payload не должен копировать его содержимое. До реализации нужно определить время жизни и права доступа к входному буферу. Возврат пары индексов сам по себе ещё не доказывает безопасность доступа к исходным данным.

Сравнение с C проводится на одинаковых входах, с одинаковой поддержкой формата, проверками границ и обработкой ошибок. Сравниваются размер исходника, количество копий и аллокаций, корректность и время исполнения. Краткость не заменяет безопасность; отсутствие копий подтверждается отдельно.

Таблица соединений

Начать с локальной таблицы значений: добавить запись, найти, заменить значение, удалить. Внешние идентификаторы представлены данными, а не адресами объектов. Это проверяет структуры, коллекции и локальное изменение привязок.

Проверить пустую и заполненную таблицы, повторный ключ, отсутствующий ключ, замену и удаление, независимость скопированных значений. После появления Handle добавить проверку устаревшего идентификатора при повторном использовании слота; после ownership — время жизни ресурсов. Ранний пример не должен незаметно вводить разделяемые изменяемые ссылки.

Конечный автомат узла кластера

Состояние и событие подаются на вход чистой функции перехода. Результат — новое состояние, описания требуемых действий либо значение ошибки. Описание действия ещё не исполняет I/O.

Сначала использовать доступные значения и условия; после вариантов — типизированные состояния/события, match и Result. Проверить допустимые и недопустимые переходы, тайм-ауты как входные события, повторные события и исчерпывающее покрытие вариантов.

Это пример выразительности логики языка, а не готовый алгоритм консенсуса или гарантия отказоустойчивости. Реальная сеть и исполнение действий добавляются только после модели эффектов.