Mojo 1.0がリリース⁠一部APIを安定化し言語仕様を整理

Modularは2026年8月11日、プログラミング言語Mojoのバージョン1.0をリリースした。標準ライブラリの一部APIを安定指定したほか、名称やデフォルトの挙動、安全でない操作の扱いなどを整理している。

本番運用の実績をもとにバージョン1.0へ

Mojo 1.0は言語の完成を意味するものではなく、長期的な開発に使える安定した基盤と位置付けられている。Modularはバージョン1.0とした根拠として、Mojoを自社のAI開発・実行基盤MAXとModular Cloudに採用し、日々の本番環境で利用している実績を挙げた。

Modularは2024年3月、標準ライブラリのコアモジュールをオープンソース化した。それ以降、約200人のコントリビューターによる1100件を超えるプルリクエストが取り込まれ、変更行数は20万行を超えた。1000人を超える開発者から寄せられた問題報告や要望も、言語設計に影響を与えたという。

Mojo 1.0の変更履歴によると、1.0では標準ライブラリの一部APIが安定指定された。安定指定されたAPIは削除せず、既存コードの修正が必要になる変更も行わない。現時点で安定指定された範囲は限られ、Deinitableなどはトレイト全体、Arrayなどは一部のAPIが対象となっている。今後のリリースで対象を増やす予定。

言語の一貫性とメモリ安全性を改善

1.0では名称やデフォルトの挙動、安全でない操作の扱いを整理したため、通常のリリースより多くの破壊的変更が含まれる。ただし、ほぼすべての破壊的変更では、従来の書き方をすぐに使えなくするのではなく、移行用の非推奨の別名を用意している。コンパイラもfix-itとして修正候補を示すため、開発者はその提案に沿ってコードを移行できるという。

言語機能では、処理を一つの式で記述するPython風の無名関数lambdaを追加した。変数宣言ではvarを明示する仕様に変更し、InlineArrayArrayへ改称するなど、用語も整理している。

メモリ周りでは、PointerUnsafePointerを単一のPointer型に統合した。安全でない型を別に用意するのではなく、どの操作が安全でないかを個別に示す設計へ変更している。コンテナと内部要素の参照関係を追跡する実験的な仕組み「interior origins」により、ListDictを変更した際、保持していた要素への参照が無効になる可能性も検出できる。

このほか、コード補完などを担うMojoのLSPサーバーも、安定性と信頼性が向上した。

アクセラレーター関連APIをMAXへ移行

GPUなどのアクセラレーターに特化した一部APIは、Mojo標準ライブラリからMAXのmaxパッケージへ移動した。多次元データのメモリ配置を扱うlayoutパッケージもMAXに同梱され、GPUプログラミング関連のドキュメントもMAX側に集約された。移動したAPIやlayoutを利用するには、Mojoに加えてmaxパッケージを導入する必要がある。

layoutのソースコードは、Apache License 2.0 with LLVM Exceptionsで公開されている。一方、配布版のmaxパッケージには独自のModular Community Licenseが適用される。パッケージ自体は無償で利用できるが、商用・本番利用には条件がある[1]

GPUカーネルへ値を渡すには、ホストからアクセラレーターへ受け渡せる型であることを示すDevicePassableへの準拠が必要になる。プラットフォームによってビット幅が変わるIntUIntは、1.0で同トレイトに準拠しなくなったため、GPUカーネルの引数には使えない。ホスト側とデバイス側のビット幅の違いによる誤コンパイルを防ぐには、Int32などの固定幅型を使う必要がある。

uvでインストール⁠コンパイラは2026年中にオープンソース化予定

Mojo 1.0は、次のコマンドでインストールまたは更新できる。MAXもインストールする場合は、max[all]を指定する。

uv pip install --upgrade mojo
uv pip install max[all]

今後は非同期処理の仕組みやパターンマッチ、共用体などを追加し、汎用的なシステムプログラミングにも使える言語を目指す。Mojo本体に加え、Mojoで開発したMAXコンポーネントも段階的にオープンソース化する。Mojoのコンパイラとツールチェーンは2026年中に公開する予定としている。

おすすめ記事

記事・ニュース一覧