Mojo 语言(由 Modular 开发,现归 Qualcomm 所有)现已开源
Mojo 是一门新的系统编程语言,由 LLVM 和 Swift 的创建者 Chris Lattner 开发,现归 Qualcomm 所有。在多年部分开放可用之后,它终于在 Apache 2.0 许可下完全开源。评论者一方面看好它作为一种类 Python、基于 MLIR 的语言,在 CPU、GPU 和 AI 加速器上的高性能异构计算潜力;另一方面也担忧其开源时机偏晚、长期治理不明确,以及它能否在 Rust、C++、CUDA 和 Triton 等既有方案之外建立真正的生态。许多人认为 Qualcomm 此举带有战略意图,尤其可能是一次“反 NVIDIA”布局;而开发者则在跃跃欲试与怀疑 Mojo 是否能获得持久 traction 之间分化。
Mojo 的范围与价值主张
- 被定位为一种现代系统语言,具有类似 Python 的语法、强大的 SIMD 支持、编译期特性,并专注于异构计算(CPU、GPU、加速器)。
- 主要卖点:一门语言和一个编译器即可面向 NVIDIA/AMD/Apple GPU、TPU、Trainium 和 CPU,而无需分别维护 CUDA/ROCm/Metal 技术栈。
- 用户反馈称,能够在 CPU 上获得接近 C++/Rust 的性能,然后更容易将工作负载迁移到 GPU,并看到显著加速。
- 有人认为它可能是面向数值计算和系统任务、可静态类型化的 Python 替代方案;也有人表示,这还不足以让他们选择 Mojo 而不是 Rust 或 Zig。
性能、设计与路线图
- 对当前性能基准存在一些批评:据称某些 GEMM 示例通过跳过工作“作弊”,被形容为“vibe-coded”。
- 有人提出疑问:既然可以对 Triton/CUDA 内核做自动调优,为什么还要投资一门新编译器?
- 被指出的关键缺失或尚不成熟的特性包括:async 支持、代数数据类型 + 模式匹配、更好的 trait 系统,以及更符合人体工学的带标签联合类型。
- Mojo 与 MLIR 深度集成,一些人认为这为库级优化提供了强大的基础,也带来一种“MLIR++”的体验。
与 Python 的关系及生态
- 早期将其宣传为 Python 超集,形成了预期;而当前现实更接近“Python 风格语言”,而非完全兼容的 Python。
- 一些人因为它不再是严格意义上的 Python 子集而更感兴趣;另一些人则认为缺乏完整的 Python 互操作性是其更广泛采用的阻碍。
- 人们对将静态 Python 转译为 Mojo,以及让模式匹配更接近 Rust(基于表达式)而不是 Python 的方向很感兴趣。
开源、治理与 Qualcomm
- 许多人表示,让编译器一直闭源显著损害了采用率;如今在 Apache 2.0 下开源,广受欢迎。
- 对于延迟开源的理由存在分歧:
- 一种观点认为,延迟避免了早期设计反复、社区破碎和“Swift 式”的压力。
- 另一种观点认为这是一种薄弱或事后编造的说法;真实原因是对开放性并不优先。
- 一些人担心 Qualcomm 的收购意味着 Mojo 可能停滞,或纯粹沦为战略性的“反 NVIDIA”工具;另一些人则表示,开源计划在收购前就已存在,并指出 Qualcomm 的开源态度正在改善。
采用、LLM 与语言格局
- 关于小型生态系统是否值得学习存在争论;一种观点认为,没有社区的语言毫无意义,另一种则指出如今 LLM 可以编写小众语言,降低了这一门槛。
- 与 Rust 和 C++ 的比较:Mojo 的内存模型被描述为类似 Rust,但表层更偏过程式 / Python 风格;一些人认为它是“C++ 本该成为的样子”,而另一些人则认为 Rust 已经承担了这一角色。