add :: (a: s32, b: s32) => s32 { a + b };
main :: () => {
const sum: s32 = add(10, 2);
const _ = sum;
};Example check result: phx check main.phx — ok (0 errors)
Phoenix
Systems programming without a garbage collector
Experimental alpha — compile to portable PHX0 bytecode, run on a verified stack VM. Errors are values, not exceptions.
Features
No garbage collector
Ownership-first memory model with moves, Copyable vs Clone types, and use-after-move errors that cite the original move site.
Portable PHX0 bytecode
Programs compile to on-disk PHX0 format, verified before execution, and run on a cross-platform stack VM.
Errors as values
Result and Option in the standard library with question-mark propagation — no exceptions, no silent failure.
Uniform declaration syntax
Functions, structs, enums, traits, and impls share one double-colon declaration style with explicit types throughout.
Runtime transparency
Schedulable I/O and explicit actors designed to be visible in types — no hidden async suspension. Roadmap.
Self-contained toolchain
Zero external dependencies. Use phx check, phx run, and phx build from a single self-contained compiler.
