2026 年初,超过 100 个微软内部项目仓库悄然切换到了全新的 Rust 编译链路。随着各个核心业务线跟进,这个接入数字每周都在攀升。这并非简单的编译器版本升级。它是微软工具链团队经过漫长打磨后的一项底层替换工程。
Azure CTO Mark Russinovich 此前公开定调原生代码战略。微软也投入数百万美元支持 Rust 项目。业内习惯将这些动作解读为替换 C++ 的冲锋号。然而微软真正的动作比重写一切更隐蔽。他们并未重新造一套针对 Windows 的编译器。相反,他们在编译器深处挖了一条隧道,让 Rust 编译器直接连上了 MSVC 的核心代码生成后端。
铺设一条直通生产的管线
在大厂的公关语境中,宣布支持某种语言往往只是一份倡议声明。但微软对内部 Tier-1(一级)语言的定义非常具体。它要求为内部业务团队提供一条从本地代码编写到生产环境部署的铺装道路(paved path)。这不仅关乎代码能不能跑起来,更关乎整套工业级基建的对接。
这条生产管线必须包含可信的工具链构建机制,以及配套的开发者工具。严苛的代码质量验证流程和深度的操作系统平台集成缺一不可。任何微软生产软件都必须满足 SDL(安全开发生命周期)合规要求,一级语言的底座必须原生支撑这些合规验证。语言地位的跃升,对应的是基础设施底盘庞大的资源倾斜。
对于长期以 C++ 为根基的 Windows 系统栈,引进 Rust 面临极高的重置壁垒。如果在 Windows 平台上为 Rust 从零打造一套工具链,重做现有的安全检查链路,平行演进的成本将难以承受。在大型遗留系统中,直接为新语法接上旧基石,成了具备工程可行性的现实方案。
换掉后端,接管三十年基建
名为 rustc_codegen_utc 的项目由微软 DevDiv 和 CoreAI 团队专职推进。首席工程师 Victor Ciura 在 Rust Foundation 官方博客披露了技术细节。Ciura 拥有 25 年 C++ 系统编程经验。他曾主导 Visual C++、Advanced Installer 和 Clang Power Tools 的开发。由他操刀新旧语言底层的桥接非常合适。
图:Rust Foundation 官方博文题图。来源:Rust Foundation
在整体架构设计上,rustc_codegen_utc 是 rustc 的替代代码生成后端。它与 rustc_codegen_llvm、rustc_codegen_gcc 和 rustc_codegen_cranelift 属于同一个架构家族。它接入了相同的后端接口,将 rustc 的前端解析机件,直接接引到了内部代号为 UTC 的 MSVC 后端。在此之前,Rust 在 Windows 上主要依赖 LLVM 后端,这使得它与 Windows 原生工具链始终隔着一层壁垒。
这种架构设计的工程回报开始显现。一旦接上 UTC 后端,Rust 自动继承了 Windows 生态几十年沉淀下来的各项安全武器。它开箱即用地获得了与 Windows 工具链生态及 ABI 的兼容性。深度的二进制加固与代码安全防御特性成为标配。复杂的链接后合规检查、分析与热补丁(Hotpatch)服务化能力也一并被纳入囊中。Windows 平台独有的结构化异常处理等底层机制,也落在同一套后端能力里。
混合工程走向共用底座
在非 Windows 的技术栈中,跨语言编译底层的融合早已发生。如果混合工程使用 Clang 编译 C++ 代码,这部分逻辑和基于 LLVM 编译的 Rust 站在了相同的底层平台上。现在,rustc_codegen_utc 把这种共享架构机会,完整搬到了以 MSVC 为编译器的 Windows 领地。这让 Windows 原生开发迎来了一次底层重构。
图:Mark Russinovich 在 RustConf 上的主题演讲截图。来源:RustConf / Microsoft
共用代码生成底座不仅解决了生态割裂。它还直接打通了跨语言深度优化的阻碍。它在底层撑起了跨语言函数内联和跨语言全链路代码优化。SPGO(Sample Profile Guided Optimization,采样性能剖析引导优化)也得到了原生支持。从生产环境采集的 C++ 和 Rust 混合调用图谱,将直接用于指导后端生成更高效的机器码。
在问题排查链条上,它能生成统一的调试与崩溃转储分析文件。精确的性能剖析、诊断与代码覆盖率报告一应俱全。Rust 与 C++ 的混合工程从此告别了两个隔离世界的强行拼凑,真正演变为同一套后端引擎上的两种前端语言。
互操作难题暴露出深水区
尽管底层代码生成的拼图已经缝合,Ciura 依然清醒地划定了目前工程解决的边界。他指出,编译器底层的互通仅仅解决了互操作难题的一半。底层的二进制兼容只是让两种语言拿到了在同一个内存空间对话的资格。代码生成、平台怪癖、ABI、异常处理和链接后工具都属于这一类。
另一半的硬骨头在于语言层面的高保真互操作。不同语言之间的 FFI(外部函数接口)契约如何验证安全性。复杂的原生对象跨语言绑定如何设计。系统级语言的语义差异如何抹平。如何将两种不同风格的构建系统连结。比如,当 C++ 的析构函数抛出异常时,如何与 Rust 的 panic 机制无缝衔接。
这些仍然需要海量的细节修葺。微软在内部推动业务团队磨合的同时,这也与 Rust Foundation 发起的 Interoperability Initiative 倡议形成呼应。在这个倡议中,来自不同公司的工程师正试图在语言规范层面扫平 C++ 与 Rust 的互操作障碍。
用接入化解十亿行重写压力
在 Hacker News 讨论区,曾有用户引用「微软计划把 10 亿行代码转成 Rust」的言论。这番言论抛出了「2030 年单工程师每月完成 100 万行转换」的指标。但这随即被社区知情人士纠正。那仅仅是微软研究院特定团队的研究挑战目标,当事人后来也澄清过并非官方工程计划。将庞大的遗留系统推倒重来,在商业公司里从来不是现实选项。
相比于全面推倒重写,强烈的外部安全合规压力构成了更加实在的工程驱动力。NSA 与 CISA 等机构反复建议,所有关键软件开发都应转向内存安全语言。当内存安全的大风向不可逆转,如何在庞大历史债务下推进转型考验着现实判断力。统一后端成了化解这种压力的支点。
该底层后端项目自 Rust 1.90 起实现了自举(self-hosted),并在 2026 年初达到 production-ready 状态。微软的生产软件依然要通过大量安全与质量流程,C++ 在经历了几十年的积累后仍占主导。但统一代码生成平台把维护和演进成本同时压低。微软这次真正的动作不在于推翻过去的城墙,而是让 rustc 接上 MSVC 已有的 UTC 后端,用同一条基建管线接纳新语言。
参考链接:
- Guest Post: Rust Is Tier-1 Language at Microsoft
- Hacker News 讨论
- Interoperability Initiative