Mojo 1.0 Beta Arrives as Modular Declares the AI-Native Systems Language Feature Complete
Modular ships Mojo v1.0.0b1 on May 7, 2026, deprecating the fn keyword, enabling default CPU bounds checking, and expanding GPU support to AMD MI250X and NVIDIA B300.
Overview
Modular released Mojo v1.0.0b1 on May 7, 2026, marking the first beta of the AI-focused systems programming language and signaling that its core feature set is now locked in. Shipping alongside Modular 26.3, the beta brings a series of breaking changes designed to clean up the language before it reaches a stable 1.0 — including deprecation of the fn keyword, default CPU bounds checking, and GPU hardware support for AMD MI250X and NVIDIA B300 chips.
As Modular’s official blog described the release, “Mojo 1.0 will be finalized later this year, along with opening the compiler and providing language stability.”
What We Know
A Beta Built to Break Things Cleanly
Mojo v1.0.0b1 is the first release to carry a 1.x version number, and the official release notes make clear that compatibility with earlier Mojo code was deliberately sacrificed in order to ship a cleaner language. The most disruptive change: the fn keyword for function declarations is deprecated.
As the release notes state verbatim: “The fn keyword for function declarations is deprecated. Mojo now emits a compiler warning on uses of fn; this will become a compilation error in the next release.”
This matters because fn was previously Mojo’s primary mechanism for defining functions with strict ownership semantics — a syntactic hallmark that distinguished Mojo from Python’s def. With the beta, Modular is unifying function declaration under def alone.
Other removals in the beta are similarly aimed at tightening safety defaults. The NDBuffer type has been fully removed from the standard library — the release notes state: “NDBuffer has been fully removed from the standard library. Migrate to TileTensor.” Negative indexing has been removed from all standard-library collections, with Modular explaining the rationale: “Negative indexing has been removed from all stdlib collections…to enable cheap CPU bounds checks by default.”
The payoff from that removal is immediate: the release notes confirm that “Bounds checking is now on by default for all collections on CPU. Out-of-bounds accesses report the user’s call site.”
What Mojo Is — and Is Not
In a first-look review published May 20, 2026, InfoWorld described the beta as sharpening Mojo’s identity: “Mojo is not a drop-in replacement for Python. It still features Python-esque syntax and uses many of Python’s concepts, but is unmistakably headed in its own direction.”
The Mojo website pitches the language with the tagline “Write like Python, run like C++” — combining “Python’s intuitive syntax, Rust’s memory safety, and Zig’s powerful and intuitive compile-time metaprogramming.”
According to InfoWorld, the design goal is a language that “aims to be a systems language with precise control over memory and strong types, while sporting convenience features inspired by higher-level languages.” Memory management follows a Rust-style ownership model, tracked at compile time rather than via garbage collection. Ownership transfer uses a ^ transfer sigil, and variables can use the ref keyword “to take a reference rather than make a copy.”
Four pointer types are available in the beta — Pointer, OwnedPointer, ArcPointer, and UnsafePointer — and UnsafePointer is non-null by design, with nullable variants expressed as Optional[UnsafePointer[...]].
GPU Expansion and Native Hardware Support
GPU programming is a first-class feature in Mojo, with the language designed to run on heterogeneous hardware without vendor-specific libraries. The 1.0 beta expands hardware support: the release notes confirm that AMD MI250X and NVIDIA B300 (sm_103a) support has been added. Apple Metal also gains new capabilities in the beta, including print() support in GPU kernels, dynamic threadgroup memory, and M5 MMA intrinsics for Apple Silicon.
GPU programming still requires manual boilerplate setup, according to InfoWorld, which noted the experience differs from Python’s Numba-style decorator-based GPU dispatch. A native gpu package in the standard library, with a DevicePassable trait for passing data to GPU kernels, provides the core abstraction. The beta also adds 1D TMA instructions for NVIDIA SM90+ GPUs and a new tile_io module for TileTensor data movement.
Python Interoperability: Power and Cost
Mojo’s relationship with Python is central to its pitch but comes with caveats. The Mojo website states that “Mojo natively interoperates with Python,” and the language can call CPython libraries directly from Mojo code. However, InfoWorld noted that “Mojo and Python types must be converted in both directions, and the cost of making function calls in either direction isn’t trivial” — a friction similar to Python-C extension boundaries.
Error handling also diverges from Python conventions: the review noted that “the common Python pattern of try:/except ThisError:/except ThatError:/except Exception: doesn’t exist in Mojo,” as the language restricts catching multiple exception types in a single block.
Unicode Strings and Standard Library Cleanup
The 1.0 beta also makes a significant string-handling commitment: grapheme cluster support lands in String and StringSlice with full UAX #29 Unicode segmentation. The release notes list a graphemes() iterator, count_graphemes(), and a new [grapheme=...] slicing syntax, along with reverse iteration support for grapheme clusters.
The atomic operations module has been reorganized into a dedicated std.atomic namespace, with Consistency renamed to Ordering and MONOTONIC renamed to RELAXED. The argument order for compare_exchange() was also swapped — success ordering before failure ordering.
Open Source and Repository Status
The Mojo standard library is fully open-source, and the Mojo website states: “we plan to open-source the Mojo compiler in 2026.” The compiler open-sourcing is expected to coincide with the full 1.0 stable release, targeted for fall 2026.
The modular/modular GitHub repository has accrued 26.2k stars and 2.8k forks, with contributions from over 6,000 developers. Mojo code accounts for 54.7 percent of the repository’s language composition, with Python at 36.8 percent.
What We Don’t Know
Modular has not disclosed a precise date for the full Mojo 1.0 stable release beyond describing it as targeting fall 2026. The open-sourcing of the compiler — planned for the same timeframe — has similarly not received a specific date. Benchmarks comparing Mojo 1.0 beta performance against Python, Rust, or C++ on production workloads have not been published by Modular alongside this release.
The GPU programming experience gap relative to Python tools such as Numba remains an open question for adoption: lowering that friction barrier may be as important to Mojo’s ecosystem growth as the language semantics themselves.
Analysis
Mojo has arrived at a consequential inflection point. By deprecating fn, removing negative indexing, and shipping default bounds checking, Modular is accepting near-term pain — existing Mojo code will produce compiler warnings and eventually break — in exchange for a cleaner foundation for the stable release. That is the behavior of a team confident the language’s user base is small enough to absorb a migration and growing fast enough that the cleanup is worth the cost.
The decision to expand GPU support to AMD MI250X and NVIDIA B300 in the same release signals that Mojo is tracking the hardware frontier seriously. B300 support shipping in a beta release means Modular is not waiting for stable to chase new silicon.
Whether Mojo carves out meaningful territory alongside Rust and C++ in systems programming remains to be seen. Its strongest differentiated bet remains native GPU programming without vendor-specific toolkits — a category where no language has yet established a clear winner.