AI编程语言-Mojo
Mojo 是 Modular AI 公司开发的新编程语言,其结合了 Python 的易用性以及 C 语言的可移植性和性能,目标是使其成为 AI 研究和生产的理想选择:像 Python 一样写,像 C++ 一样跑。另外它能够利用 MLIR,使 Mojo 开发者能够利用向量、线程和 AI 硬件单元。根据测试,Mojo 比 Python 快3万多倍。
A unified platform for AI development and deployment, including MAX and Mojo .

The Modular Platform is an open and fully-integrated suite of AI libraries and tools that accelerates model serving and scales GenAI deployments. It abstracts away hardware complexity so you can run the most popular open models with industry-leading GPU and CPU performance without any code changes.
最新版本:1
2026年5月上旬,由 Chris Lattner 创立的 Modular 公司正式发布了 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__() 方法已被废弃,且不再遵循 Defaultable 和 Boolable trait。开发者需要用 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 暴露出来。AMD 阵营新增了对 MI250X 加速卡的支持。英伟达方面则加入了对 B300(sm_103a) 的识别与调度支持。
此外,GPU 原语访问器(thread_idx、block_idx、grid_dim 等)的返回类型从 UInt 统一迁移为 Int,这是 Mojo 向「所有尺寸和偏移量使用 Int」方向迈出的关键一步。CPU 端的 DeviceContext(api="cpu") 现在也变成了流有序执行上下文,支持 enqueue_cpu_function() 和 enqueue_cpu_range(),为未来的 NUMA 感知 CPU 调度铺平了道路。
字符串与反射:Unicode 字形簇与编译期类型细化
String 和 StringSlice 新增了对 UAX #29 字形簇(grapheme cluster) 的分段支持,能正确处理组合修饰符、emoji ZWJ 序列、国旗 emoji、韩语音节等多码点簇。新增的 graphemes()、count_graphemes() 和 [grapheme=...] 切片语法让文本处理更加精确。纯 ASCII 文本的 count_graphemes() 有大约 10 倍的加速。
类型系统方面,编译器现在能基于 where 子句、comptime if 和 comptime assert 进行类型细化。只要编译期能证明某类型满足某 trait,就可以直接调用其 trait 方法,无需再使用 trait_downcast。反射 API 也整合为统一的 reflect[T]() 入口,取代了原先分散的 struct_field_* 和 get_type_name 等自由函数。
工具链与生态
调试器体验大幅改善:Variant 和 Optional 在 LLDB 中现在直接显示为 Int(42) 或 Some(value),而非原始内部结构;标量类型直接显示数值;UnsafePointer 支持所有类型的正确显示。LSP 响应速度通过缓存和延迟解析得到了优化,长会话中的代码补全从 O (N²) 降至摊还 O (1)。Mojo 包文件(.mojopkg)升级到格式 v2,采用 zstd 压缩的 MLIR 字节码,显著减小包体积。
小结
v1.0.0b1 的发布说明 Mojo 的语言核心正在快速收敛。从 fn 的退场到 UnsafePointer 的非空设计,从默认边界检查到全平台 GPU 支持的铺开,这些变化都在传递一个明确信号:Mojo 不再只是「更快的 Python」Demo,而是一门正在建立自己工程纪律的系统级编程语言。
项目主页:https://github.com/modular/modular