Быстрый старт
Требования
Нужны Python 3.9+ и Clang в PATH. Прототип проверен локально на macOS ARM64 с Python 3.9.6 и Apple Clang 21. Команды выполняются из каталога с исходниками Liza.
Первая программа
python3 -m liza check examples/answer.liza
python3 -m liza build examples/answer.liza
./build/answer
echo $? # 42
Программа возвращает 42 как код завершения, а не печатает текст.
На POSIX оболочка видит младшие 8 бит результата main.
Собрать и сразу запустить пример с циклическим переполнением:
python3 -m liza run examples/wrapping.liza
run возвращает код завершения программы.
Условия и логические значения
Пример examples/conditions.liza проверяет диапазон через функцию с результатом
bool и выбирает результат с помощью if/else if/else:
python3 -m liza check examples/conditions.liza
python3 -m liza run examples/conditions.liza
echo $? # 42
Доступны true, false, отрицание !, сравнения ==, !=, <, <=, >, >=,
а также && и || с коротким замыканием.
Условие должно иметь тип bool; число вместо условия не допускается.
Подробнее: спецификация ядра.
Целые и битовые поля
Доступны u8/u16/u32/u64 и i8/i16/i32/i64. Пример извлекает версию,
маркер и тип полезной нагрузки из двух переданных байтов заголовка RTP:
python3 -m liza run examples/rtp_fields.liza
echo $? # 0: поля совпали с ожидаемыми
Здесь используются u8, маски и сдвиги. Это первый шаг к парсеру пакета;
чтение буфера и проверка его границ появятся вместе с массивами и представлениями.
Посмотреть промежуточное представление
python3 -m liza emit-ir examples/answer.liza
python3 -m liza emit-llvm examples/answer.liza
emit-ir и emit-llvm принимают -o PATH; без него пишут в stdout.
check и emit-* не требуют Clang.
build принимает -o PATH, -O 0 или -O 2, --clang PATH.
По умолчанию включена оптимизация -O 2, исполняемый файл записывается в build/.
Проверки
python3 -m unittest discover -s tests -v
Нативные тесты пропускаются без Clang. Они проверяют исполнение при O0 и O2,
включая переполнение. Точная семантика ядра.