NURL

Platforms

Where the toolchain runs, and where compiled programs run.

Two separate questions: where the toolchain builds and runs (host platforms), and where a compiled program can run (codegen targets). Support is stated in tiers. The tiers are defined by what CI actually verifies:

  • Tier 1 — CI-tested. Built, bootstrapped, and the full test corpus runs on every change. A failure blocks a merge.
  • Tier 2 — CI-built, untested. CI produces a release artifact. CI verifies its bootstrap fixed point. The test corpus does not run there.
  • Tier 3 — cross-compile target / best effort. Code paths exist. Ad hoc use exercises them. Nothing in CI gates them.

Host platforms

HostTierInstall
Linux x86_64 (glibc ≥ 2.28)1install.sh
FreeBSD 14.2 x86_641install.sh
Windows x86_641install.ps1 (bundles zig cc + runtime.mingw.o)
macOS ARM64 (Apple Silicon)1install.sh
Linux ARM64 (aarch64)2install.sh
macOS x86_64 (Intel)2install.sh
Alpine / Linux musl3build from source

The shipped nurl / nurlc / nurlpkg / nurlfmt binaries link libc only. A program pulls in optional FFI libraries only when it uses them. A program that uses none stays libc-only. nurl.sh is a POSIX sh script. It needs no bash, make, or Python.

Codegen targets

The compiler emits target-agnostic LLVM IR or C (--emit-c) and hands native codegen to clang (or zig cc). A single --target=<triple> flag drives every cross build.

TargetTierNotes
Linux x86_641primary host and target — ./build.sh and the full test corpus
FreeBSD 14.2 x86_641full bootstrap + test corpus in CI
Windows x86_641native MSVC/MinGW + CI test suite on every push
macOS ARM641native Apple Silicon bootstrap + test corpus in CI
Unikernel (x86_64, AArch64, RISC-V64)1freestanding nolibc + VirtIO guest images tested in QEMU on every change — see Unikernels and embedded targets
Linux ARM64 / RISC-V642install.sh (ARM64) or cross-compile via --target= / /build_target (musl static or glibc)
macOS x86_642prebuilt archive via install.sh or cross-compile via /build_macos
WebAssembly (wasm32-wasi)2via the playground container, or locally with wasmbuilder and nwasm — see Editor and tooling
Embedded (ESP32 Xtensa / RISC-V RV32IMC)3bare-metal MMIO HAL in stdlib/hal/ — see Unikernels and embedded targets

Playground and APIs covers local cross-compiling and the playground's cross-compile endpoints.

Next

Last updated on

On this page