# Xo 0.15 release notes


## Introduction

Xo 0.15 moves a program's entry toward Xo: the runtime's C went from
476 lines to 343.

## Runtime

- Xo functions can be exported under exact C names, and the backends
  define the data symbols a program with no C library needs (`environ`,
  `stdin`, `stdout`, `stderr`)
  ([decision 0234](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0234-exact-c-name-exports-data-symbols-entry-stubs.md)).
- With no C library, the process entry (`_start`, the thread pointer,
  the stack switch) is emitted by the arm64 and LLVM backends, and the
  runtime's own printf is gone.

## Compiler

- LLVM builds of a single module use no LTO at `-O0` (the compiler
  built in 129 s instead of 1,871 s) and full LTO at `-O2`
  (`XO_LLVM_LTO`).
- arm64: Int constants fold after inlining; ML-KEM and SHA-3 run about
  2.8 times faster.

