Mojo 正式开源
我们很高兴地宣布,Mojo🔥 语言现已根据 Apache 2.0 许可证(附带 LLVM 例外条款) 完全开源!Mojo 编译器、工具以及构建该语言所需的一切源代码现已发布在 我们的 modular GitHub 仓库 中。
Mojo 语言是一项大胆的豪赌:一种超越旧语言的全新通用编程语言。Mojo 整合了最新的编译器和编程语言研究成果,旨在释放 GPU、AI 加速器及其他先进计算能力。在过去四年里,Mojo 虽由开放社区开发,但编译器一直保持封闭。上周 Mojo 达到 1.0 版本(实现了源码稳定性),今天我们很兴奋地开源了整个编译器和工具链。
Apache 2:一种宽松的许可证
Apache 2.0 许可证是编程语言和编译器的黄金标准,因为它为在各种应用中使用提供了极大的灵活性。许可证中的 LLVM 例外条款进一步扩展了构建和分发 Mojo 编译二进制文件的自由。我们希望您能够尽可能多的应用场景中采用和使用 Mojo。
我们的开源策略是有意为之——我们发现,由小而紧密的设计团队(而非委员会)来把握一门语言的"灵魂"效果最佳,但同时也需要更广泛社区的反馈,才能走出信息茧房。因此,我们先开源了 Mojo 标准库,随后又发布了用 Mojo 编写的数十万行 kernel 代码、相关工具和配套支持。我们结合社区反馈和公开的设计提案协同推进,如今终于将编译器也开源了。随着 Mojo 不断成熟,我们会继续把更多流程开放出来。
如何获取和构建编译器
Mojo 语言的全部代码现已托管在 modular GitHub 仓库。首先,在本地克隆该仓库:
git clone https://github.com/modular/modular.git
cd modular
然后,只需一条构建命令,就可以从源码编译 Mojo 编译器并运行一个 Mojo 文件:
./bazelw run --config=build-mojo KGEN:mojo -- run hello.mojo
在 Modular,我们使用 Bazel 来管理 Mojo 和 MAX 复杂的构建流程与缓存。这条命令会自动下载或编译构建 Mojo 编译器和标准库所需的全部内容。其中 --config=build-mojo 参数告诉构建系统完全从本地源码开始编译。
这也适用于对 Mojo 标准库的开发:你可以修改编译器或标准库的代码,并通过以下命令运行完整的测试套件:
./bazelw test --config=build-mojo mojo/stdlib/test/...
如果你并非在修改编译器本身,可以使用 --config=prebuilt-mojo 参数,构建系统会自动下载最新的 nightly 预编译版本,从而节省编译时间。需要注意的是,如果你要定制 MAX kernel 或模型,目前仍然需要使用预编译版的 Mojo 编译器。