
2026/05/08 11:49
Mojo 1.0 ベータ版
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Mojo は、CPU、GPU、ASIC を含む多様な AI ハードウェアにおいて開発者の生産性と生の実行速度を統合することで、システムプログラミングにおける画期的な進歩を表しています。Python の構文から着想し、Rust のメモリ安全性、および Zig のコンパイル時メタプログラミングからインスパイアされた Mojo は、ゼロコストのアブストラクション、安全なジェネリック操作を提供します。また、Phase 3 に達すると、クラスや継承のような動的オブジェクト指向の機能も利用可能となります。ランタイムコードとコンパイル時メタプログラミングに同じ言語を用いることで、SIMD ベクトル化されたカーネル(例:配列の In-place 2 乗)、コンパイル時リフレクションによるジェネリック構造体の等価性、ならびに trait のダウンキャストをサポートし、ながら安全性を損なうことなく実装しています。Mojo はコーディングの容易さとパフォーマンスという従来のトレードオフを解消し、開発者が単純に始めながら複雑性をシームレスに拡張することを可能にします。ベンダー固有のライブラリに依存せずネイティブな GPU プログラミングを可能にし、Python とネイティブに互換性を有することで、既存プロジェクトへの円滑な移行経路を提供するとともにパフォーマンスボトルネックを排除します。GitHub にすでにオープンソース標準ライブラリが公開され、コンパイラの一般公開は 2026 年を計画している Mojo は、安全で単純さとハイパフォーマンスな最適化の両方を 2026 年までに架橋する統一モデルを提供します。
本文
完全な Mojo ドキュメント目次については、llms.txt をご参照ください。すべてのページのマークダウン版は、いずれかの URL に
.md を追加することで入手できます(例:/docs/manual/basics.md)。
構築された多様性
ModernMojo は、現代の言語の優れた点を踏襲しています。例えば、Python の直感的な構文、Rust のメモリ安全性、そして Zig の強力かつ直感的なコンパイル時メタプログラミングなどが挙げられます。
AI ネイティブ
Mojo は、最先端の AI システムを支える多様なハードウェアにおいて最高のパフォーマンスを発揮できるよう、地から作られています。コンパイル型の静的型付け言語であるため、エージェンティック・プログラミングにも理想的です。
単純かつ高性能
生産性とパフォーマンスの間で選択する必要再也不あり、Mojo は両方を提供します。シンプルで馴染み深いプログラミングパターンから始め、必要に応じて複雑性を追加できるのです。
GPU プログラミング
Mojo を用いれば、ベンダー固有のライブラリなし、別途コンパイルが必要なコードも不要に、誰でも GPU プログラミングに取り組めます。遂に、CPU で使用する言語のまま高パフォーマンスな GPU カーネルを記述できます。
def vector_add( a: TileTensor[float_dtype, type_of(layout), element_size=1, ...], b: TileTensor[float_dtype, type_of(layout), element_size=1, ...], result: TileTensor[ mut=True, float_dtype, type_of(layout), element_size=1, ... ], ): var i = global_idx.x if i < layout.size(): result[i] = a[i] + b[i]
Python 連携
Mojo はネイティブに Python と相互運用可能であり、既存のコードを再実装することなく、パフォーマンスのボトルネックを解消できます。まずは一つ関数から始め、必要な場合にのみパフォーマンスクリティカルなコードを Mojo に移行してスケーリングできます。Mojo のコードは Python から自然にインポートされ、パッケージ化して配布も可能です。同様に、Python エコシステムのライブラリも Mojo コード内でインポートできます。
# 配列要素を SIMD ベクトル化で就地二乗するカーネル def mojo_square_array(array_obj: PythonObject) raises: comptime simd_width = simd_width_of[DType.int64]() ptr = array_obj.ctypes.data.unsafe_get_as_pointer[DType.int64]() def pow[width: Int](i: Int) unified {mut ptr}: elem = ptr.load[width=width](i) ptr.store[width=width](i, elem * elem) vectorize[simd_width](len(array_obj), pow)
コンパイル時メタプログラミング
Mojo のメタプログラミングは、ランタイムコードと同じ言語を用いており、パフォーマンスを最大化する直感的なシステムを提供します。条件付きコンパイルでハードウェア固有の最適化を実装し、コンパイル時評価でメモリ安全性を保証し、高コストなランタイム分岐を排除するなど、明確な意図とゼロコストのアブストラクションすべてを実現できます。
# コンパイル時反射を用いた汎用構造体の等価性チェック @always_inline def __eq__(self, other: Self) -> Bool: comptime r = reflect[Self]() comptime names = r.field_names() comptime types = r.field_types() comptime for i in range(names.size): comptime T = types[i] comptime assert conforms_to(T, Equatable), "All fields must be Equatable" if trait_downcast[Equatable]( r.field_ref[i](self) ) != trait_downcast[Equatable](r.field_ref[i](other)): return False return True
ロードマップ
Mojo は 2022 年末に誕生し、これまでに大きな歩みを進めてきましたが、まだ多くの作業が残されています。
コアパーサーの実装
メモリ型、関数、構造体、初期化子、引数規約、その他言語の基盤を定義します。
高パフォーマンスな CPU および GPU coding
Mojo を CPU、GPU、ASIC 上で高パフォーマンスなカーネルを記述するための強力かつ表現豊かな言語にしつつ、開発者が Python とシームレスに連携拡張できるよう支援します。
フェーズ 2:システム級アプリケーションプログラミング
Mojo をより高度なアプリケーションレベルのプログラミングに対応させるため拡張し、メモリ安全性が保証されたモデルに加え、システムプログラミングで開発者が期待するさらなるアブストラクション機能を備えます。
フェーズ 3:動的オブジェクト指向プログラミング
クラス、継承、型付けされていない変数など、Python の動的機能の多くをサポートし、Python コードとの最大限な互換性を確保します。
オープンソース化
Mojo の標準ライブラリは GitHub で完全にオープンソース化されており、コントリビュートも歓迎いたします!また、Mojo コンパイラーのオープンソース化も 2026 年を計画しています。
私たちは Mojo の全てをオープンソース化するという決意を持っていますが、言語はまだ非常に若い段階であり、共有するビジョンを持つ緊密なエンジニアグループの方が、コミュニティ主導のアプローチよりも速く進歩すると考えます。活動をご希望の方は、開発者コミュニティへご参加ください!