立足娱乐圈·争做八卦帝!

徽声在线

“编译器之神”匠心打造,Mojo 1.0.0b1:融合Python便捷与C++高效

来源:未知 作者:佚名 发布时间:2026-05-11 12:05:35

5月8日,AI技术领域的焦点事件之一——Modular公司正式推出了Mojo编程语言的首个Beta版本1.0.0b1,这一消息迅速在开发者群体中引发了热烈讨论。毕竟,Mojo承诺的“写起来如同Python般便捷,运行起来却媲美C++的高效”,一直是众多开发者翘首以盼的革新。

Modular,这家成立于2022年的新兴企业,由前Google Brain的领军人物Chris Lattner与Google Brain前副总裁Tim Davis携手创立。Lattner,这位被誉为“编译器之神”的传奇人物,曾是LLVM编译器基础设施、Clang C++编译器以及Swift编程语言的核心创造者,他的加入无疑为Mojo的诞生注入了强大的技术基因。

Modular的创立初衷,在于解决当前AI基础设施面临的碎片化难题。随着AI技术的飞速发展,模型需要在多样化的硬件平台(如NVIDIA、AMD、Intel、Apple Silicon等)上运行,这迫使开发者不得不维护多套代码以适应不同环境。同时,尽管Python生态以其易用性著称,但在性能上却存在明显短板;而C++虽然性能卓越,但其代码的编写与维护难度却让许多开发者望而却步。Modular正是希望通过统一的技术栈,来弥合这一鸿沟。


据Modular官方博客透露,Mojo 1.0的正式版本预计将于2026年秋季面世,届时将全面开放编译器源码,并提供稳定的语言特性保证。当前发布的Beta版本,已经包含了多项重要功能更新,如安全闭包(Safe closures)引入了全新的捕获语法、trait的条件一致性(Conditional conformance to traits)以及对可变参数(variadics)的显著改进。

尤为值得一提的是,Modular推出了TileTensor作为LayoutTensor的升级版,进一步简化了高性能GPU内核的开发流程。TileTensor将内存布局作为张量本身的编译时属性,使得GPU内核所需的swizzles、strides和indexing操作能够由类型系统自动检查,而非依赖开发者手动维护。这一创新极大地降低了编写高性能计算代码的门槛。

与此同时,Mojo还拥有了专属的官方网站mojolang.org,所有Mojo相关的文档均已迁移至此,而docs.modular.com则专注于MAX平台的模型构建与部署文档,为开发者提供了更加清晰、便捷的资源获取途径。

Mojo编程语言

为何选择Mojo?AI时代的性能焦虑与破局之道

Mojo诞生于2022年底,其定位十分明确:解决Python在AI和高性能计算场景下的性能瓶颈。Python凭借其简洁的语法和庞大的生态,已成为AI开发的事实标准语言,但其解释执行的特性也决定了其在计算密集型任务中的性能上限。Mojo的解决方案则颇为直接——兼容Python语法,同时引入编译时类型检查、内存安全和底层硬件访问能力。开发者可以使用熟悉的Python风格编写代码,在需要提升性能的部分添加类型注解,编译器便能将其优化至接近C++的执行效率。


1.0.0b1带来了哪些革新?

此次发布的稳定版标志着Mojo从实验性语言向可用产品的关键跨越。其核心特性包括:

  • AI原生设计:作为一门编译型静态语言,Mojo从底层就为现代AI系统的多样化硬件(CPU、GPU、ASIC)进行了深度优化,特别适合Agentic编程模式。

  • GPU编程平民化:无需绑定特定厂商的库,也无需单独编译内核代码,开发者可以使用同一门语言编写CPU和GPU代码。官方示例显示,一个GPU向量加法内核的代码量相比传统CUDA方案大幅减少,降低了GPU编程的门槛。

  • Python无缝互操作:Mojo原生支持与Python的互调用功能。开发者可以逐步将Python项目中的性能瓶颈部分迁移到Mojo,而无需重写整个代码库。Mojo代码可以自然导入Python生态,也能被打包分发到Python项目中,实现了语言的平滑过渡。

  • 编译时元编程:受Zig语言启发的comptime机制,让开发者能够在编译期执行代码、进行条件编译和反射操作,实现了零成本抽象,提升了代码的灵活性和效率。

相比此前偏向概念介绍的发布,Mojo v1.0.0b1带来了大量触及语言核心与系统编程层面的实质性变更——从关键字统一到指针非空设计,再到全平台GPU硬件支持的扩展,标志着Mojo正在从“实验性语言”向“生产可用”快速演进。

语言统一:fn被废弃,def成为唯一函数关键字

此次更新中,最引人注目的语法变化是fn关键字被正式标记为deprecated,并将在下一版本中变为编译错误。自v0.26.2启动的def/fn统一工作至此圆满完成:def成为Mojo唯一的标准函数声明关键字,且继承了原本fn的非抛异常语义。现有代码中的fn会在编译时收到警告,提醒开发者尽早进行迁移。

与此同时,闭包机制也实现了统一。无状态闭包会自动提升为顶层函数,可作为FFI回调传递;新的thin函数效应声明了不携带捕获状态的纯函数指针类型;而abi("C")效应则允许函数使用平台C ABI,实现与C库的安全互操作。捕获列表语法{mut a, b, c^, read}也正式定型,支持按可变引用、不可变引用和移动语义显式捕获变量,提升了代码的灵活性和安全性。

内存安全:UnsafePointer非空化,集合默认开启边界检查

Mojo在内存安全方面迈出了重要一步。UnsafePointer现在被设计为非空指针:默认的空构造函数和__bool__()方法已被废弃,且不再遵循DefaultableBoolabletrait。开发者需要用Optional[UnsafePointer[...]]来表达可空性。由于null地址被用作Optional的None niche,这种表达仍然是零开销且FFI安全的,确保了代码的健壮性。

标准库集合也默认开启了边界检查功能。所有CPU上的集合(如List、Span、InlineArray、String等)在越界访问时会直接报告用户调用点,而非静默崩溃。负索引也被彻底移除——x[-1]现在会触发编译期错误,必须改用x[len(x) - 1]。GPU上的边界检查默认关闭以保证性能,但可通过-D ASSERT=all显式开启,为开发者提供了灵活的选择。

GPU编程:苹果/AMD/英伟达全平台覆盖

本次更新在GPU支持上的投入尤为突出。Apple Metal方面,print()首次在Apple GPU上可用,动态线程组内存external_memory[]()获得支持,Apple M5的MMA硬件矩阵乘加指令也通过apple_mma_load()等intrinsic暴露出来,提升了Apple设备上的GPU计算性能。AMD阵营新增了对MI250X加速卡的支持,扩展了Mojo在AMD平台上的应用范围。英伟达方面则加入了对B300(sm_103a)的识别与调度支持,确保了Mojo在英伟达GPU上的兼容性。

此外,GPU原语访问器(如thread_idxblock_idxgrid_dim等)的返回类型从UInt统一迁移为Int,这是Mojo向“所有尺寸和偏移量使用Int”方向迈出的关键一步。CPU端的DeviceContext(api="cpu")现在也变成了流有序执行上下文,支持enqueue_cpu_function()enqueue_cpu_range(),为未来的NUMA感知CPU调度铺平了道路,提升了多核CPU上的执行效率。

字符串与反射:Unicode字形簇与编译期类型细化

String和StringSlice新增了对UAX字形簇(grapheme cluster)的分段支持,能够正确处理组合修饰符、emoji ZWJ序列、国旗emoji、韩语音节等多码点簇。新增的graphemes()count_graphemes()[grapheme=...]切片语法让文本处理更加精确。纯ASCII文本的count_graphemes()有大约10倍的加速,提升了文本处理的性能。

类型系统方面,编译器现在能基于where子句、comptime ifcomptime assert进行类型细化。只要编译期能证明某类型满足某trait,就可以直接调用其trait方法,无需再使用trait_downcast。反射API也整合为统一的reflect[T]()入口,取代了原先分散的struct_field_*get_type_name等自由函数,简化了反射操作的使用。

工具链与生态:调试器体验与LSP响应速度优化

调试器体验得到了大幅改善:Variant和Optional在LLDB中现在直接显示为Int(42)Some(value),而非原始内部结构;标量类型直接显示数值;UnsafePointer支持所有类型的正确显示,提升了调试的便捷性。LSP响应速度通过缓存和延迟解析得到了优化,长会话中的代码补全从O(N²)降至摊还O(1),提高了代码编写的效率。Mojo包文件(.mojopkg)升级到格式v2,采用zstd压缩的MLIR字节码,显著减小了包体积,方便了代码的分享与部署。

开源路线图:标准库已开源,编译器蓄势待发

Modular在官网上明确表示,Mojo标准库已完全开源在GitHub,欢迎社区贡献力量。而编译器本体计划在2026年内开源。官方解释称,语言目前还很年轻,“一小群拥有共同愿景的工程师比社区驱动的方式推进得更快”,这一策略确保了Mojo在初期的快速发展与稳定性。

Mojo的发展分为四个阶段:

  • Phase 0(已完成):核心解析器、内存类型、函数、结构体等语言基础建设,为Mojo的后续发展奠定了坚实基础。
  • Phase 1(进行中):高性能CPU+GPU编程,无缝扩展Python,提升AI开发的性能与效率。
  • Phase 2:系统级应用编程,引入保证的内存安全模型,确保代码的健壮性与安全性。
  • Phase 3:动态面向对象编程,支持类、继承和untyped变量,最大化Python兼容性,满足更广泛的开发需求。

目前1.0.0b1的发布意味着Phase 1已初见成效。对于既想保持Python开发效率、又不愿在性能上妥协的AI开发者来说,Mojo终于从一个漂亮的Demo变成了一个可以真正尝试的选项,为AI开发带来了新的可能性。


参考来源

  1. Mojo官网: https://mojolang.org/
  2. GitHub: https://github.com/modular/modular
  3. Mojo v1.0.0b1 发布说明:https://mojolang.org/releases/v1.0.0b1/

  4. Mojo Roadmap: https://mojolang.org/docs/roadmap/

    责任编辑:
    朱艺披露:中甲50轮中乙49轮脑震荡记录终结 新规显成效

    2026-05-07

    德国转会市场负责人朱艺统计显示,中国职业联赛脑震荡异常记录终止,新换人规则有效保障球员健康。 ... [详细]

    全红婵回京目的揭秘!非回归国家队 133天未训练引关注 官方沉默

    2026-03-19

    跳水奥运冠军全红婵回京引发热议,据悉她是为了接受体检和汇报状况,尚未回归国家队。关于她复出的传闻不断,但官方未回应,未来动向成谜。 ... [详细]

    徽声深度:莱奥攻强守弱成豪门绝缘体,米兰欧冠生死战暗藏三大变数

    2026-04-24

    意大利天空体育独家解析米兰困局:阿莱格里去留牵动引援策略,莱奥技术短板暴露豪门门槛,欧冠资格成重建关键节点 ... [详细]

    米体:尤文若是无缘欧冠将会陷入巨大危机,阵容重建无法开展

    2026-05-09

    根据《米兰体育报》的报道,尤文若无缘下赛季欧冠将损失约1亿欧元,财务压力剧增。奥蓬达等转会投入难收回,多名外租球员买断遇阻,队内多人价值缩水,仅戴维出售能带来账面增值。报 ... [详细]

    4月18日晚,台州队客场发威!8分钟点球破门1:0领先丽水队

    2026-04-25

    4月18日晚2026浙江省城市足球联赛(吴越杯),台州队客场对战丽水队,开场8分钟点球破门1:0领先,比赛正在进行,点击看直播。 ... [详细]

    图酷

    图说天下

    资讯排行

    首页 - 娱乐圈事 - 体育圈事 - 两性情感 - 星座命运 - 奇闻怪事 - 历史故事 - 科技资讯 - 图说天下 - 知识百科 - 图酷 - 娱乐八卦
    电脑版 | 移动端
    Copyright © 2002-2019 徽声在线 版权所有
    删帖请联系邮箱:[email protected]