NURL

Installation

Get the nurlc compiler via a prebuilt toolchain or build it from source.

You can get NURL in two ways: install a prebuilt toolchain, or build it from the source code.

Option A — Prebuilt toolchain (Linux / FreeBSD / Windows)

This gives you nurlc (compiler), nurlpkg (package manager), and nurlfmt (source formatter) on your PATH.

One-command install

Linux / FreeBSD

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

Windows (PowerShell)

irm https://nurl-lang.org/install.ps1 | iex

Keeping it up to date

Once the toolchain is installed it upgrades itself — you never need the one-liner again:

nurl upgrade              # fetch + install the newest release
nurl upgrade --check      # is there a newer one? (installs nothing)

nurl update and nurlpkg self-update are the same command under the names people tend to guess. It is not nurlpkg update, which moves your project's dependency requirements.

The upgrade replaces only the toolchain's own files. Everything else in $NURL_HOME (default ~/.nurl) is left alone: your registry token, the model cache under models/, and every program you installed with nurlpkg install. Two other flags matter occasionally:

FlagEffect
--version vX.Y.ZInstall one specific release — pin it, or go back
--forceReinstall the version you already have, or replace a source build

Each release archive is checked against its published SHA-256, and against its minisign signature when minisign is on your PATH; a mismatch aborts before anything is unpacked.

Option B — Build from source

You need this for macOS. We also recommend this if you want to compile your own .nu files right away.

Prerequisites

NURL's compiler emits LLVM IR text; clang turns that into a native binary. clang is the only build-time dependency.

OSCommand
LinuxUse distribution's package manager
macOSbrew install llvm (then add it to PATH — see below)
WindowsInstall from llvm.org/releases
FreeBSDalready ships clang; also install bash for build.sh

On macOS, brew does not symlink LLVM onto PATH by default. Add this line to ~/.zshrc to persist it.

export PATH="$(brew --prefix llvm)/bin:$PATH"

Clone and build

git clone https://github.com/nurl-lang/nurl.git
cd nurl
./build.sh          # Linux / macOS / FreeBSD
build.bat           # Windows

./build.sh does a full bootstrap: it compiles the C runtime, links a committed known-good compiler snapshot, and uses that snapshot to compile the current compiler source. It then compiles the result again and checks that both self-compiles produce byte-for-byte identical output before it accepts the build. On success it prints BUILD SUCCESS & TESTS PASSED and puts the compiler at build/nurlc (symlinked at the repo root).

Optional: language server + editor extension

./install.sh

Run from the repo root after ./build.sh — it bootstraps the compiler if needed, builds nurl-lsp, symlinks it onto your PATH, and installs the VS Code extension if code (or cursor / windsurf) is available. Safe to re-run any time. See docs/TOOLING.md for manual editor setup and other editors.

Verifying the install

./build/nurlc --version      # after a source build
nurlc --version              # after the prebuilt installer

Last updated on

On this page