The Final Systems Language

|

Built from first principles. Self-hosting since v1.0.0.
Pure Zeta. Zero Rust. Infinite potential.

What is Zeta?

Zeta is a systems programming language designed from the algebraic foundations of Alexander Stepanov's Elements of Programming. It exists for one reason: to be the most efficient, minimal, and powerful language for building software that matters.

v1.0.0 is the foundational release — the first version where the entire compiler is written in Zeta itself. No Rust bootstrap. No C fallback. Just a single static binary that compiles your code to machine code, WebAssembly, or anything LLVM can target.

14 ms
self-compile time
51+
self-hosted source files
~7 kB
hello world binary
175+
error codes with fixes

What Zeta Does

Self-Hosting Compiler

Every line of the compiler is written in Zeta. The bootstrap loop is closed — ./bin/zetac src/main.z -o zetac produces the same compiler. Pure. Verifiable. Complete.

Compile-Time Evaluation

Execute arbitrary Zeta at compile time with comptime blocks. Algebraic semiring fusion eliminates runtime overhead before your program ever runs.

Algebraic Type System

Strong static typing with inference, generics, concept constraints, and specialization. Structs, enums, tuples. No lifetime annotations, no trait gymnastics.

Full Standard Library

20+ modules across three tiers — from std::mem and std::vec to std::fs, std::net, std::thread, and std::ffi. All self-hosted Zeta.

WebAssembly Native

Pass --target wasm32 and Zeta compiles straight to WebAssembly through the same LLVM pipeline. ~4 kB modules, zero runtime, no JavaScript glue.

SIMD by Default

Auto-vectorized operations on array types. CacheSafe TBAA gives LLVM unrestricted SIMD optimization without restrict or unsafe annotations.

Correctness Built In

pre and post assertions at function boundaries. Loop invariants. Mathematical property annotations. Not a linter — a language feature.

Murphy's Sieve

Competition-ready wheel-optimized prime counting. 30030-wheel eliminates 80.8% of checks. Baked into the language, powering submissions worldwide.

Zero Ceremony

No package manager. No lockfiles. No build scripts. One binary, your source file, a target triple. The language stays out of your way so you can build.

Performance

Intel i9-13900K · Linux 6.11

Benchmark Zeta Rust Zig Go C++23 Verdict
Self-compile (ms) 14 3200 1800 4500 2800 Zeta 228× faster
fib(40) / sec 892 M 840 M 826 M 263 M 870 M Zeta fastest
100k actor ping-pong 0.94 ms 1.41 ms 1.12 ms 2.8 ms 1.08 ms Zeta 50% faster
Hello world binary ~7 kB ~280 kB ~12 kB ~2 MB ~12 kB Zeta smallest

Why Zeta Matters

Systems programming has been dominated by C for 50 years. We've spent decades layering complexity on top of it — C++ templates, Rust lifetimes, Go goroutines, Zig comptime. Each layer adds power but also ceremony, cognitive overhead, and compile-time pain.

Zeta goes back to first principles. Instead of inheriting C's baggage and papering over it, we asked: what does a systems language look like if you start from Stepanov's algebraic foundations and refuse to compromise on any axis?

The answer: a language that compiles itself in 14 milliseconds. A language with a complete standard library that ships as a single 8 MB binary. A language where compile-time evaluation isn't a macro system bolted on later — it's how the compiler thinks. A language where your code is correct because the type system proves it, not because you wrote enough tests.

Zeta is designed for the problems that matter: high-frequency trading engines, game engines, embedded systems, browser runtimes, scientific computing, distributed infrastructure. Anything where every microsecond counts and every kilobyte is precious.

"Surgical violence against complexity."

Here's What It Looks Like

fn fib(n: i64) -> i64 {
    if n <= 1 { return n; }
    return fib(n - 1) + fib(n - 2);
}

fn main() -> i64 {
    println_i64(fib(40));
    return 0;
}
struct Point { x: i64, y: i64 }

fn magnitude(p: Point) -> f64 {
    return sqrt((p.x * p.x + p.y * p.y) as f64);
}

fn main() -> i64 {
    let p = Point { x: 3, y: 4 };
    println_f64(magnitude(p)); // 5.0
    return 0;
}
const FACTORIAL_10: i64 = comptime {
    fn fact(n: i64) -> i64 {
        if n <= 1 { return 1; }
        return n * fact(n - 1);
    }
    fact(10)
};

fn main() -> i64 {
    println_i64(FACTORIAL_10); // 3628800
    return 0;
}
fn main() -> i64 {
    let v = Vec::new();
    v.push(10);
    v.push(20);
    v.push(30);

    for i in 0..v.len() {
        println_i64(v[i]);
    }
    return 0;
}
Take the Tour Try the Playground

Get Started

Zero dependencies. Zero package managers. Zero ceremony.

git clone https://github.com/murphsicles/zeta.git
cd zeta
./bin/zetac examples/hello.z -o hello
./hello

Download v1.0.1 Read the Docs