Mojo FAQ
We tried to anticipate your questions about Mojo on this page. If this pagedoesn't answer all your questions, also check out ourcommunitychannels.
Motivation
Why did you build Mojo?
We built Mojo to solve an internal challenge when building theModularPlatform—programming across the entire stack was toocomplicated. We wanted a flexible and scalable programming model that couldtarget CPUs, GPUs, AI accelerators, and other heterogeneous systems that arepervasive in the AI field. This meant a programming language with powerfulcompile-time metaprogramming, integration of adaptive compilation techniques,caching throughout the compilation flow, and other features that are notsupported by existing languages.
As a result, we're extremely committed to Mojo's long term success and areinvesting heavily in it. Our overall mission is to unify AI software and wecan’t do that without a unified language that can scale across the whole AIinfrastructure stack. Our current focus is to unify CPU and GPU programmingwith blazing-fast execution for the Modular Platform. That said, the north staris for Mojo to support the whole gamut of general-purpose programming overtime.
For more detail, see theMojo vision.
Why is it called Mojo?
Mojo means "a magical charm" or "magical powers." We thought this was a fittingname for a language that brings magical powers to Python, including unlockingan innovative programming model for accelerators and other heterogeneoussystems pervasive in AI today.
Why does Mojo have the 🔥 file extension?
We paired Mojo with fire emoji 🔥 as a fun visual way to impart onto users thatMojo empowers them to get their Mojo on—to develop faster and more efficientlythan ever before. We also believe that the world can handle a unicode extensionat this point, but you can also just use the.mojo extension. :)
What problems does Mojo solve that no other language can?
Mojo combines the usability of Python with the systems programming featuresit’s missing. We are guided more by pragmatism than novelty, but Mojo’s use ofMLIR allows it to scale to new exotic hardware typesand domains in a way that other languages haven’t demonstrated. It alsohas caching and distributed compilation built into itscore. We also believe Mojo has a good chance of unifying hybrid packages in thebroader Python community.
What kind of developers will benefit the most from Mojo?
Mojo’s initial focus is to bring programmability back to AI, enabling AIdevelopers to customize and get the most out of their hardware. As such, Mojowill primarily benefit researchers and other engineers looking to writehigh-performance AI operations. Over time, Mojo will become much moreinteresting to the general Python community as it grows to be a superset ofPython. We hope this will help lift the vast Python library ecosystem andempower more traditional systems developers that use C, C++, Rust, etc.
Why build upon Python?
Effectively, all AI research and model development happens in Python today, andthere’s a good reason for this! Python is a powerful high-level language withclean, simple syntax and a massive ecosystem of libraries. At Modular, one ofour core principles is meeting customers where they are—our goal is not tofurther fragment the AI landscape but to unify and simplify AI developmentworkflows.
Our focus is to innovate in the programmability for AI workloads onheterogeneous hardware, and we don't see any need to innovate in languagesyntax orcommunity. So we chose to embrace the Python ecosystem becauseit's so widely used, it's loved by the AI ecosystem, and because we believe itis a really nice language.
Why not enhance CPython (the major Python implementation) instead?
For a variety of reasons, Python isn't suitable for systems programming.Python has amazing strengths as a glue layer—it offers low-levelbindings that allow developers to build libraries in C, C++ and many otherlanguages that have better performance characteristics. This enablesthings like NumPy and PyTorch, and a vast number of other libraries inthe AI ecosystem, but it comes with a cost.
Building these hybrid libraries is very complicated. It requires a deepunderstanding of CPython and strong C/C++ (or other) programming abilities(undermining one of the original goals of using Python in the first place).These hybrid-language libraries also create problems for the library users,because debuggers generally can't step between Python and C/C++ code.
We’re thrilled to see a big push to improve the performance ofCPython, but our goals for Mojo (suchas to deploy onto GPUs and other accelerators) requires a fundamentallydifferent architecture and compiler approach. That said, CPython is still acritical part of our compatibility approach and powersMojo's Pythoninteroperability.
Why not enhance another Python implementation (like Codon, PyPy, etc)?
Codon and PyPy aim to improve performance compared to CPython, but Mojo’s goalsare much deeper than this. Our objective isn’t just to create "a fasterPython," but to enable a whole new layer of systems programming that includesdirect access to accelerated hardware.
Many hardware accelerators support very limited dynamic features, or do so withterrible performance. Furthermore, systems programmers don't seek only"performance," but also demand a lot of predictability and control over how acomputation happens, so in some cases we cannot accept dynamic features at all.
Furthermore, solving big challenges for the computing industry is hard andrequires a fundamental rethinking of the compiler and runtime infrastructure.This drove us to build an entirely new approach and we’re willing to put in thetime required to do it properly, rather than tweaking an existing system thatwould only solve a small part of the problem. For more detail, see our blogpost aboutHow Modular is Democratizing AICompute.
Why not make Julia better?
We thinkJulia is a great language and it has awonderful community, but Mojo is completely different. While Julia and Mojomight share some goals and look similar as an easy-to-use and high-performancealternative to Python, we’re taking a completely different approach to buildingMojo. Notably, Mojo is Python-first and doesn't require existing Pythondevelopers to learn a new syntax.
Mojo also has a bunch of technical advancements compared to Julia, simplybecause Mojo is newer and we’ve been able to learn from Julia (and from Swift,Rust, C++ and many others that came before us). For example, Mojo takes adifferent approach to memory ownership and memory management, it scales down tosmaller envelopes, and is designed with AI and MLIR-first principles (thoughMojo is not only for AI).
That said, we also believe there’s plenty of room for many languages and thisisn’t an OR proposition. If you use and love Julia, that's great! We’d love foryou to try Mojo and if you find it useful, then that's great too.
Functionality
Where can I learn more about Mojo’s features?
The best place to start is theMojo Manual. And if you want tosee what features are coming in the future, take a look attheroadmap.
What are the benefits of building Mojo with MLIR?
When we realized that no existing language could solve the challenges inAI compute, we embarked on a first-principles rethinking of how a programminglanguage should be designed and implemented to solve our problems. Because werequire high-performance support for a wide variety of accelerators,traditional compiler technologies like LLVM and GCC were not suitable (and anylanguages and tools based on them would not suffice). Although they support awide range of CPUs and some commonly used GPUs, these compiler technologieswere designed decades ago and are unable to fully support modern chiparchitectures. Nowadays, the standard technology for specialized machinelearning accelerators is MLIR.
MLIR provides a flexible infrastructure for buildingcompilers. It’s based upon layers of intermediate representations (IRs) thatallow for progressive lowering of any code for any hardware, and it has beenwidely adopted by the hardware accelerator industry sinceits firstrelease.Its greatest strength is its ability to builddomain specific compilers,particularly for weird domains that aren’t traditional CPUs and GPUs, such asAI ASICS,quantum computing systems,FPGAs, andcustom silicon.
Although you can use MLIR to create a flexible and powerful compiler for anyprogramming language, Mojo is the world’s first language to be built from theground up with MLIR design principles. This means that Mojo not only offershigh-performance compilation for heterogeneous hardware, but it also providesdirect programming support for the MLIR intermediate representations, whichcurrently isn't possible with any other language.
Is Mojo only for AI or can it be used for other stuff?
Mojo's initial focus is to solve AI programmability challenges. However, ourgoal is to grow Mojo into a general purpose programming language. We use Mojoat Modular to develop AI algorithms andGPUkernels, but you can use it for other thingslike HPC, data transformations, writing pre/post processing operations, andmuch more.
Is Mojo interpreted or compiled?
Mojo is a compiled language.mojo build performsahead-of-time (AOT) compilation to save an executable program.mojo run performs just-in-time (JIT) compilation to execute a Mojosource file without saving the compiled result.
How does Mojo compare to Triton Lang?
Triton Lang is a specializedprogramming model for one type of accelerator, whereas Mojo is a more generallanguage that will support more architectures over time and includes adebugger, a full tool suite, etc.
For more about our thoughts on embedded domain-specific languages (EDSLs) likeTriton, readDemocratizing AI Compute, Part7.
Does Mojo support distributed execution?
Not alone. Mojo is one component of the Modular Platform, whichmakes it easier for you to author highly performant, portable CPU and GPU graphoperations, but you’ll also need a runtime (or "OS") that supports graph leveltransformations and heterogeneous compute, which is provided byMAX.
How do I convert Python programs or libraries to Mojo?
You can migrate parts of a Python project to Mojoby building Mojo bindings for Python. See the documentation about how tocallMojo from Python.
What about interoperability with other languages like C/C++?
Yes, we want to enable developers to port code from languages other than Pythonto Mojo as well. We expect that due to Mojo’s similarity to the C/C++ typesystems, migrating code from C/C++ should work well and it’s inourroadmap.
How does Mojo support hardware lowering?
Mojo leverages LLVM-level dialects for the hardware targets it supports, and ituses other MLIR-based code-generation backends where applicable. This alsomeans 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 extendhardware support. As such, we expect hardware vendors and community memberswill contribute additional hardware support in the future.
Performance
Are there any AI related performance benchmarks for Mojo?
It’s important to remember that Mojo is designed to be a general-purposeprogramming language, and any AI-related benchmarks will rely heavily uponother framework components. For example, our in-house CPU and GPU graphoperations that power the Modular Platform are all written in Mojo and you canlearn more about performance in ourmatrix multiplication blogpost.For details about our end-to-end model performance, read abouthow we measureperformance atModular.
Mojo SDK
How can I get the Mojo SDK?
You can get Mojo and all the developer tools by installingmojo withany Python or Conda package manager. For details, see theMojo installation guide.
Is the Mojo Playground still available?
No. We shut it down with the v25.6 release.
Here's the story: When we announced Mojo in May, 2023, Mojo wasn'tavailable in an SDK; it was available only in web-hosted a JupyterLabenvironment. After we made Mojo available for local development, weshut down the JupyterLab environment and launched a new Mojo Playgroundfor people to try Mojo on the web. But ever since we made the Mojo SDKavailable for Linux and Mac, Mojo Playground usage steadily declined.The trickle of users we get now no longer justifies the maintenanceand hosting costs.
See how toinstall Mojo.
What are the license terms for the SDK?
Please read theTerms of use.
What operating systems are supported?
Mac and Linux. For details, see theMojo system requirements.
Is there IDE Integration?
Yes, we've published an official Mojo language extension forVisual Studio Code and other editors thatsupport VS Code extensions (such asCursor). Theextension supports various features including syntax highlighting, codecompletion, formatting, hover, etc. It works seamlessly with remote-ssh and devcontainers to enable remote development in Mojo.
You can obtain the extension from either theVisual Studio Code Marketplaceor theOpen VSX Registry.SeeAdd the VS Code extension formore information.
Does the Mojo SDK collect telemetry?
Yes, the Mojo SDK collects some basic system information, crash reports, andsome LSP events that enable us to identify, analyze, and prioritize Mojoissues. 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, theonly information used in the report is the OS version and MAX/Mojo version.
- LSP performance metrics: The Mojo LSP reports aggregate data on how longit takes to respond to user input (parsing latency). The only informationused in the report is the milliseconds between user keystrokes and when theMojo LSP is able to show appropriate error or warning messages.
No user information, such as source code, keystrokes, or any other user data,is ever collected or transmitted.
This telemetry is crucial to help us quickly identify problems and improve ourproducts. Without this telemetry, we would have to rely on user-submitted bugreports, and in our decades of experience building developer products, we knowthat most people don't do that. The telemetry provides us the insights we needto build better products for you.
Versioning & compatibility
What’s the Mojo versioning strategy?
Mojo is still in early development and not at a 1.0 version yet. It’sstill missing many foundational features, but please take a look at ourroadmap to understand where things are headed. As such,the language is evolving rapidly and source stability is not guaranteed.
How often will you be releasing new versions of Mojo?
Mojo development is moving fast and we are regularly releasing updates,including nightly builds almost every day.
Join theMojo Discord channel for notificationsandsign up for our newsletter formore coarse-grain updates.
Open Source
Will Mojo be open-sourced?
We have committed to open-sourcing Mojo in 2026.Mojo is still young, so we will continue to incubate it within Modular untilmore of its internal architecture is fleshed out.
Why not develop Mojo in the open from the beginning?
Mojo is a big project and has several architectural differences from previouslanguages. We believe a tight-knit group of engineers with a common vision canmove faster than a community effort. This development approach is alsowell-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 suggestionsfor the language, be sure you first read theMojo roadmap, whichprovides important information about our current priorities.
To get in touch with the Mojo team and developer community, use the resourceson ourcommunity page.
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!
😔 What went wrong?
- Motivation
- Why did you build Mojo?
- Why is it called Mojo?
- Why does Mojo have the 🔥 file extension?
- What problems does Mojo solve that no other language can?
- What kind of developers will benefit the most from Mojo?
- Why build upon Python?
- Why not enhance CPython (the major Python implementation) instead?
- Why not enhance another Python implementation (like Codon, PyPy, etc)?
- Why not make Julia better?
- Functionality
- Where can I learn more about Mojo’s features?
- What are the benefits of building Mojo with MLIR?
- Is Mojo only for AI or can it be used for other stuff?
- Is Mojo interpreted or compiled?
- How does Mojo compare to Triton Lang?
- Does Mojo support distributed execution?
- How do I convert Python programs or libraries to Mojo?
- What about interoperability with other languages like C/C++?
- How does Mojo support hardware lowering?
- Who writes the software to add more hardware support for Mojo?
- Performance
- Mojo SDK
- Versioning & compatibility
- Open Source
- Community
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!
