Alpha release. Nova Oracle 0.1.0 is available for Windows and Linux x86_64. Language features and APIs may change; compatibility and production readiness are not guaranteed. Start with Oracle; Carina 0.2.0 is a separate Windows-only self-hosting milestone.

System requirements

Linux
x86_64
C toolchain and Boehm GC development files
macOS
No published or release-verified binary bundle
Windows
x86_64
C toolchain, e.g. Visual Studio Build Tools
Binary bundles
No Rust installation needed
A C compiler is still required

Installation

Download the Oracle bundle for your platform from the release page. Verify the archive against SHA256SUMS for that release, then unpack it. The bundles include the CLI, nova-lsp, standard library and C runtime. Follow the README-INSTALL.md inside your archive.

1

Windows x86_64

Unpack nova-oracle-0.1.0-windows-x86_64.zip. Install a C compiler, for example Visual Studio Build Tools with C++ support. Boehm GC libraries and headers are bundled.

In PowerShell, from the directory containing nova.exe, dot-source the setup script. The leading dot keeps the environment settings in this session:

. .\setup-env.ps1
nova --version
2

Linux x86_64

Unpack nova-oracle-0.1.0-linux-x86_64.tar.gz. On Debian/Ubuntu, install the C toolchain and Boehm GC development files:

sudo apt-get install clang cmake make libgc-dev build-essential

In Bash, from the root of the unpacked distribution:

source ./setup-env.sh
nova --version
3

Source builds and Carina

The release page also provides source snapshots with submodules. For an Oracle source build, use the repository's Linux build guide and the platform prerequisites.

Carina 0.2.0 is the compiler written in Nova. Its published binary is Windows x86_64 only; the accepted milestone is self-compilation, not the full Oracle CLI or package ecosystem. Follow the separate archive's instructions.

Your first Nova program

Create a separate project directory. Add nova.toml first: the compiler searches upward for this package manifest.

[package]
name = "hello"
version = "0.1.0"

In the same directory, create hello.nv. Its module name matches the package name:

module hello

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

From the project directory, in the session where you ran the setup script, build and run. Windows PowerShell:

nova build hello.nv
.\hello.exe

Linux Bash:

nova build hello.nv
./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.
Extension source (not bundled) →
Other editors
Syntax-highlighting grammars in the repository; no editor plugin is included in the release archives.
Editor sources →
Vim / Neovim
Separate Tree-sitter grammar project.
View on GitHub →

Next steps

Last updated October 11, 2026