Xo is experimental. The source is now public on GitHub, or try Xo in your browser.

Xo 0.16 release notes

released 2026-10-16 · tag v0.16.0 · all releases

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. main is 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 Fs method.

Changes to the language

  • File, FileLock and Child are handles: comparing them with == is error XO0404.

Tools

  • xo test runs 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.