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.78+
Clang 17+ или MSVC 2022

Установка

1

Скачать скрипт установки

Скрипт загружает готовый бинарный файл, проверяет контрольную сумму и помещает nova в ~/.local/bin.

curl -fsSL https://nv-lang.org/install.sh | sh

Или скачайте архив релиза и распакуйте вручную.

2

Добавить в PATH

Если ~/.local/bin ещё не в PATH, добавьте его в профиль оболочки:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Для Zsh используйте ~/.zshrc.

3

Проверка

nova --version

Ожидаемый вывод

nova 0.1.0-bootstrap (2026-05-18)
1

Установить через Homebrew

brew tap nv-lang/nova
brew install nova

Или используйте скрипт установки:

curl -fsSL https://nv-lang.org/install.sh | sh
2

Проверка

nova --version

Ожидаемый вывод

nova 0.1.0-bootstrap (2026-05-18)
Предварительное требование: Установите Visual Studio 2022 с нагрузкой «Разработка классических приложений на C++», которая предоставляет компоновщик MSVC и заголовки CRT.
1

Установить через winget

winget install NvLang.Nova

Или скачайте установщик .msi со страницы релизов GitHub.

2

Проверка (PowerShell)

nova --version

Ожидаемый вывод

nova 0.1.0-bootstrap (2026-05-18)
1

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

Установите Rust (stable, 1.78+) и Clang 17+ (или MSVC 2022 на Windows).

rustup update stable
2

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

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

Бинарный файл компилятора будет в target/release/nova-codegen. Добавьте его в PATH или создайте симлинк с именем nova.

3

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

cargo test --lib

Ожидается прохождение ~300 тестов. Один известный неудачный тест (fn_static_method) — незавершённая работа.

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

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

module hello

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

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

nova run hello.nv

Вывод

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 →

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