Programming language
Status and roadmap
Where Praxis is, what comes next, and what to expect before 1.0. As of late September 2026.
Phases
- DonePhase 0–1 (v0.1–v0.8, August) — compiles to the BEAM; namespaces and a prompt; interop, records and exceptions; a standard library;
prxwith dependencies and a lock file; OTP behaviours and releases. - DonePhase 2 (v0.9–v0.14) — diagnostics with codes, a formatter, EEP-48 documentation, a language server, editor support, packaged releases.
- DonePhase 3, self-hosting (v0.15–v0.19, to 8 September) — compiler, runtime, parser generator,
prx,prepl, Cooper and Dextrin rewritten in Praxis; the Elixir implementation retired. - DonePhase 4, JavaScript (v0.20–v0.41) — node and browser backends, processes on all three machines, source maps, a remote prompt, hot module reload, an optimiser.
- DonePhase 5, tooling (v0.42–v0.60, to 22 September) — linter, Dialyzer integration, the spec system, a documentation generator, the MCP server, a debugger, performance work, supervision on node. The language freeze at v0.56.
- In progressPhase 6, the book — a tutorial in five movements. The first shipped with v0.59; the second (tests, data, patterns, loops, sequences) is being written.
- PlannedPhase 7, distribution —
prx publishand a package registry, an installer, and the language stability commitment. Only after it does 1.0 come up for discussion. - PlannedAfter 1.0 — Logos, rewritten in Praxis.
What to expect
- The language is frozen: the special forms, definition forms, core macros, reader syntax and the shapes of the standard library are settled. The freeze has been lifted a handful of times on purpose, each time by name, for small additions.
- The toolchain still moves. Commands, flags and plugin wiring can change between releases until the stability commitment in phase 7.
- 1.0 is declared, not scheduled: when there are two targets, the tooling, a book, a way to publish and a way to install — and it has been in somebody’s hands long enough to believe in it.
- Performance is measured continuously; the goal of matching Elixir overall is not met yet.
Rough edges
- No string interpolation.
- An arithmetic function passed as a value must be qualified:
praxis.core/+, not+. - A protocol function is called qualified, even inside its own namespace.
- Records print in their raw struct form.
- A newly generated project needs its test plugin wired up by hand before
prx testruns.
Trying it
Not yet. Nothing is published: there is no public repository, no package and no installer. Distribution is exactly what phase 7 is for, and this page will say so when it happens. Until then, the language reference shows what you would be writing.