Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Support matrix

What Nazm 1.0.0 has shown on each target and for each optional feature, in words that mean one thing each. The target table is the compiler’s own — nazm_lir::backend::SUPPORT, printed by nazm inspect as toolchain.support — and crates/nazm-cli/tests/docs.rs fails if this page and that table disagree. The evidence behind every cell is in capability-matrix.md, area 33.

The words

StatusMeans
run-verifiedPrograms built for the target ran — on the host, under Rosetta 2, in a Linux container or on a WebAssembly engine — and agreed with the interpreter
emulator-verifiedRun-verified where the run was a full-system emulator (QEMU): no hardware has run it
run-verified under WineWindows executables ran under Wine in a Linux container and agreed with the interpreter: not evidence from a Windows host
compile-onlyObjects are built and read back from their headers; nothing built for it has run
unsupportedRefused by name, with the reason
non-goalRefused by decision, not for want of a machine
blockedWanted, and stopped by something outside this repository: a missing toolchain, machine or permission

No cell says just “supported”.

Targets

TargetLLVMCraneliftWhere programs ranDebugger
aarch64-apple-darwinrun-verifiedrun-verifiedthe host, Apple siliconlldb, breakpoints resolved statically, both backends
x86_64-apple-darwinrun-verifiedrun-verifiedunder Rosetta 2 on Apple siliconnot exercised
aarch64-unknown-linux-gnurun-verifiedrun-verifiedthe contained runner’s Linux containergdb, live, both backends (nazm-debug image)
x86_64-unknown-linux-gnucompile-onlycompile-onlynowhere: no x86_64 Linux machine or emulator herenot exercised
x86_64-pc-windows-gnurun-verified under Winerun-verified under WineWine 8 in a Debian x86_64 container (docker/wine.Dockerfile), linked by MinGW-w64’s gcc; no Windows hostnot exercised
aarch64-unknown-noneemulator-verifiedunsupportedQEMU virt, Cortex-A53not exercised
riscv64gc-unknown-none-elfemulator-verifiedunsupportedQEMU virt, RV64GC, machine modenot exercised
thumbv7m-none-eabiemulator-verifiedunsupportedQEMU mps2-an385, Cortex-M3 (Gate 3)not exercised
wasm32-unknown-unknownrun-verifiedunsupportedNode.js’s engine, the reference hostDWARF sections present; a debugger not exercised

Cranelift’s two unsupported reasons: its object writer has no format for a target without an operating system, and this Cranelift is built without a WebAssembly backend.

Restrictions by target. The hosted targets run the whole language and the M:N task pool. A program that calls C runs a thread per task unless NAZM_SCHEDULER=pool. A target whose linker this host lacks is built to objects (--objects) for its own toolchain; there is no bundled sysroot. The boards are freestanding: no heap, @std, tasks, channels, closures or C library, objects and a link.ld linked by ld.lld, and RISC-V needs a clang with a RISC-V code generator (not Apple’s). WebAssembly is the freestanding subset: no heap, so no strings built at run time, sequences, channels, tasks or closures; imports nazm_host.write and nazm_host.report only, no WASI. Details: limitations.md, Native code.

Windows x86_64. Built to objects (--objects) and linked by MinGW-w64’s gcc as link.txt says: -static, Winsock (-lws2_32) and BCryptGenRandom (-lbcrypt); nothing of Microsoft’s SDK or C runtime is used. Files, sockets and the reactor (WSAPoll), processes and their pipes, the clocks, UTF-8 arguments, a trap and an exhausted stack run under Wine as they do natively, with two differences the spec states: os_family() is 2, and os_kill ends a child with exit code 1. Execution on a real Windows x86_64 host is a final-v1 qualification item, not yet done. A DLL is refused by name (--shared); a static library (--lib) is built.

x86_64 Linux. Compile-only, because no Nazm-built program has been run on x86_64 Linux. It moves to run-verified when one is — the differential corpus built for it and run on such a machine or VM, with the result recorded — not because CI, which runs on x86_64 Linux, compiled the compiler.

Prebuilt toolchains (Gate 3)

A host archive is nazm-TRIPLE.tar.gz, made by scripts/host-archive.sh: bin/nazm with the standard library and runtime inside it, the licence, the README, the getting-started and support pages, and INSTALL.txt. nazm run, check and fmt need nothing else; nazm build needs a C toolchain (clang) on PATH. Rust is never needed. scripts/clean-install-test.sh unpacks an archive where no cargo or rustc is reachable, then checks, runs, builds and runs a program.

HostArchive builtClean installWhere it ran
macOS ARM64 (aarch64-apple-darwin)on the hostpassedthe host, natively
macOS x86_64 (x86_64-apple-darwin)on the host, cross-builtpassedunder Rosetta 2 on Apple silicon
Linux ARM64 (aarch64-unknown-linux-gnu)in the contained runner (cargo xtask contained archive)passeda clean Debian container with only clang (docker/clean-install.Dockerfile)
Linux x86_64 (x86_64-unknown-linux-gnu)not yetnot yet—
Windows x86_64not yetnot yet—

Nothing is uploaded or published: the archives are local, under target/archives/.

Not supported, by decision

Windows with Microsoft’s toolchain, and Windows ARM64unsupported: x86_64-pc-windows-msvc needs Microsoft’s SDK and C runtime, which are not downloaded or accepted here, and no Windows ARM64 machine or emulator is here; Windows x86_64 is x86_64-pc-windows-gnu, with MinGW-w64’s
32-bit hosted targetsa non-goal: Int is 64-bit and every hosted layout assumes 64-bit pointers; wasm32 and the Cortex-M board (thumbv7m-none-eabi) are the 32-bit targets, both freestanding
big-endian targetsa non-goal: no big-endian machine or image is here to run one, and the DWARF writer and layouts assume little-endian

Optional features

FeatureStatus in 1.0.0What exists, and what stops more
WebAssemblyverified, scopedthe freestanding subset, run on Node.js’s engine and held to the interpreter; no WASI, no heap
GPU (nazm accel)verified, scoped; experimentalmaps, zips and reductions of Int kernels through OpenCL on Apple’s GPU (macOS); a second provider blocked — no Metal or SPIR-V toolchain here
EVM contracts (nazm contract --evm)verified, scoped; experimentalEVM bytecode run in py-evm, the reference EVM, and held to the simulator on generated transaction sequences; no chain deployment
WebAssembly contractsverified, scoped; experimentalrun under the reference host only; no chain’s host interface
sBPF / Solanablockedsigner analysis and account metadata only; no sBPF toolchain or validator exists here, so nothing is built or run
JITblocked; not part of this releasean in-process JIT needs unsafe, which the workspace forbids; the interactive tier (nazm repl, nazm comptime) is the interpreter
Formal proofblocked; bounded model checking verified, scopedevery program of a small core up to stated bounds is checked against the interpreter and the checker (formal-core.md); no proof assistant is installed, so nothing is proved
Debuggingverified, scopedDWARF from both backends; lldb (statically) and gdb (live) as above; no debug adapter (DAP)
Profiling (nazm profile --sample)verified, scopedmacOS’s sample only; refused elsewhere
Restriction profilesverified, scopedembedded, realtime, critical, cyber, web3 and others enforce stated rules; not certification of any kind

“Verified, scoped” means verified within the scope stated beside it and nothing more; capability-matrix.md records each scope and its evidence.