Xo 0.16 release notes
Introduction
In Xo 0.16 the native runtime has no C left. On 2026-10-13 it was 26,743 lines of C, with 206,879 more in third party libraries. See No C left in the runtime.
Runtime
- The runtime’s C is 0 lines.
mainis Xo (decision 0234), the backends emit the program’s entry, and Windows’ stack overflow handler is Xo. The compiler builds no C into a native program. - Faults unwind through a frame cache: 0.57 to 0.64 of the time before the runtime moved to Xo, on arm64.
- The native in-memory file system has every
Fsmethod.
Changes to the language
File,FileLockandChildare handles: comparing them with==is errorXO0404.
Tools
xo testruns native tests in batches, shrinks failures over a pipe, runs chunks in parallel, caches runs, builds LLVM test binaries at-O0, and takes--timeout. A warm run of the notes-service example went from about 43 s to about 0.25 s (decision 0235, decision 0236).
Compiler
- LLVM runtime slow paths are cold; AES-GCM and ML-KEM are faster.
Ports
- Linux: every test program passes on linux/arm64 with both native backends. linux/amd64, run under emulation, passes after two unwinder fixes and a thread local fix in the LLVM backend. ThreadSanitizer and AddressSanitizer builds pass.