Why IRIS?
Self-Improving
Programs that get better on their own. IRIS programs can inspect, rewrite, and evolve their own code — breeding variants, measuring fitness, and deploying improvements automatically.
Verified
Correctness you can prove. A proof kernel checks types, cost bounds, and functional properties at compile time. The proofs are machine-checked end-to-end, formalized in Lean 4.
Fast
Four execution tiers, one language. Programs start interpreted and can scale through JIT-compiled native code and SIMD — without changing a line of source.
Familiar syntax, unfamiliar power.
-- Factorial with cost annotation
let rec factorial n : Int -> Int [cost: Linear(n)] =
if n <= 1 then 1
else n * factorial (n - 1)
-- GCD via Euclid's algorithm
let rec gcd a b : Int -> Int -> Int [cost: Unknown] =
if b == 0 then a
else gcd b (a % b)
-- Sum a list using fold
let sum xs : List Int -> Int [cost: Linear(xs)] =
fold 0 (+) xs-- Filter, transform, and sum with pipes
let process xs : List Int -> Int [cost: Linear(xs)] =
xs |> filter (\x -> x > 0)
|> map (\x -> x * x)
|> fold 0 (\acc x -> acc + x)
-- Nested lambdas capture outer scope
let scale_all xs factor : List Int -> Int -> List Int =
map (\x -> x * factor) xs
-- Programs that rewrite themselves
let mutate program new_op : Program -> Int -> Program =
let root = graph_get_root program in
graph_set_prim_op program root new_opBuild it with IRIS
Get Involved
Read IRIS
Start with the language guide, explore the standard library, or dive into the architecture.
Build with IRIS
Install IRIS, run the examples, and start writing your own programs. A full library of example programs ships as references.
Contribute
IRIS is open source. Check out the GitHub repository to file issues, submit PRs, or join the discussion.