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
| Host | Tier | Install |
|---|---|---|
| Linux x86_64 (glibc ≥ 2.28) | 1 | install.sh |
| FreeBSD 14.2 x86_64 | 1 | install.sh |
| Windows x86_64 | 1 | install.ps1 (bundles zig cc + runtime.mingw.o) |
| macOS ARM64 (Apple Silicon) | 1 | install.sh |
| Linux ARM64 (aarch64) | 2 | install.sh |
| macOS x86_64 (Intel) | 2 | install.sh |
| Alpine / Linux musl | 3 | build 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.
| Target | Tier | Notes |
|---|---|---|
| Linux x86_64 | 1 | primary host and target — ./build.sh and the full test corpus |
| FreeBSD 14.2 x86_64 | 1 | full bootstrap + test corpus in CI |
| Windows x86_64 | 1 | native MSVC/MinGW + CI test suite on every push |
| macOS ARM64 | 1 | native Apple Silicon bootstrap + test corpus in CI |
Unikernel (x86_64, AArch64, RISC-V64) | 1 | freestanding nolibc + VirtIO guest images tested in QEMU on every change — see Unikernels and embedded targets |
| Linux ARM64 / RISC-V64 | 2 | install.sh (ARM64) or cross-compile via --target= / /build_target (musl static or glibc) |
| macOS x86_64 | 2 | prebuilt archive via install.sh or cross-compile via /build_macos |
WebAssembly (wasm32-wasi) | 2 | via the playground container, or locally with wasmbuilder and nwasm — see Editor and tooling |
Embedded (ESP32 Xtensa / RISC-V RV32IMC) | 3 | bare-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
- Editor and tooling
- Embedded targets — bare-metal NURL, beyond the table above.
- Playground and APIs
- Full CI details are in
docs/BUILDING.md.
Last updated on