## What it is
nexium is a programming language of my own. It compiles to native code through C, uses automatic reference counting instead of a tracing garbage collector, and carries a machine-checked effect system that says whether a function allocates, blocks, or can panic. One source tree can be shipped as a C library, a Python wheel, a Rust crate, or a command-line tool.
## Why build a language
The pitch I kept wanting was "complete enough to build everything in, but also the best thing to reach for when you only need one piece of something else." Most languages make you pick: a big runtime that's great alone and painful to embed, or a low-level language that embeds well but fights you everywhere else. Nexium is an attempt to get both — native performance, no heavyweight runtime, and a compiler that hands you whatever artifact the host project actually consumes.
## How it works
- Native through C — the backend lowers to C and hands off to a C compiler, so Nexium inherits a mature optimiser and runs anywhere C does.
- ARC, not GC — automatic reference counting means deterministic cleanup and no stop-the-world pauses.
- Effect system — allocation, blocking, and panic are tracked in the type system and checked at compile time, so a function's signature tells you what it's allowed to do.
- One tree, every target — declare
artifact cabi,artifact python, and the rest, thennx shipemits a DLL + header, a Python wheel, a Rust crate, or a CLI in one pass.
## A taste
A single .nx file, exported to C and Python at once:
fn checksum(data: []u8) -> u32 export(c) { ... }
artifact cabi { name = "hasher" }
artifact python { name = "hasher" }
Then nx ship hasher.nx produces the .dll, .lib, .h, and a .whl you can import straight into Python. The full language reference and roadmap live in the repo.