Mojo 编译器开源:Apache 2.0 许可下你能做什么,不能做什么

AI编程工具横评·第4期

全文约 1800 字,阅读约 6 分钟。

一个编译器从闭源变公开,最大的变化不是「免费」,而是「可验证」。2026 年 8 月 18 日,Modular 在 ModCon 2026 上宣布 Mojo 语言正式开源,采用 Apache 2.0 许可(含 LLVM 例外条款)。开源范围覆盖编译器源码、工具链、以及构建语言所需的全部组件。

但开源不等于全面开放贡献。标准库早就接受社区提交,编译器本身的贡献通道却还没打开。这篇把开源范围、构建方法、贡献限制一次说清楚。

开源了什么:不只是编译器,是整个工具链

Mojo 编译器、工具链、以及构建语言所需的一切,现在都在 Modular 的 GitHub 仓库里。许可证是 Apache 2.0,附带 LLVM 例外条款。

这个例外条款很关键:你可以自由构建和分发由 Mojo 编译出的二进制文件,不受 LLVM 许可证的传染性限制。换句话说,你用 Mojo 写的程序编译出来后,想怎么卖就怎么卖,不需要把程序也开源。

Modular 的开源策略是分步走的:先开源 Mojo 标准库,然后释放了数十万行用 Mojo 写的内核代码和工具,最后才轮到编译器本身。

官方博客的说法是:小规模、紧密协作的设计团队更适合找到语言的「灵魂」,但更广泛社区的反馈对于避免「回音室效应」至关重要。

开源的核心价值不在「免费」,而在「可验证」。编译器源码公开后,任何关于性能、安全、行为的宣称都可以被独立审计。

从源码构建编译器:两条路径,按需选择

想自己动手编译 Mojo 编译器,官方流程如下。先克隆仓库:

git clone https://github.com/modular/modular.git

进入目录后,用一条命令构建编译器并运行一个 Mojo 文件:

./bazelw run --config=build-mojo KGEN:mojo -- run hello.mojo

Modular 使用 Bazel 管理 Mojo 和 MAX 的构建流程与缓存。这条命令会下载或构建编译 Mojo 编译器和标准库所需的一切。

--config=build-mojo 标志告诉构建系统从本地源码编译所有内容。这适合那些想读编译器实现细节、或者需要改动源码的人。

修改编译器或标准库代码后想跑完整测试套件,用这个命令:

./bazelw test --config=build-mojo mojo/stdlib/test/...

如果只是想快速体验语言,不打算读编译器源码,可以用 --config=prebuilt-mojo 标志。构建系统会下载最新的 nightly 预编译二进制,跳过本地编译过程。

不过官方特别提醒:如果你要自定义 MAX 内核或模型,目前仍然需要预编译的 Mojo 编译器。

两条路径的区别很直接:

从源码构建:适合编译器开发者、语言设计研究者、需要定制改动的团队。编译时间更长,但你可以看到一切。

预编译二进制:适合想快速写几行 Mojo 代码体验语法和性能的人。省时,但看不到底层实现。

贡献政策:标准库开放,编译器暂缓

开源不等于全面开放贡献。这是一个容易被误读的点。Mojo 标准库自 2024 年起就接受社区贡献,但编译器与工具链的贡献通道目前还没打开。

官方给出的理由是:在 AI 编码时代,需要谨慎处理贡献的质量和方向。他们计划在 2026 年底前接受编译器与工具链的贡献,具体细节后续公布。

实际含义:你可以读编译器源码、可以自己改、可以自己构建,但暂时不能把改动提交回上游。想要深度参与语言演进的人,需要等这个窗口打开。

Mojo 与 Python、Rust 的定位差异

Mojo 的定位很明确:一个通用的、面向 AI 加速器和高性能计算的语言。它整合了编译器与编程语言研究的最新成果,目标是解锁 GPU、AI 加速器和其他先进计算硬件的性能潜力。

官方称之为「Python 的超集」,但性能目标是 Python 的 35000 倍——这个数字来自 Modular 官方的基准测试,具体的测试条件和场景需要查看官方文档确认。

与 Python 的关系:Mojo 语法上贴近 Python,但底层是编译型语言,直接面向硬件。Python 开发者上手成本低,但两者性能天花板完全不同。

与 Rust 的关系:Rust 主打内存安全和系统级编程,Mojo 主打 AI 工作负载和高性能计算。两者不是直接竞争,而是解决不同的问题。

Mojo 的独特之处在于它对 AI 加速器的原生支持——这是 Python 和 Rust 都没有深入覆盖的领域。

选语言不是选「最好」的,是选「最合适」的。Mojo 的护城河在 AI 加速器原生支持,不在通用编程。

对 AI 开发者的实际影响:五个值得关注的点

第一,可验证性。编译器源码公开后,任何性能宣称都可以被独立审计。Mojo 的 35000 倍速度提升不再是厂商的一面之词,社区可以复现、验证、或者找出限制条件。

第二,定制自由。Apache 2.0 许可允许修改编译器源码,适配自己的硬件或工作负载。对于有特殊需求的团队,这意味着可以针对特定加速器做深度优化,而不需要等待官方支持。

第三,生态透明度。Mojo 1.0 已发布,具备源码稳定性。开源之后,语言演进过程将更加透明,社区可以更早地发现问题和提出建议。

第四,贡献门槛。标准库已开放贡献,编译器贡献通道计划年底前开放。短期内核心决策仍由 Modular 团队主导,但社区影响力会逐步扩大。

第五,商业背景。时间线值得注意:2026 年 6 月 24 日 Qualcomm 宣布收购 Modular,7 月 29 日完成收购。开源发生在收购完成之后。这个顺序意味着什么,值得持续观察。至少它说明新东家对开源策略是认可的,或者至少没有阻止。

Mojo vs Python vs Rust:一张表说清定位

维度 Mojo Python Rust
核心定位 AI 加速器 + 高性能计算 通用编程 + 快速开发 系统编程 + 内存安全
执行模型 编译型,直接面向硬件 解释型(CPython) 编译型,零成本抽象
AI 加速器原生支持 ✅ 核心特性 ❌ 需借助外部库 ❌ 需借助外部库
上手门槛 低(语法贴近 Python) 最低 较高(所有权模型)
开源状态 Apache 2.0(2026.8 起) PSF License MIT + Apache 2.0
适合场景 AI 推理优化、GPU 内核开发 Web 开发、数据分析、脚本 操作系统、嵌入式、网络服务

选型建议:如果你在做 AI 推理优化或 GPU 内核开发,Mojo 值得投入时间。如果你的工作流完全在 Python 生态里且没有性能瓶颈,暂时不需要切换。如果你在做系统级编程,Rust 依然是首选。

你试过用 Mojo 写 AI 推理代码吗?体验和 Python 差别大吗?评论区聊聊。

什么人该关注,什么人可以等等

适合关注的人:正在做 AI 推理优化、高性能计算、或需要深度定制编译器的团队。如果你已经在用 Mojo 或 MAX 平台,开源意味着你可以更深入地理解和调试底层行为。对编程语言设计感兴趣的研究者也能从源码中学到很多——毕竟这是一门声称比 Python 快 35000 倍的语言的完整实现。

可以等等的人:如果你的工作流完全建立在 Python 生态上,且没有遇到性能瓶颈,Mojo 开源对你暂时没有直接影响。语言本身仍在快速演进,编译器贡献通道还没完全开放,生态工具链也还在早期。普通应用开发者不必急着切换。

开源是信任的起点,不是性能的终点。Mojo 的真正考验,在于社区能否在开放之后把它推向更远的地方。

对 Mojo 源码感兴趣,最好的起点是克隆仓库,跑一遍官方的构建命令。读源码比读任何解读都更有价值。

如果你团队正在评估 Mojo 做 AI 推理,把上面那张对比表转给做技术选型的同事——「AI 加速器原生支持」那一行值得看一眼。

你会为了 AI 加速器支持尝试 Mojo 吗?A.已经在用 B.观望中 C.暂时用不上

#Mojo开源 #AI编程语言 #编译器 #高性能计算 #Modular