17611538698
info@21cto.com

Mojo 1.0 Beta发布:Python 与 C++性能的新时代

编程语言 0 11 2天前
图片

导读:各位开发者,Mojo 1.0 Beta 的到来标志着 Python 性能瓶颈带来的革命性变革,尤其是在人工智能和高性能计算等高要求领域。这不仅仅是另一种号称速度更快的语言;它是一次精心设计的重新构想,旨在充分利用熟悉的 Python 语法,同时释放各种硬件的强大计算能力。

几十年来,Python 开发者一直饱受性能瓶颈的困扰与折磨。当速度开始变得重要时,我们只能选择用 C++ 或 Rust 重写代码——这意味着要切换语言、维护两套代码库,并且不得不接受这种不可避免的摩擦。


而 Modular 于 2026 年 5 月9日正式发布了Mojo 1.0 beta 版 (v1.0.0b1),它号称能够消除这种权衡:它拥有 Python 的语法,亦能拥有 C/Rust 的性能,并且从底层构建,专为 AI 基础设施和 GPU 编程而设计。


图片


如果 Mojo 果真能够实现这一目标,那么双语言问题或许成为可选项。


重大变更信号:API 稳定化

Mojo 1.0 测试版引入了三项重大变更,这使得开发者能够立刻采取行动。这些变更并非随意调整——它们标志着该语言正朝着2026 年晚些时候发布的 1.0 正式版稳步迈进。


首先,fn → def 合并,关键字fn已被弃用。所有函数声明现在都使用 def 。目前,fn 会触发编译器警告;下一个版本将将其改为硬性错误。迁移过程很简单——只需查找并替换——但此更改通过降低认知负荷简化了语言,所有函数都使用同一个关键字,就此结束。

fn greet(name: String) -> String:  # This function might be compiled differently based on compile-time flags  comptime if __VERSION__ == "1.0b1":    return "Hello, " + name + " from Mojo Beta!"  else:    return "Hello, " + name + "!"

其次,默认情况下指针不可为空。UnsafePointer现在被重新设计,不可为空。


如果需要可为空的指针,请使用 Optional[UnsafePointer[...]] 做显式使用。

这是从 Rust 引入到 Python 语法中的内存安全机制。它的优势在于:零开销的 FFI 安全性。可空性被显式化,这意味着更少的运行时崩溃和更多的编译时捕获。


第三,移除负索引。类似这样的表达式x[-1]现在会产生编译时错误。您必须使用显式的基于长度的索引:x[len(x) - 1]。这确实比较冗长,但对于系统编程来说,显式索引优于隐式索引。当清晰度和便捷性发生冲突时,Mojo 会优先考虑清晰度。


这些变化为何如此重要?beta 版本中的重大变更表明 Modular 正在锁定 API,重大语法变更的窗口期正在关闭。


如果你正在考虑使用 Mojo,现在正是进行实验的最佳时机,因为 1.0 正式版将最终确定设计。此外,Modular 正在从 Python 2 到 3 的升级中吸取教训。Mojo 2.0 计划提供渐进式迁移路径、实验性标志以及对混合生态系统的编译器支持。他们在稳定当前的同时,也在为未来进行规划。


GPU性能在各厂商间实现飞跃

Mojo 1.0 beta 版大幅扩展了其 GPU 的支持,旨在实现 CUDA 无法比拟的跨厂商兼容性。该版本新增了对Apple Metal M5 MMA硬件矩阵乘加运算的支持、对 AMD MI250X GPU 和 NVIDIA B300 (sm_103a) 加速器的支持。

此外,Apple Metal 还新增了print()调试支持和动态线程组内存——这些看似微小的改进在调试 GPU 代码时却是至关重要的。


Mojo的战略布局显而易见:一次编写,即可在 NVIDIA、AMD 或 Apple 硬件上运行。没有厂商锁定,也无需单独的 CUDA 代码。这就是统一异构计算的优势所在,而 Mojo 认为人工智能基础设施的蓬勃发展将使其成为必然之选。


一些真正的人工智能技术公司已经在生产环境中部署了这项技术。


比如,Inworld使用 Mojo构建了直接在 GPU 上运行的自定义静音检测内核。Qwerky 也使用 Mojo 来实现内存高效的 Mamba 协议,编译自定义 GPU 内核,从而加速 Mamba 处理对话历史记录的线性时间复杂度。这些并非玩具示例——它们是选择 Mojo 而非 CUDA 的生产系统。


现在,性能提升已经可以衡量。Modular 于 2026 年 3 月发布的 26.2 版本在 FLUX.2 图像生成模型上实现了 4 倍的速度提升。在 NVIDIA B200 硬件上,Gemma 4 的吞吐量比 vLLM 高出 15%。此外,这是在硬件支持初期就达到的最先进性能,表明编译器优化工作按预期进行。


性能宣传:炒作与现实

Modular 声称 Mojo 的速度“比 Python 快 68,000 倍”。

这个数字显然有些夸大其词。更实际的说法是:对于典型的 AI/ML 工作负载,速度提升 1,000 倍以上,单线程代码的性能与 C++ 和 Rust 相当(相差不超过 2 倍)。

68,000 倍的性能提升来自于 Python 性能最差的紧密循环场景——解释执行的开销、全局解释器锁 (GIRL) 和动态类型共同作用,严重影响了性能。Mojo 的 SIMD 向量加速和 MLIR 编译器优化在这些场景中表现突出。然而,对于均衡的工作负载,预期性能提升幅度约为 Python 的 1,000 倍,而非 68,000 倍。

from numpy import arraydef process_data(data: List[Float64]) -> Float64:    cdef let arr = array(data) # Using NumPy array via interop    return arr.mean()

总结一下,Mojo 的优势都体现在哪些方面,那便是 AI/ML 基础设施、GPU 加速的数据处理、自定义训练内核和推理引擎。在任何 Python 性能瓶颈迫使用户重写为 C++ 的情况下,Mojo 都能提供语法熟悉的折中方案。

Mojo 也并非全能,它在什么地方会落败?Web 开发并非 Mojo 的强项。使用成熟库进行快速原型开发仍然更有利于 Python 生态系统。如果你的项目依赖于没有 Mojo 绑定的 Python 包,你就束手无策了。Python 生态系统尚不成熟——这片领域目前还处于早期采用者的阶段。

一个决策框架:何时采用Mojo?

那么,现在应该采用 Mojo 1.0 beta 版,还是等待 1.0 正式版,还是完全不理睬它?

如果符合以下条件,不用犹豫可立即使用:

  • 你正在从零开始构建人工智能/机器学习基础设施
  • GPU编程是一项核心要求
  • 你需要 Python 语法,但又无法容忍 Python 的性能问题
  • 你愿意承受测试版的不稳定性,并为生态系统的发展做出贡献


如果符合以下条件,请等待 1.0 正式版(预计 2026 年底发布):

  • 生产稳定性不容谈判。
  • 你拥有一个庞大的现有 Python 代码库。
  • 你的团队缺乏系统编程经验。
  • 你需要成熟的第三方库


如果出现以下情况,切勿使用:

  • 你的项目严重依赖于 Python 生态系统库。
  • 你专注于网站开发。
  • 你的团队不会投入时间学习新的语法


而当今,市场时机对 Mojo 非常有利。


人工智能基础设施投资正在爆炸式增长——KKR 斥资 100 亿美元投资 Helix,Anthropic 承诺向 Google Cloud 投资 2000 亿美元——而 GPU 计算效率是重中之重。Python 的性能危机已是公认的事实。如果说 Python 语法系统语言有突破的良机,那就是现在了。


双语问题或可解决

多年来,人工智能开发者一直在 Python(用于研究)和 C++(用于生产)之间切换。用 PyTorch 编写的原型会被重写成 C++ 用于推理。这种做法带来的摩擦巨大:不同的语法、不同的团队、双重维护。

Mojo承诺为高层逻辑和底层执行提供统一的环境,无需单独的CUDA代码,也无需从原型到生产环境切换语言。Inworld和Qwerky项目已证明其在全新项目中行之有效。然而,迁移现有的Python代码库十分复杂,且生态系统尚不成熟,限制了可用库的数量。

Mojo 的技术令人印象深刻,而且执行非常出色。问题在于其生态系统能否快速成熟,从而克服 Python 的网络效应。它的早期生产部署令人鼓舞,但 beta 版的不稳定性以及有限的库仍然是个障碍。

此次 Mojo 1.0 beta 版标志着一个重要的里程碑。此次重大变更预示着 API 的稳定性。GPU 功能的加入满足了市场的实际需求。虽然性能方面的宣传可能略显夸张,但它确实在关键领域带来了显著的提升。

如果你已经达到了 Python 的性能瓶颈,或者需要使用 GPU 编程但又不想面对 CUDA 的复杂性,那么现在就应该评估一下 Mojo。

Mojo 1.0 正式版发布前的试用窗口即将关闭。

作者:洛逸

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信