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:
-
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.
-
One toolchain. Build, run, test, fetch, init, and check are subcommands of a single
cryobinary. The package manager, the test runner, and the dependency resolver ship with the compiler. -
Ownership without lifetimes. Cryo tracks ownership statically -
CopyandDropare 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.