System requirements
glibc 2.17+ or musl
Apple Silicon or Intel
x86-64; MSVC 2022 toolchain
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.
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
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.
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.