Системные требования
glibc 2.17+ или musl
Apple Silicon или Intel
x86-64; тулчейн MSVC 2022
Clang, MSVC или GCC
Установка
Nova — pre-alpha, готовых пакетов пока нет. Соберите компилятор из исходников; шаги ниже одинаковы для Linux, macOS и Windows.
Предварительные требования
Установите стабильный Rust (1.85+). Для компиляции программ на Nova также нужен C-тулчейн — Clang, MSVC или GCC (определяется автоматически).
rustup update stable
Клонировать и собрать
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.
Запустить тесты (опционально)
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")
}
Эффекты стоят между параметрами и типом возврата. Компилятор статически проверяет, что каждый эффект объявлен — никакого скрытого ввода-вывода, никаких неожиданных сбоев.