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.
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;
}
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