[go: up one dir, main page]

跳到主要内容
Mojo

像 Python 一样编写,像 C++ 一样运行。

为从 CPU 到 GPU 的多样化硬件编写高性能代码,无需供应商锁定,使用一种既用户友好又内存安全的语言。

立即安装

稳定版: 1.0.0b2 (6月18日)

与众不同

现代化

Mojo 借鉴了现代语言的精华——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 代码中。

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 年底,已经取得了长足进步,但仍有很多工作要做。

阶段 0

初始搭建

实现核心解析器,定义内存类型、函数、结构体、初始化器、参数约定和其他语言基础。

1
阶段 1 进行中

高性能 CPU + GPU 编程

使 Mojo 成为在 CPU、GPU 和 ASIC 上编写高性能内核的强大且富有表现力的语言,同时赋能开发者无缝扩展 Python。

2
阶段 2

系统应用编程

扩展 Mojo 以支持更多应用级编程,提供保证的内存安全模型以及开发者在系统编程中期望的更多抽象特性。

3
阶段 3

动态面向对象编程

支持更多 Python 的动态特性,如类、继承和无类型变量,以最大化与 Python 代码的兼容性。

更多详情请参阅 Mojo 路线图

开源

Mojo 标准库已完全 在 GitHub 上开源,欢迎贡献!我们还计划在 2026 年开源 Mojo 编译器。

我们致力于将 Mojo 完全开源,但该语言仍处于早期阶段,我们认为一个具有共同愿景的紧密工程师团队比社区驱动的方式能更快推进。

如果你想参与其中,加入我们的开发者社区!

开始使用

稳定版 | Linux & Mac | 需要 8GB 以上内存