joetjen.net
EN DE
Programming language

Status and roadmap

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

In development · v0.63

Phases

Since 12 October there is one roadmap for everything in the repository — Praxis, prx, the libraries, WebGlue and Lictor — and Lictor drives it. On 17 October the phases were renumbered into the order they run.

  • 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.61, to 12 October) — linter, Dialyzer integration, the spec system, documentation in five formats, the MCP server and what idiomatic Praxis looks like, a debugger, performance work, supervision on node, a result namespace. The language freeze at v0.56.
  • DonePhase 6, Lictor outside-in: M35, Lictor serves its site (v0.62, 13 October), and M36, registration by invite link (v0.63, 19 October).
  • In progressPhase 6, next: M37, login and staying logged in — OAuth2 with an authorization server and a token server of Lictor’s own, a second factor by TOTP, a refresh token. Then linking a Twitch account, choosing a channel, the moderation view, acting on it, history and notes, moderating as a team, a plugin runtime with Logos in Praxis, and production-ready.
  • PlannedPhase 7, completion, bottom-up — every layer brought to its own specification beyond what Lictor needed, WebGlue in full among them.
  • PlannedPhase 8, distribution — prx publish and a registry, the language stability commitment, and installing Praxis with asdf. Only after it does 1.0 come up for discussion.
  • PlannedPhase 9, Praxis public, at a stable version — where 1.0 is declared, if it is.
  • PlannedPhase 10, Octavo — the book toolchain in Praxis, finished before any book is continued. Its first stage, fount and platen, is done.
  • PlannedPhase 11, the books — the tutorial in five parts against a language that no longer moves. Its preparation (v0.58) and Part I (v0.59) were written early; Part II is paused.
  • PlannedPhase 12, the split — every project but Praxis in a repository of its own, and the Elixir libraries replaced by their Praxis versions.

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 four times on purpose, each one written down: seq? and any? for specs, the ~c"…" charlist, quoted keywords, and def- with defmacro-. Bugs are still fixed.
  • Not pulled means not now. Until Lictor is production-ready, a lower layer grows only when one of its journeys needs it; the rest waits for phase 7.
  • The toolchain still moves. Commands, flags and plugin wiring can change between releases until the stability commitment in phase 8.
  • 1.0 is declared, not scheduled: when there are two targets, the tooling, Lictor in production, 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 new project declares its test plugin and formatter as Hex packages, and none is published yet: outside the repository, prx test cannot fetch them until phase 8.

Trying it

Not yet. Nothing is published: there is no public repository, no package and no installer. Distribution is exactly what phase 8 is for, and this page will say so when it happens. Until then, the language reference shows what you would be writing.