# Xo 0.11 release notes


## Introduction

Xo 0.11 has no language or spec changes from 0.10: programs build and
behave the same. It moves more of the runtime from C into Xo, with
every moved piece within 5 percent of the C's instructions
([decision 0180](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0180-runtime-in-xo-pilot.md)),
and makes rebuilds faster.

## Runtime

- About 4,900 lines of runtime C deleted. Standard output and error,
  exit, environment and arguments, the constant time barrier
  ([decision 0222](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0222-constant-time-barrier.md)),
  the HTTP/1.1 client parser and response writer, the HTTP/2 HPACK
  coder, string and list objects
  ([decision 0226](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0226-list-objects-without-c-level.md)),
  the test world, file system operations on Linux and macOS, and the
  linux/arm64 unwinder for programs with no C library
  ([decision 0221](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0221-unwinder-in-xo.md))
  are Xo.

## Compiler

- arm64 shrink wrapping and tail calls: the compiler's own build runs
  0.985 of the instructions
  ([decision 0224](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0224-arm64-shrink-wrapping-tail-calls.md)).
- Constant Int expressions fold to one constant.

## Tools

- Per function back-end and reference counting caches: a one module
  edit of the compiler rebuilds in about 12 s instead of 31 s on a Mac
  ([decision 0220](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0220-per-module-parallel-compilation.md)).
- Build caches are pruned by age and size
  ([decision 0223](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0223-cache-pruning.md)).

