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, comptime control flow, and traits
  • Trait composition, default methods, and conditional conformance
  • where clauses and parametric raises
  • 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.