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

Liza

Экспериментальный системный язык: программа описывает значения, зависимости вычислений, права на изменение состояния и эффекты. Физическое размещение данных и машинные инструкции выбирает реализация в пределах этих контрактов.

Цель — лаконичный язык для сложных систем, включая HA-мессенджеры и ВКС, с нативной компиляцией, без универсальных указателей и обязательного GC. Это цель проекта, а не описание уже готовых возможностей.

Что работает сейчас

Первый вертикальный срез: исходник → AST → типизированный Liza IR → LLVM IR → нативный исполняемый файл через Clang. Компилятор-прототип написан на Python без сторонних зависимостей. Скомпилированной программе Python не нужен.

Поддерживаются u32 и bool, неизменяемые привязки, функции, вызовы, return, сравнения, отрицание !, ветвления if/else, арифметика с проверкой переполнения и явным циклическим переполнением.

fn twice(value: u32) -> u32 : pure {
    return value * 2
}

fn main() -> u32 {
    answer = twice(20) + 2
    return answer
}

Собрать первую программу · Изучить модель языка · Посмотреть этапы разработки

Границы прототипа

Пока нет состояний, views, handles, проверки владения, задач, ввода-вывода, структур, массивов, циклов, модулей и стандартной библиотеки. Нет обещания оптимального исполнения на любой архитектуре. Есть только сборка для хоста; кросс-компиляция и другие виды артефактов — следующие этапы.

Сейчас Clang связывает обычную host-программу с системным startup-кодом; freestanding-сборка ещё не реализована.