Reference
Platforms
What is supported, what is tested, and the known gaps.
Back ends by situation#
| Situation | Back end |
|---|---|
macOS or Linux, hosted, clang or zig on PATH |
LLVM (.ll → clang -O2, or zig cc -O2), the default |
--backend qbe |
QBE (.ssa → qbe → cc) |
freestanding profile, --target, --emit-asm, -g |
QBE (automatic) |
| Windows | LLVM through zig cc -target x86_64-windows-gnu when zig is on PATH (default); QBE with MinGW cc otherwise |
neither clang nor zig installed |
QBE (automatic, with a note) |
Both back ends run the whole golden corpus and must agree on program output, including fixed-width overflow (a trap on both) and plain int wrap-around (Backends).
Support tiers#
| Platform | Hosted programs | CI |
|---|---|---|
| macOS arm64 | yes (LLVM or QBE) | full test suite |
| Linux x86-64 | yes (LLVM or QBE) | full test suite |
| Linux aarch64 | yes | full test suite |
| Windows x86-64 | yes — LLVM (zig cc) and QBE are smoke-tested end to end (classes, lists, dictionaries, tasks, f-strings, exceptions, TLS and WebSocket) |
front-end tests and end-to-end smoke tests (the full suite does not run on Windows) |
| riscv64 | not supported | none (freestanding assembly output only) |
macOS x86-64 is expected to work (macos-x64) but is not part of CI or the release matrix.
Freestanding (bare-metal) builds exist for x86-64 and aarch64: an ELF with the Zig runtime and a kernel-provided allocator. The x86-64 path is proven by booting a real kernel image in QEMU as part of the test suite (Freestanding).
Toolchain requirements#
| To… | You need |
|---|---|
| compile and run Nox programs | a C toolchain for linking (cc); clang or zig for the LLVM back end; qbe is bundled for macOS/Linux |
| build the compiler from source | Zig 0.16 |
| use SQLite / PostgreSQL / MySQL | libsqlite3 / libpq / libmysqlclient installed at run time (loaded on first use) |
use serve_tls |
an OpenSSL (libssl, libcrypto) at run time; set NOX_OPENSSL_LIB to a specific library path if needed |
Known constraints#
- No bundled C compiler.
clangis not shipped; the driver falls back tozig ccand then to QBE. - Windows lacks a full-suite CI run; the smoke tests cover the language end to end.
- riscv64 has no hosted runtime.
- Multi-core parallelism is a property of the LLVM back end; QBE programs run tasks on one thread.
extern def,lowlevel, NNI plugins and dependencies with native code run with full authority (Security).
Reporting a platform problem#
Include noxc --version, the platform, whether --backend qbe reproduces it, and the smallest .nox program that shows it.