Pre-alpha. Nova is in active development. The compiler builds and runs real programs, but the language is not yet API-stable. Expect rough edges.

System requirements

Linux
x86-64, kernel 4.15+
glibc 2.17+ or musl
macOS
13 Ventura+
Apple Silicon or Intel
Windows
Windows 10 / 11
x86-64; MSVC 2022 toolchain
Build from source
Rust 1.85+
Clang, MSVC, or GCC

Installation

Nova is pre-alpha — there are no pre-built packages yet. Build the compiler from source; the steps below work the same on Linux, macOS, and Windows.

1

Prerequisites

Install a stable Rust toolchain (1.85+). To compile Nova programs you also need a C toolchain — Clang, MSVC, or GCC (auto-detected).

rustup update stable
2

Clone and build

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

The CLI binary lands at nova-cli/target/release/nova (nova.exe on Windows). Add that directory to your PATH.

3

Run the test suite (optional)

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

Compiles and runs the bundled .nv test corpus through the compiler you just built.

Your first Nova program

Create a file called hello.nv:

module hello

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

Compile to a native binary, then run it:

nova build hello.nv -o hello
./hello

Output

Hello, Nova!

Effects in 30 seconds

Nova requires every side effect to be declared in the function signature. The compiler verifies that no undeclared effects are performed — at compile time, not at runtime.

// Effects appear between parameters and return type.
// Io means this function may perform I/O.
// The compiler rejects calls to Io functions from non-Io contexts.
fn greet(name str) Io -> () {
    println("Hello, ${name}!")
}

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

Effects appear between parameters and the return type. The compiler verifies statically that every effect is declared — no hidden I/O, no surprise failures.

Editor setup

VS Code
Syntax highlighting, basic language server.
Install extension →
JetBrains IDEs
IntelliJ / CLion / Rider plugin. Syntax + structure view.
Install plugin →
Vim / Neovim
Tree-sitter grammar and LSP config via Mason.
View on GitHub →

Next steps