Skip to content
CryoCryo home
LanguageIntroduction

The Cryo Language

Version: 1.0.0
Last revised: July 2026

Cryo is a statically-typed, compiled systems language. It targets native machine code through LLVM 20, has a self-hosted compiler, and ships a standard library written entirely in itself. Three principles shape the language:

  1. Explicitness. Cryo has no implicit conversions and no hidden control flow. The programmer writes out every cast and every loop condition. Type inference is deliberately local - a binding may adopt its initialiser's type, but there is no flow- or program-level inference - so the cost of every operation stays visible in the source and the code is easy to reason about.

  2. One toolchain. Build, run, test, fetch, init, and check are subcommands of a single cryo binary. The package manager, the test runner, and the dependency resolver ship with the compiler.

  3. Ownership without lifetimes. Cryo tracks ownership statically - Copy and Drop are inferred structurally, destructors are synthesised at every scope exit, and using a value after it has moved is a hard error - but there is no borrow checker, no lifetime annotations, and no garbage collector. Raw pointers stay unchecked and aliasing stays the programmer's responsibility. The model buys deterministic destruction and use-after-move rejection without asking you to prove your program correct to the compiler.

The rest of this document is organised by feature area. Examples are runnable against the current compiler; anything aspirational is marked.