微软正在用 Rust 编程语言重写核心 Windows 库。Windows 操作系统安全总监 David “dwizzle” Weston 上个月在以色列特拉维夫的 BlueHat IL 2023 上宣布,Rust 将进入操作系统内核。"在接下来的几周或几个月内,你将在内核中使用 Rust 启动 Windows,这真的很酷。这里的基本目标是将其中一些内部的 C++ 数据类型转换为其 Rust 等价物。"
Windows 的 Rust 革新始于 2020 年的 DWriteCore,它是 Windows 的 DWrite 引擎的 Windows App SDK 实现,用于文本分析、布局和渲染,其中现包含了约 152,000 行 Rust 代码和 96,000 行 C++ 代码。
外媒 The Register 称,Microsoft Windows 图形设备接口 (GDI) 正在移植到 Rust,已包含 36,000 行 Rust 代码。最新版本的 Windows 11 也使用 Rust 版本启动,它通过了所有 GDI 测试,但 Rust port 目前在功能标志后面被禁用。
且 Weston 透露,Windows 内核中现在有一个 SysCall,是采用 Rust 实现的。但他也表示,用 Rust 重写 Windows 可能不会很快发生。“所以虽然我们喜欢 Rust,但我们需要一种策略,同时保护更多的 native code。”
事实上,早在几年前微软就表现出了对 Rust 的兴趣,他们认为该语言是一种在代码到达用户手中之前捕获和消除内存安全漏洞的方法。现如今,随着谷歌等竞争对手都在大力拥抱 Rust,微软对 Rust 的探索也变得更加热情。去年 9 月,微软 Azure 首席技术官 Mark Russinovich 还曾在社交平台上发布动态呼吁,开发人员应该更多的使用 Rust 而不是 C/C++ 来启动新项目。
另一方面,虽然用 Rust 重写 Windows 不会很快发生,但微软对 Rust 的支持或使开源社区受益。开源软件开发者、现任 Sentry 安全工程师 Armin Ronacher 认为,微软对 Rust 的承诺对这门语言来说非常重要。
“特别是,因为我希望微软重用现有的编译器,我希望这会带来更好的 PDB [程序数据库] 支持。在现如今的 Windows 上,开发人员工具支持要落后于你在基于 DWARF 的 [使用属性记录格式进行调试] 平台上获得的支持。”
Pydantic 的创始人兼使用 Python 和 Rust 的开发人员 Samuel Colvin 也表示,“我对微软的这种前瞻性思维印象深刻,但并不感到非常惊讶。我确信他们的工程师在采用 Rust 方面有被施压。如果你今天正在构建一个性能关键或低级别的应用程序,那么 Rust 在这一点上是一个明智的选择。”
Colvin 还认为,找到优秀的 Rust 工程师比找到优秀的 C/C++ 工程师更容易,因为很多工程师都有兴趣尝试学习该语言。“对于我们这些依赖 Rust 的人来说,微软正在使用它并希望支持它,这真的很令人兴奋。”