Rust 是 Microsoft 的一级语言
摘要
Microsoft 宣布将 Rust 列为内部开发的一级语言,并推出了 rustc_codegen_utc,这是一个新的代码生成后端,将 Rust 与 MSVC 集成,以增强 Windows 平台支持。
暂无内容
查看缓存全文
缓存时间: 2026/09/10 14:21
# 客座文章:Rust在微软成为一级语言
来源:https://rustfoundation.org/media/guest-post-rust-is-tier-1-language-at-microsoft/
如今,Rust对微软具有战略重要性已不足为奇。从Azure首席技术官Mark Russinovich阐述我们原生代码未来策略时提出的大胆使命宣言,到微软向Rust项目投入数百万美元支持,这些都在过去数年间持续进行。观看Mark在去年RustConf大会上的主题演讲(https://www.youtube.com/watch?v=uDtMuS7BExE),可以了解我们一些由Rust驱动的核心项目。
如今,Rust与C++、C#和TypeScript并列,成为微软内部开发中支持最完善的语言之一。这种“一级语言”的工程地位意味着为内部团队提供从本地开发到生产环境的平坦通道:安全的工具链构建、高效的开发工具、完善的工作流程、深度的平台集成,以及符合微软软件必须满足的SDL要求。
Windows平台与MSVC已共同演进数十年,C和C++一直是我们开发平台的基石。随着MSVC和Windows不断推陈出新,我们需要确保这些特性和功能在C++和Rust中都可用,并实现两者之间的*无缝互操作*。
MSVC*就是*Windows的原生平台编译器,随着Rust在微软内部从固件和驱动、内核和虚拟机管理程序到微服务和应用的广泛使用,它必须完全参与该生态系统。这在混合Rust/C++项目中至关重要。我们为此目标进行的重要投资之一就是`rustc_codegen_utc`。
### **介绍** **rustc_codegen_utc**
`rustc_codegen_utc`是rustc的一个替代代码生成后端,与`rustc_codegen_llvm`、`rustc_codegen_gcc`和`rustc_codegen_cranelift`属于同一架构体系。它接入相同的后端接口,将rustc的共享编译器机制连接到MSVC后端(即“UTC (https://devblogs.microsoft.com/cppblog/optimizing-c-code-overview/)”)。
它作为更广泛的平台生态系统战略的一部分,支持:
- 与Windows工具生态系统及ABI的高兼容性
- 二进制加固和代码安全特性
- 链接后合规性、分析和维护(包括热补丁)
- 混合项目的无缝Rust/C++互操作
- 跨语言内联、优化和SPGO (https://devblogs.microsoft.com/cppblog/introducing-sample-profile-guided-optimization-in-msvc/)(样本配置文件引导优化)
- 调试和崩溃转储分析
- 性能分析、诊断和代码覆盖率
这些能力和工作流是MSVC技术栈多年积累构建而成的。将rustc连接到该后端,让Rust能够基于相同的平台投入进行开发,开箱即用即可获得*完美兼容性*,而无需为每项Windows特定功能另行实现并行方案。
其成果是为Windows上的Rust和C++提供了*统一*的代码生成平台。
### **面向Rust和C++的原生平台演进**
微软的生产软件需经过严格的安全和质量工作流。Rust已成为微软的一级语言,但C++在数十年的发展后仍占主导地位。使用*统一*的代码生成平台将最大限度地减少我们的维护和演进成本。MSVC和Windows持续创新,新的代码生成能力、安全特性、诊断和维护技术不断被添加。
借助rustc_codegen_utc,这些投入为C++和Rust奠定了共同基础。这在运维上很重要,因为它减少了重复工程;在战略上同样重要:Rust直接参与了微软的Windows原生工程生态系统。
这对于混合Rust/C++项目尤其有价值,许多系统将在未来多年同时使用这两种语言。共享后端为系统的两端平等参与所有开发工作流奠定了*基础*。
这种对齐是rustc_codegen_utc存在的主要原因之一。它使Rust能够满足微软团队构建、验证、诊断和维护Windows软件的环境所要求的工程标准。
### **更强大的Rust与C++互操作基础**
在其他平台上,如果混合Rust/C++项目使用Clang编译其C++代码,两种语言已经可以到达相同的LLVM代码生成平台。rustc_codegen_utc为MSVC作为原生平台编译器的Windows原生C++项目创造了同样的共享后端机会。
代码生成、平台特性、ABI、EH和链接后工具只是互操作挑战的*一半*。高保真的语言级互操作、FFI契约、绑定、语言语义差异……以及构建系统只是我们*在内部和整个行业*正在解决的部分问题。请参阅Rust基金会的***互操作性倡议***,快速了解问题领域和持续的社区努力:https://rustfoundation.org/interop-initiative/
### **作为微软Rust平坦通道的一部分进行推广**
`rustc_codegen_utc`是微软DevDiv一个专门团队的重大投入,自2026年初起已具备**生产就绪**状态。自Rust 1.90版本起,它已用于自举编译,并成为更广泛的内部Rust平台的一部分,该平台包括rustc、标准库及配套工具的安全供应链构建,与本地开发、生产管道以及我们工程系统中通用质量与合规工作流的集成。
目前已有超过100个微软项目仓库使用它构建。随着更多仓库的采纳,推广工作每周都在持续。
这是微软对Rust完整工程生命周期持续投入的一部分:获取、工具、质量、安全、平台集成、生产部署和长期支持。
`rustc_codegen_utc`是这段旅程中的重要组成部分。其差异化优势很简单:它将rustc连接到微软围绕Windows构建数十年的原生后端和生态系统。
这为我们提供了Rust与C++的统一基础,为Windows平台投入触达两种语言的路径,并为微软将持续构建的混合原生系统奠定了更强大的基础。
如果您想向我们提问或分享反馈,请加入Rust项目Zulip上的这个专属讨论主题(https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/rustc-codegen-utc/with/623119950)。
相似文章
crustc: 整个rustc编译器,已翻译成C语言
一个名为cilly的Rust到C编译器工具链已成功将整个rustc编译器翻译成4600万行C代码,生成了一个可以用GCC构建的功能性Rust编译器。该项目旨在通过生成可移植的C代码,使Rust能够在老旧/冷门硬件上运行。
@MSFTResearch: 密码学代码为现代计算系统提供关键保护。了解一种新方法如何在编写代码时验证代码...
微软研究院提出了一种新方法,使用Rust、Lean、Aeneas和AI代理来形式化验证密码学代码,实现了对ML-KEM和SHA-3等生产算法的可扩展验证,同时保持性能。
Zerostack – 一个受Unix启发的纯Rust编写的编码助手
Zerostack 是一个完全用 Rust 构建的受 Unix 启发的编码助手,旨在帮助开发人员进行代码生成和自动化。
Rust语言的性能
本次演讲分析了Rust相较于C++的性能优势与劣势,提供了基准测试和最佳实践。附有幻灯片和阅读材料。
我们如何(及为何)将生产环境的C++前端基础设施重写为Rust
NearlyFreeSpeech.NET 将其生产环境的C++前端基础设施(nfsncore)重写为Rust,该系统负责所有传入请求的路由、缓存和访问控制。迁移的动机是Rust的安全性保证、性能、生态系统优势以及老化的C++代码库的局限性。