# Xo 0.12 release notes


## Introduction

Xo 0.12 moves most of the native runtime into Xo: its C went from
26,743 lines to about 5,900.

## Runtime

- The scheduler, the event loop, sockets, processes, the test world,
  the HTTP/1.1 and HTTP/2 client and server, standard input, the file
  system, and the program's entry are Xo.
- The backends call the Xo runtime's allocation, reference count, list,
  string, heap, and `Any` entries directly.
- A fault in middleware or a connection no longer stops the native HTTP
  server.

## Compiler

- Crypto intrinsics: add and subtract with carry, AES rounds, and
  carry-less multiply
  ([decision 0231](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0231-crypto-intrinsics.md)).
  External C symbols can be referenced from Xo weakly
  ([decision 0232](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0232-external-c-symbols-from-xo.md)).
- `==` on enum constants folds at compile time.
- An inlining verification failure is reported, not hidden.

## Standard library

- TLS 1.2 and 1.3, X.509 parsing and verification, and the crypto under
  them (SHA-2, SHA-3, HMAC, HKDF, AES-GCM, ChaCha20-Poly1305, X25519,
  P-224 to P-521, RSA, Ed25519, and the ML-KEM-768 and -1024 hybrids)
  are Xo, matching Go 1.26's behavior and group list
  ([decision 0202](https://github.com/xo-lang/xo/blob/main/knowledgebase/decisions/0202-tls-in-xo.md)).
  The default build links no Mbed TLS or fiat-crypto.

