joetjen.net
EN DE
Programming language

Status and roadmap

Where Praxis is, what comes next, and what to expect before 1.0. As of late September 2026.

In development · v0.60

Phases

  • DonePhase 0–1 (v0.1–v0.8, August) — compiles to the BEAM; namespaces and a prompt; interop, records and exceptions; a standard library; prx with 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 publish and 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 test runs.

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.