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

Быстрый старт

Требования

Нужны 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, включая переполнение. Точная семантика ядра.