Skip to main content
Mzizi is not yet a working programming language. It has no expressions, bindings, callable functions, loops, error handling, modules or standard library yet. Only a service lowers to Rust, as a local Rust + axum package; no component lowers, and there is no Workers, Containers or WebAssembly target.
LANGUAGE-TRACKER.md, at the root of mzizi-dev/mzizi, is the one list of what Mzizi still needs before it can be called a working programming language, stacked against the languages it aims to replace. By the owner’s decision of 30 September 2026 it is the ultimate tracker: if a capability is not ✅ there, Mzizi does not have it, whatever any other page says. These docs take every capability claim from it. This page summarises it at language main 62a0f32; read the file for the evidence behind each row. Status in the tracker is what the code on main does, never what an RFC designs:

Where Mzizi stands today

What exists is the front end of a language whose first domain is UI components:
  • Syntax: 23 keywords (compiler/src/lex.rs), one component per file.
  • Types: bool, int, text, enums with data columns, records, list(T), option(T) and event(T) (RFC-0008).
  • Toolchain: mz check (with --agent), mz fix, mz contract, mz outline, and mz build for a service only; a recovering parser, a resolver and a content-addressed IR. See the compiler.
  • Written in Mzizi: nine primitives, two component examples and one service, examples/registry.mz.
  • The backend slice (RFC-0011, language PRs #29–#33): a service with HTTP routes and handlers, checked by mz check, run in process by mz contract, and lowered by mz build to a local Rust + axum package, which CI compiles, tests and serves. The mzizi-be benchmark arm, the probe crate mzprobe and backend task B1 exist; no backend episode has run.
What does not exist yet is almost everything a general-purpose program needs. A fn body is not modelled beyond emit, which is why the public benchmark suites are blocked: they need functions.

Against the languages Mzizi aims to replace

Mzizi’s column from the tracker, condensed. The tracker also gives each incumbent’s answer (Python, Go, C++, TypeScript and Rust have every one of the first rows). The two ✅ rows are where Mzizi is different on purpose. Every other row is work.

The work, tier by tier

Each row in the tracker has a “done when” acceptance test, and turns ✅ only when that test is on main and green.
The harness (H1) is the core of the language, what the agent reads. Of it, only the agent protocol (mz check --agent, mz fix) exists; the rest is RFC-0012, a draft.

What each step unlocks for the benchmark

Phase 0’s goal cannot be tested beyond what the language can express (the benchmark): The kill-criterion run has not happened. Nothing in the tracker is a claim that Mzizi is better than any language; it lists what has to exist before that can be measured.

Milestones

1

M1, a language that computes

All of Tier 1 ✅. This unblocks the public suites. Not reached.
2

M2, a working programming language

Tier 1 plus P1–P6 ✅: you can write a general program in several files, use a Rust crate, and build and run it. Only at M2 does the tracker say Mzizi is a working programming language. Not reached.
3

M3, a language people choose

The rest of Tier 2 and Tier 3 ✅, and the kill criterion run and published. Not reached.