「我的目标是到 2030 年,让微软的代码中不再有任何一行 C 和 C++。我们的策略是将 AI 与算法结合起来,重写微软规模最大的代码库。我们的“北极星目标”是:1 名工程师、1 个月、100 万行代码。」
去年,微软杰出工程师 Galen Hunt 在 LinkedIn 上发布的一则 Rust 首席工程师招聘信息中如是说道。这番表述当时引发了不少讨论,如今看来,微软对 Rust 的投入,确实还在继续加码。

近日,Rust Foundation 官网刊发了一篇来自微软 DevDiv 首席工程师 Victor Ciura 的客座文章,直接官宣:Rust 已经在微软内部获得 Tier-1 级别的工程支持,其重要性与 C++、C# 和 TypeScript 并列。

Rust 在微软内部获得 Tier-1 支持,究竟意味着什么?
很多人好奇,所谓 Tier-1,究竟是什么意思?是否像 Kotlin 之于 Google 一样,成为 Android 平台指定的官方开发语言?
按照微软 DevDiv 首席工程师 Victor Ciura 的解释,Rust 被纳入“Tier-1 语言”工程体系,并不只是获得一个语言层面的评级,更意味着微软内部团队可以获得一条从本地开发直通生产环境的完整路径。
从安全的工具链构建、高效的开发者工具,到质量保障流程、平台集成,以及符合微软软件安全开发生命周期(SDL)要求的能力,Rust 都将获得相应的工程支持。
这其实是一个很关键的变化。
过去,一个公司内部“支持 Rust”,可能只是允许工程师使用 Rust,或者某些项目开始用 Rust 编写。
但进入 Tier-1 后,微软需要考虑的就不只是“能不能写”,而是从编译、构建、测试、调试,到安全、合规和生产部署,整套工程基础设施都要跟上。
微软为什么要做 rustc_codegen_utc?
Rust 获得 Tier-1 级别的工程支持后,真正的问题也随之而来:如何让 Rust 更顺畅地进入微软已经运行数十年的 Windows 原生开发体系?
Victor Ciura 在文章中提到,Windows 与 MSVC 已经共同演进了数十年,C 和 C++ 也一直是微软开发平台的重要基础。如今,随着 Windows 和 MSVC 不断加入新的技术能力,微软需要确保这些能力能够同时服务于 C++ 和 Rust,并尽可能实现两种语言之间的无缝协作。
这件事对 Rust 来说尤其重要。随着 Rust 在微软内部的应用不断扩大,从固件、驱动程序,到内核、虚拟机监控程序,再到微服务和应用,越来越多的软件开始涉及 Rust。与此同时,很多大型系统又不可能一下子摆脱已有的 C++ 代码,因此 Rust 与 C++ 长期共存将成为常态。
也正是在这个背景下,微软创建了rustc_codegen_utc项目。
简单来说,rustc_codegen_utc 是 Rust 编译器 rustc 的一个替代代码生成后端,与 rustc_codegen_llvm、rustc_codegen_gcc 和 rustc_codegen_cranelift 属于同一架构体系。
它接入 rustc 的后端接口,将 Rust 编译器原有的编译能力连接到微软的 MSVC 后端,也就是所谓的“UTC”。
Victor Ciura 也特别强调,这个项目属于微软更广泛的平台生态战略的一部分,目标是让 Rust 获得以下能力:
与 Windows 工具链生态系统和 ABI 实现高度兼容;
支持二进制加固和代码安全功能;
支持链接后的合规检查、分析与维护,包括 Hotpatch;
为 Rust/C++ 混合项目提供无缝互操作能力;
支持跨语言内联、优化以及 SPGO(基于采样的性能引导优化);
支持调试和崩溃转储分析;
支持性能分析、诊断和代码覆盖率。
这些能力和工作流程都是微软基于 MSVC 技术栈经过多年建设形成的。将 rustc 连接到这一后端后,Rust 就可以直接利用微软在 Windows 平台上的既有投入,无需针对 Windows 的每一项特有能力重新实现一套平行方案,同时还能开箱即用地获得完整兼容性。
最终形成的,是一个面向 Windows 平台、统一服务于 Rust 和 C++ 的代码生成平台。
Rust 来了,C++ 的地位会受到威胁吗?
有意思的是,微软这次并没有把 Rust 描述成 C++ 的“接班人”。
恰恰相反,Victor Ciura 在文章中明确承认,经过数十年的发展,C++ 仍然在微软内部占据主导地位。
而微软真正想做的,是让 Rust 和 C++ 在 Windows 原生开发体系中拥有共同的基础。
尤其是在大型混合项目中,未来很长一段时间里,两种语言很可能会同时存在。
这也是 rustc_codegen_utc 最重要的意义之一:一个项目可以继续使用 C++ 的既有代码,同时引入 Rust;而两种语言都可以参与相同的构建、验证、诊断和维护流程。
微软甚至把这一目标概括得很直接:Rust 要参与微软已经围绕 Windows 建立数十年的原生工程生态。
目前,这项工作已经不只是实验。
微软表示,rustc_codegen_utc 从 2026 年初开始已经具备生产环境使用条件,并从 Rust 1.90 开始,它已经能够使用自身进行构建,同时也是微软内部更完整 Rust 平台的一部分。这套平台涵盖安全的 Rust 工具链供应链构建,包括 rustc、标准库及相关工具;同时还与本地开发环境、生产流水线,以及微软工程系统中的通用质量与合规流程进行了集成。
目前,已经有超过 100 个微软项目代码仓库使用 rustc_codegen_utc 完成构建。随着更多代码仓库开始采用这一方案,这一推广工作仍在每周持续推进。
从这个角度来看,这次 Tier-1 官宣真正值得关注的地方,并不是“微软又开始支持 Rust 了”。而是微软正在给 Rust 补齐一整套进入 Windows 原生生产环境所需要的基础设施。
HN 上,网友已经吵起来了
微软这次宣布 Rust 晋升 Tier-1,也很快在 Hacker News 上引发了讨论。
不少开发者对这一变化持肯定态度。有人认为,Rust 本身已经不需要再证明自己的质量,也不需要靠微软来“背书”,但它能够进入微软、Meta、Amazon 等大型科技公司的核心开发体系,本身就值得关注;Google 也正在朝类似的方向推进。

但在另一部分开发者看来,Tier-1 解决的首先是微软内部的工程基础设施问题,并不意味着 Rust 在 Windows 上的开发体验已经全部补齐。
就有开发者直接追问:什么时候才能在 Visual Studio 中获得 Tier-1 级别的 Rust 调试支持? 这个问题其实也很现实。微软此次公布的 Tier-1 支持,覆盖的是从工具链构建、开发工具,到生产部署、安全合规等完整工程流程,而 Visual Studio 本身的 Rust 开发体验显然还没有达到所有开发者期待的程度。

更值得关注的是,此前曾负责 Google 内部 Rust 项目的开发者 burakemir,也在讨论中谈到了微软这次工作的另一面。
burakemir 评论道:
祝贺所有参与这项工作的人!
我此前曾负责 Google 内部的 Rust 项目,因此还记得过去曾与微软工程师就 Rust 与 C++ 的互操作性进行过多次很有价值的跨公司讨论。
对于拥有庞大 C++ 代码库的公司来说,引入 Rust 是一种务实的风险对冲。以我们今天所熟知的 C++ 来看,它很难最终实现全面的内存安全。相比之下,一些 C++ 标准委员会的声音仍在质疑这件事的紧迫性,但对于大型科技公司而言,它们现在就需要能够真正落地的解决方案。
正因为这些现有代码库规模如此庞大,Rust 必须能够与 C++ 实现可行的互操作。
不过,究竟什么才算“良好的互操作”,其实并没有那么简单。C++ 经常允许一些别名使用方式,也依赖一些违反 Rust 别名规则的编程模式。共享后端基础设施,例如让 rustc 直接连接到 MSVC 后端,确实能够改善 ABI 布局、跨语言内联以及工具链的一致性,但这并不能解决两种语言在核心类型系统上的差异。
真正根本的障碍,还是类型系统。
跨语言边界依然是不安全的。编译器无法对 C++ 代码中的安全约束进行静态验证,因此一旦跨越 Rust 与 C++ 的边界,就仍然会处于不安全的范畴。
惯用的 C++ 数据结构往往无法自然地映射到 Rust 的编程方式。这会迫使开发者增加大量安全说明,或者构建复杂的封装层。到了某个阶段,应用开发者甚至可能会认为,与其处理这种互操作问题,不如采用序列化、进程内 RPC,甚至直接重写相关代码,这可能反而更加便宜或更加干净。
从 ABI 层面弥合这种差距是务实的做法,但如果为了兼容 C++ 中各种特殊情况,而不断让 Rust 的语义向其妥协,就可能损害 Rust 本身追求的目标。我不认为更广泛的 Rust 社区会愿意为了迁就遗留 C++ 代码中的一些编程模式,而让 Rust 的安全模型变得更加复杂。
需要明确的是,实用的跨语言互操作确实值得投入,但所谓“无缝互操作”需要谨慎理解。它始终存在一些难以绕开的限制,跨语言边界也始终会存在摩擦,而要真正把这种互操作做好,始终都不会是一件容易的事。
还有网友提醒,不要把微软这次的动作简单理解成“C++ 要被 Rust 取代”。
事实上,微软自己的说法已经给出了答案:C++仍然是微软内部的主力语言,而很多系统未来多年仍会同时使用 Rust 和 C++。
因此,与其说微软正在“抛弃 C++”,不如说它正在做另一件更现实的事情——把 Rust 从一个越来越受欢迎的新语言,真正变成 Windows 原生工程体系里可以和 C++ 并肩工作的语言。
至于 Rust 能不能最终取代多少 C 和 C++,可能还要交给时间回答。但至少从现在来看,微软已经开始为 Rust 铺好这条路。
来源:
https://rustfoundation.org/media/guest-post-rust-is-tier-1-language-at-microsoft/
https://news.ycombinator.com/item?id=49643546
本文来自微信公众号“CSDN”,36氪经授权发布。