Mojo は、 LinuxおよびmacOS向けの開発中の独自プログラミング言語です。[ 6 ] [ 7 ]これは、静的型付けや借用チェッカーなど、 Rustに影響を受けたセマンティクスを持つシステムプログラミング言語ですが、[ 8 ] [ 9 ] ( NimやJuliaのように) Pythonを彷彿とさせるように設計された構文を使用しています。[ 10 ] [ 11 ] [ 12 ]当初は Python のスーパーセットとなることを意図していましたが、この目標は 2026 年 3 月までに放棄されたか、無期限に延期されました。[ 13 ] Modular は、2026 年秋に Mojo をオープンソース化する予定です。[ 14 ] 2026 年 5 月に、Modular は Mojo 1.0 の最初のベータ版をリリースし、言語の Web サイトを立ち上げました。[ 15 ]
Mojo は、 Julia、Swift、C++、Rustなどの言語で使用されている低レベルのLLVMコンパイラ フレームワークに直接基づくのではなく、マルチレベル中間表現 ( MLIR ) コンパイラソフトウェア フレームワークをベースに構築されています。 [ 16 ] [ 17 ] MLIR は、LLVM 単体では利用できない高レベルのコンパイラ パスを Mojo が活用できるようにする新しいコンパイラ フレームワークであり、Mojo がコンパイルダウンして、CPU だけでなく、グラフィックス処理ユニット(GPU)、テンソル処理ユニット(TPU)、特定用途向け集積回路(ASIC)、その他のアクセラレータで実行できるコードを生成するなど、より多くの対象をターゲットにすることができます。また、他の多くの言語で行われているように、開発者によるわずかな介入で、単一命令複数データ(SIMD)などの特定のタイプの CPU 最適化をより効果的に直接使用することもできます。[ 18 ] [ 19 ] fast.ai のJeremy Howard氏によると、Mojo は「MLIR の構文糖衣」と見なすことができ、そのため Mojo は人工知能(AI) などのアプリケーションに最適化されているとのことです。[ 20 ]
Mojoプログラミング言語は、Swiftプログラミング言語とLLVMのオリジナルアーキテクトであるクリス・ラットナーと、元Google社員のティム・デイビスによって設立されたModular Inc.によって作成されました。 [ 21 ] Mojoの背後にある意図は、Pythonの使いやすさと最先端のAIアプリケーションに必要な高速パフォーマンスとの間のギャップを埋めることです。[ 22 ]
公開されている変更ログによると、Mojo の開発は 2022 年に遡ります。[ 23 ] 2023 年 5 月には、ホストされたプレイグラウンドを介してオンラインで公開テスト可能な最初のバージョンが利用可能になりました。[ 24 ] 2023 年 9 月までに Mojo は Linux 用のローカルダウンロードが可能になり[ 25 ] 、2023 年 10 月にはApple のmacOS用のダウンロードも可能になりました。 [ 26 ] SDK には、コマンドライン ドライバ、Visual Studio Code拡張機能、およびJupyterカーネルが含まれていました。[ 7 ]
2024年3月、ModularはMojo標準ライブラリをオープンソース化し、Apache 2.0ライセンスの下でコミュニティからの貢献の受け入れを開始しました。[ 27 ] [ 28 ]
2025 年 12 月、Modular は 1.0 リリースに向けたロードマップを公開し、Mojo 1.0 ではコア言語機能が安定化され、matchステートメントや列挙型などの追加機能は 1.x リリースで追加されると述べた。[ 29 ] 2026 年 5 月 7 日、Modular は Mojo 1.0.0 beta 1 をリリースし、言語の Web サイト mojolang.org を立ち上げた。[ 15 ] [ 30 ]
Mojo は Python からの移行を容易にするために作成されました。この言語は Python と似た構文を持ち、推論による静的型付けが採用されており[ 31 ] 、Pythonモジュールをインポートできます[ 32 ] [ 33 ]。コンパイル バックエンドとしてLLVMとMLIR を使用しています[ 12 ] [ 34 ] [ 35 ]。Mojoプログラムは CPython ランタイムを介して Python モジュールをインポートして呼び出すことができ、Mojo 関数は C 互換バインディングを介して Python から呼び出すことができます[ 15 ] 。この言語はPython 3 とソース互換性がありません。Python のクラス システムをサポートしていません。代わりに、メソッド、フィールド、演算子オーバーロード、デコレータをサポートするクラスのメモリ最適化代替手段である構造体型を提供します[ 36 ] [ 15 ] 。Pythonスタイルのリスト、セット、辞書内包表記がサポートされています[ 37 ] 。
この言語には、 Rustの影響を受けた借用チェッカーも備わっています。[ 38 ]関数の引数は、デフォルトでは不変参照として渡されます (読み取り規約)。関数は代わりに、引数を可変参照 ( mut )として宣言したり、引数の所有権を取得したりすることができ、所有権は^演算子で移転できます。[ 15 ] [ 39 ]
Mojo標準ライブラリはApache 2.0ライセンスの下でオープンソースですが、コンパイラはそうではありません。Modularは2026年秋にオープンソース化することを約束しています。[ 40 ] [ 14 ]
Mojo は標準ライブラリのgpuパッケージを通じてGPU プログラミングをサポートしています。 [ 15 ]オークリッジ国立研究所の研究者による 2025 年の研究では、 SC25 WACCPD ワークショップで発表された結果、Mojo の GPU カーネルは、Nvidia および AMD アクセラレータ上のメモリバウンドワークロードにおいてCUDAおよび HIP とほぼ同等の性能を発揮する一方、AMD GPU 上のアトミック操作および高速数学計算バウンドワークロードでは性能ギャップが見られることが分かりました。[ 41 ]
Mojo の関数はdefで宣言されます。以前のバージョンでは、より厳密な静的型付け関数用にfnキーワードも提供されていましたが、すべての関数にdef を使用するように変更されたため、 fn は2026 年に非推奨になりました。[ 42 ] [ 43 ]関数は、型付きパラメータと戻り値の型を宣言できます。
def add ( x : Int , y : Int ) -> Int : """型付き加算。""" return x + y変数は、ブロック レベルのスコープを与えるvarを使用して明示的に宣言することも、Python の動作に一致する関数レベルのスコープを与える代入によって暗黙的に宣言することもできます。 [ 44 ]
def main (): var total = add ( 1 , 2 ) # 明示的に宣言doubled = total * 2 # 暗黙的に宣言print ( doubled )Mojoには当初、不変バインディングのためのletキーワードが含まれていましたが[ 36 ]、2024年に言語から削除されました[ 45 ]。
構造体は、Mojo のコンパイル時にレイアウトされる Python クラスの代替手段です。@fieldwise_initデコレータは宣言されたフィールドからコンストラクタを合成し、Copyableなどのトレイトはサポートされている動作を宣言します。[ 15 ]
@fieldwise_init struct Point ( Copyable , Movable ): var x : Int var y : Intdef magnitude_squared ( self ) - > Int : return self.x * self.x + self.y * self.ydef main ( ): p = Point ( 3 , 4 ) print ( p.magnitude_squared ( )) # 25MojoプログラムはCPythonランタイムを介してPythonモジュールをインポートして使用できます。[ 33 ]
from std.python import Pythondef main ( ) raises : math = Python.import_module ( " math " ) print ( math.sqrt ( 2.0 ) )は、Pythonと同じくらい使いやすく、C++やRust並みのパフォーマンスを持つプログラミング言語です。さらに、MojoはPythonライブラリのエコシステム全体を活用できる機能を提供します。
現在、他の多くのプロジェクトがMLIRを使用していますが、MojoはMLIR専用に設計された最初の主要言語であり、AIワークロードのシステムレベルのコードを記述する際にMojoを他に類を見ないほど強力にしています。