Version: 1.1.0
Mojo roadmap
This is the direction of the language, grouped into phases. Phases are not version numbers and they do not have ship dates. Status marks are a snapshot: done, in progress, or not started.
North star
A single language for high-performance code on heterogeneous hardware, approachable to people who write Python, and strict enough for systems programming. Short-term work stays tied to that outcome.
Phase 0
The parser, memory model, functions, structs, initializers, and argument conventions. Early overlapping libraries were folded into one standard library as the design settled.
Phase 1
Phase 1 made Mojo a language you can write kernels in, on CPUs and accelerators, and a language you can use to extend Python. It is complete, and it ended with the compiler being open source.
Done in this phase:
- Compile-time parameters,
comptimecontrol flow, and traits - Trait composition, default methods, and conditional conformance
whereclauses and parametricraises- Python export and build integration
- Core types:
List,Dict,String,SIMD, pointers - Lambdas, variadic arguments, and explicit-destroy types
- GPU tensor, layout, and basic algorithm abstractions
Still moving, and carried into phase 2: the language server, debugger, and the long tail of attribute macros.
Not in phase 1: untyped Python variables, and a promise of matching the Python standard library.
Phase 2
Phase 2 is the current phase. The theme is application-level systems programming: servers, networking, small devices, and a broader toolchain. The language should stay smaller than C++ and Rust.
Not started, or only sketched:
- First-class
async - Dynamic traits
- Struct extensions and algebraic data types
- Pattern matching and richer runtime reflection
- Access control beyond the underscore convention
- Safer origins inside collections, and more ergonomic mutable aliasing
- A package manager and wider hardware support
In progress: cross compilation, tests, benchmarks, the debugger, the language server, and the VS Code extension. A profiler is still ahead.
Phase 3
Dynamic features associated with Python: classes, inheritance, and untyped variables. Detailed design waits until phase 2 has landed. Mojo may become closer to Python without becoming a strict superset.
Always
Diagnostics, compile time, standard-library cleanup, and new hardware backends are not attached to a phase. They continue for as long as the language does.
Contributing
The compiler, standard library, and docs take contributions. Read Contributing before starting a large change, and open an issue for bugs.