Why NovaC
NovaC is not a research language. It is a practical tool for writing the fastest code on the planet — with the ergonomics that modern developers expect.
Ownership and borrow checking at compile time — the same model proven by Rust, expressed in a language that feels like modern C. No garbage collector, no runtime pauses, no use-after-free.
Higher-level constructs — iterators, closures, generics — compile to exactly the C99 you would have written by hand. If you don't use a feature, you don't pay for it. No virtual dispatch tax.
NovaC outputs clean, human-readable C99 which your existing C toolchain compiles to native machine code. You get LLVM or GCC optimisations for free — O2, O3, LTO, PGO, all supported.
Compiler Architecture
Written entirely in Rust, the NovaC compiler uses a nom PEG parser and a multi-stage IR to produce clean, human-readable C99 — which your existing C toolchain compiles to blazing native code.
Build Cache
Every compilation artifact is keyed by the BLAKE3 hash of the source content — not timestamps, not filenames. Identical code never compiles twice, whether on your laptop, CI, or a remote build node.
Language Tour
Every NovaC feature maps transparently to idiomatic C99. No hidden runtime, no surprises — inspect the output with novac emit-c.
Observability
NovaC ships with first-class observability baked into the compiler daemon — not bolted on as an afterthought.
Compiler exposes /metrics with build duration, cache hit/miss rate, HIR/MIR pass times, and codegen throughput. Scrape-ready out of the box.
Every compilation stage emits OTLP spans. Trace a slow build from source parse through to binary link in your existing Jaeger or Tempo instance.
novaC-dist shards work units across build nodes. Cache keys are BLAKE3 content-addressed, so nodes never duplicate effort. Scales linearly with node count.
Installation
Install from crates.io or use the standalone installer. The CLI handles building, running, formatting, and project management.
CLI Reference