IMPORTANT: To view this page as Markdown, append `.md` to the URL (e.g. /docs/manual/basics.md). For the complete Mojo documentation index, see llms.txt.
Skip to main content
Version: 1.0.0
For the complete Mojo documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /docs/manual/basics.md).

Mojo FAQ

We tried to anticipate your questions about Mojo on this page. If this page doesn't answer all your questions, see Mojo vision for the history and motivation behind the Mojo language, and the roadmap for a high-level view of what's next for Mojo.

Motivation

Why did you build Mojo?

We built Mojo to solve an internal challenge when building the Modular Platform—programming across the entire stack was too complicated. We wanted a flexible and scalable programming model that could target CPUs, GPUs, AI accelerators, and other heterogeneous systems that are pervasive in the AI field. This meant a programming language with powerful compile-time metaprogramming, integration of adaptive compilation techniques, caching throughout the compilation flow, and other features that existing languages don't support.

As a result, we're extremely committed to Mojo's long-term success and are investing heavily in it. Our overall mission is to unify AI software and we can't do that without a unified language that can scale across the whole AI infrastructure stack. Our current focus is to unify CPU and GPU programming with blazing-fast execution for the Modular Platform. That said, the north star is for Mojo to support the whole gamut of general-purpose programming over time.

For more detail, and insight into why we built Mojo the way we did, see the Mojo vision.

Why is it called Mojo?

Mojo means "a magical charm" or "magical powers." We thought this was a fitting name for a language that brings magical powers to programmers, including unlocking an innovative programming model for accelerators and other heterogeneous systems pervasive in AI today.

Functionality

Where can I learn more about Mojo's features?

The best place to start is the Mojo Manual. And if you want to see what features are coming in the future, take a look at the roadmap.

Is Mojo only for AI, or can I use it for other things?

Mojo's initial focus was to solve AI programmability challenges. However, our goal is to grow Mojo into a general-purpose programming language. We use Mojo at Modular to develop AI algorithms and GPU kernels, but you can use it for other things like HPC, data transformations, writing pre/post processing operations, libraries, and much more. See the community page to get inspired by the projects others are writing in Mojo!

Is Mojo interpreted or compiled?

Mojo is a compiled language. mojo build and mojo run both perform ahead-of-time (AOT) compilation.

Does Mojo support distributed execution?

Not alone. Mojo is one component of the Modular Platform, which makes it easier for you to author highly performant, portable CPU and GPU graph operations, but you'll also need a runtime (or "OS") that supports graph-level transformations and heterogeneous compute, which the MAX framework provides.

How do I convert Python programs or libraries to Mojo?

See Tips for Python devs for a quick primer on important differences between Python and Mojo. The Mojo AI skills can help your AI coding assistant translate Python code into working Mojo code.

You can also migrate parts of a Python project to Mojo by building Mojo bindings for Python. See the documentation about how to call Mojo from Python.

What about interoperability with other languages like C/C++?

Mojo code is interoperable with C code. For information, see the docs for the ffi module, the @export decorator, and the abi("C") function effect.

Mojo code is also interoperable with C++ code that uses extern "C". We believe we can deliver better C++ interoperability in the future.

How does Mojo support hardware lowering?

Mojo leverages LLVM-level dialects for the hardware targets it supports, and it uses other MLIR-based code-generation backends where applicable. This also means that Mojo is easily extensible to any hardware backend.

Who writes the software to add more hardware support for Mojo?

Mojo provides all the language functionality necessary for anyone to extend hardware support. As such, we expect hardware vendors and community members to contribute additional hardware support in the future.

Performance

Remember that we designed Mojo as a general-purpose programming language, and any AI-related benchmarks rely heavily upon other framework components. For example, our in-house CPU and GPU graph operations that power the Modular Platform are all written in Mojo. You can learn more about performance in our blog posts on bringing the Modular Platform up on AMD MI355 and optimizing matmul performance on the NVIDIA Blackwell GPU.

Mojo SDK

How can I get the Mojo SDK?

You can get Mojo and all the developer tools by installing mojo with any Python or Conda package manager. For details, see the Mojo installation guide.

What's included in the Mojo SDK?

We actually offer two Mojo packages: mojo and mojo-compiler.

The mojo package gives you everything you need for Mojo development. It includes:

The mojo-compiler package is smaller and is useful for environments where you only need to call or build existing Mojo code. For example, this is good if you're running Mojo in a production environment or when you're programming in Python and calling a Mojo package—situations where you don't need the LSP and debugger tools. It includes:

If you're interested in GPU programming, install the max package, which includes the MAX framework and Mojo. For details, see Get started with GPU programming in the MAX documentation.

What are the license terms for the SDK?

Please read the Terms of use.

What operating systems does Mojo support?

Mojo supports Mac and Linux natively and supports Windows via WSL. For details, see the Mojo system requirements.

Is there IDE integration?

Yes, we've published an official Mojo language extension for Visual Studio Code and other editors that support VS Code extensions (such as Cursor). The extension supports various features including syntax highlighting, code completion, formatting, hover, etc. It works seamlessly with remote-ssh and dev containers to enable remote development in Mojo.

You can obtain the extension from either the Visual Studio Code Marketplace or the Open VSX Registry.

Does the Mojo SDK collect telemetry?

Yes, the Mojo SDK collects some basic system information, crash reports, and some LSP events that enable us to identify, analyze, and prioritize Mojo issues. v25.6 and earlier versions also collected compiler/runtime events, but we've since removed them.

Specifically, we collect:

  • Crash reports: When the Mojo compiler crashes with a stack trace, the only information used in the report is the OS version and MAX/Mojo version.
  • LSP performance metrics: The Mojo LSP reports aggregate data on how long it takes to respond to user input (parsing latency). The only information used in the report is the milliseconds between user keystrokes and when the Mojo LSP is able to show appropriate error or warning messages.

We never collect or transmit any user information, such as source code, keystrokes, or any other user data.

This telemetry is crucial to help us quickly identify problems and improve our products. Without this telemetry, we would have to rely on user-submitted bug reports, and in our decades of experience building developer products, we know that most people don't do that. The telemetry provides us the insights we need to build better products for you.

Versioning & compatibility

What's the Mojo versioning strategy?

Starting with Mojo 1.0, Mojo follows semantic versioning for the core language and stable portions of the standard library.

We consider language features stable unless we explicitly identify them as experimental or unstable.

We consider standard library APIs unstable unless we explicitly identify them as stable. Stable APIs are marked in the API documentation.

For more information, see Mojo stability guarantees.

See our roadmap to understand where things are headed.

How often do you release new versions of Mojo?

Mojo development is moving fast and we are regularly releasing updates. We aim to produce stable releases every six weeks, and nightly builds almost every night.

Join the Mojo Discord channel for notifications and sign up for our newsletter (on the bottom of the Mojo blog page) for more coarse-grained updates.

Open source

Will Mojo be open-sourced?

We have committed to open-sourcing Mojo in Fall 2026.

Why not develop Mojo in the open from the beginning?

Mojo is a big project and has several architectural differences from previous languages. We believe a tight-knit group of engineers with a common vision can move faster than a community effort. This development approach is also well-established from other projects that are now open source (such as LLVM, Clang, Swift, MLIR, etc.).

Community

Where can I ask more questions or share feedback?

If you have questions about upcoming features or have suggestions for the language, be sure you first read the Mojo roadmap, which provides important information about our current priorities.

To get in touch with the Mojo team and developer community, use the resources on our community page.