March is a statically-typed functional language: actors and message passing from the BEAM, algebraic data types from ML, compiled to native binaries through LLVM. Perceus reference counting with in-place reuse means no garbage collector and no pauses, at Rust-like performance.
What makes March different
Performance
FBIP rewrites uniquely-owned data in place, so transforms like this allocate nothing on the reuse path. The functional-style rewrite is automatic; no unsafe code required.
See benchmarks →
Benchmark
After pass 1, March allocates nothing — every node rewritten in-place. 7.5× faster than OCaml. 19× faster than Rust. Apple M-series, --opt 2.
| Language | Median | Allocs/pass |
|---|---|---|
| Elixir (BEAM) | 2580 ms | 2M |
| OCaml (ocamlopt) | 3825 ms | 2M |
| Rust (rustc -O) | 9977 ms | 2M |
| March (FBIP) | 513 ms | 0 ✓ |
← Back
Concurrency
Share-nothing message-passing actors with supervision trees. Accidental shared mutable state is a compile error, not a runtime bug.
Type System
Types flow without annotation boilerplate. The compiler enforces exhaustive pattern matching — a missing case is a compile error. Generics are monomorphized, no boxing overhead.
Memory
Perceus reference counting reclaims memory the instant it's no longer used, at a point the compiler picks. Predictable latency, no collector, no pauses. Linear types guarantee file handles, sockets, and connections can't leak or double-free.
Try March
Quick Start
One command installs on macOS and Linux.