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 x86_641install.sh
Linux ARM64 (glibc)2install.sh
Windows x86_642install.ps1
macOS (x86_64 / ARM64)3build from source
Alpine / musl3build from source

The shipped nurlc / nurlpkg 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 LLVM IR. It hands native codegen to clang. Any target clang supports is reachable. NURL's IR carries no target triple. A single clang --target= (or zig cc --target=) drives every cross build.

TargetTierNotes
Linux x86_641the primary target — build.sh and the full test corpus
Windows x86_642separate Windows goldens, run on every push to main
macOS x86_643via the playground's /build_macos; links only libSystem, no canvas/audio/HTTP
macOS ARM643via /build_target; native Apple Silicon, unsigned — clear the quarantine attribute before running
WebAssembly (wasm32-wasi)3via the playground container, or locally with wasmbuilder — see Editor and tooling
Linux ARM64 / RISC-V643via /build_target; fully static musl, or dynamic glibc for ARM64
Android / iOS, embedded (no_std)planned

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

Next

Last updated on

On this page