Pre-alpha. Nova находится в активной разработке. Компилятор собирает и запускает реальные программы, но язык ещё не стабилизирован по API. Ожидайте шероховатостей.

Системные требования

Linux
x86-64, ядро 4.15+
glibc 2.17+ или musl
macOS
13 Ventura+
Apple Silicon или Intel
Windows
Windows 10 / 11
x86-64; тулчейн MSVC 2022
Сборка из исходников
Rust 1.85+
Clang, MSVC или GCC

Установка

Nova — pre-alpha, готовых пакетов пока нет. Соберите компилятор из исходников; шаги ниже одинаковы для Linux, macOS и Windows.

1

Предварительные требования

Установите стабильный Rust (1.85+). Для компиляции программ на Nova также нужен C-тулчейн — Clang, MSVC или GCC (определяется автоматически).

rustup update stable
2

Клонировать и собрать

git clone https://github.com/nv-lang/nova
cd nova/nova-cli
cargo build --release

Бинарник CLI будет в nova-cli/target/release/nova (nova.exe на Windows). Добавьте этот каталог в PATH.

3

Запустить тесты (опционально)

cd ..
nova-cli/target/release/nova test nova_tests

Компилирует и прогоняет встроенный набор .nv-тестов через только что собранный компилятор.

Первая программа на Nova

Создайте файл hello.nv:

module hello

fn main() {
    println("Hello, Nova!")
}

Скомпилируйте в native binary и запустите его:

nova build hello.nv -o hello
./hello

Вывод

Hello, Nova!

Эффекты за 30 секунд

Nova требует объявлять каждый побочный эффект в сигнатуре функции. Компилятор проверяет, что никаких необъявленных эффектов не выполняется — на этапе компиляции, а не в рантайме.

// Эффекты стоят между параметрами и типом возврата.
// Io означает, что функция может выполнять ввод-вывод.
// Компилятор отклоняет вызовы Io-функций из не-Io контекстов.
fn greet(name str) Io -> () {
    println("Hello, ${name}!")
}

fn main() {
    greet("Nova")
}

Эффекты стоят между параметрами и типом возврата. Компилятор статически проверяет, что каждый эффект объявлен — никакого скрытого ввода-вывода, никаких неожиданных сбоев.

Настройка редактора

VS Code
Подсветка синтаксиса, базовый языковой сервер.
Установить расширение →
JetBrains IDEs
Плагин для IntelliJ / CLion / Rider. Синтаксис + структурный просмотр.
Установить плагин →
Vim / Neovim
Грамматика Tree-sitter и конфигурация LSP через Mason.
Смотреть на GitHub →

Следующие шаги