“巨硬”要让Windows更硬,用18万行Rust代码重写核心Windows库
微软正在用 Rust 编程语言重写核心 Windows 库。Windows 操作系统安全总监 David “dwizzle” Weston 上个月在以色列特拉维夫的 BlueHat IL 2023 上宣布 Rust 进入操作系统内核。”在接下来的几周或几个月内,大家将会在内核中使用 Rust 启动 Windows,该项工作的基本目标是将其中一些内部的 C++ 数据类型替换成 Rust。”
Rust 是一种高性能、内存安全语言,而软件项目的大部分漏洞都属于内存安全 bug。自 2004 年以来,微软安全响应中心(MSRC)对所有报告过的微软安全漏洞进行了分类。根据他们提供的数据,所有微软年度补丁中约有 70% 是针对内存安全漏洞的修复程序。
目前微软主要重写了 Windows 中的两个项目——DWriteCore 以及 Win32 GDI,包含了一些非常古老的代码。
Windows 的 Rust 革新始于 2020 年的 DWriteCore,它是 Windows 的 DWrite 引擎的 Windows App SDK 实现,用于文本分析、布局和渲染,其中现包含了约 152,000 行 Rust 代码和 96,000 行 C++ 代码。
Windows 图形设备接口 (Win32 GDI) 作为另一个用 Rust 重写的项目,目前已包含 36,000 行 Rust 代码。Weston 强调道,与 C++ 相比,Rust 不仅易于编写还易于理解。最新版本的 Windows 11 启动中使用的就是这个 Rust 版本,虽然它已经通过了所有 GDI 测试,但 Rust 接口目前仍通过功能标志被禁用。
Weston 还透露,Windows 内核中的 SysCall 也是采用 Rust 实现的。但他也表示,用 Rust 重写 Windows 可能不会很快发生。“所以虽然我们喜欢 Rust,但我们需要一种策略,同时保护更多的原生代码。”
事实上,早在几年前微软就表现出了对 Rust 的兴趣,他们认为该语言是一种在代码到达用户手中之前捕获和消除内存安全漏洞的方法。现如今,随着谷歌等竞争对手都在大力拥抱 Rust,微软对 Rust 的探索也变得更加热情。去年 9 月,微软 Azure 首席技术官 Mark Russinovich 还曾在社交平台上发布动态呼吁,开发人员应该更多地使用 Rust 而不是 C/C++ 来启动新项目。
另一方面,虽然用 Rust 重写 Windows 不会很快发生,但微软对 Rust 的支持无疑让开源社区受益。开源软件开发者、现任 Sentry 安全工程师 Armin Ronacher 认为,微软对 Rust 的投入对这门语言来说非常重要。
“具体来说,我希望微软重用现有的编译器,我希望这会带来更好的 PDB [程序数据库] 支持。在现如今的 Windows 上,开发人员工具支持要落后于你在基于 DWARF 的 [使用属性记录格式进行调试] 平台上获得的支持。”
Armin 也是 Python Web 框架 Flask 的作者,最近开源了用 Rust 重写的 Python 包管理工具 Rye。更多细节阅读:Flask 之父凭一己之力击败各种 GPT,称 Python 包管理比LLM更火热
Pydantic 的创始人兼使用 Python 和 Rust 的开发人员 Samuel Colvin 也表示,“我对微软的这种前瞻性思维印象深刻,但并不感到非常惊讶。我相信他们是在工程师的施压下才决定采用 Rust。如果你今天正在构建一个性能关键或低级别的应用程序,那么 Rust 在这一点上是一个明智的选择。”
Colvin 还认为,找到优秀的 Rust 工程师比找到优秀的 C/C++ 工程师更容易,因为很多工程师都有兴趣尝试学习该语言。“对于我们这些依赖 Rust 的人来说,微软正在使用它并希望支持它,这真的很令人兴奋。”
相关链接:
-
https://youtu.be/8T6ClX-y2AE?t=3100
-
https://www.theregister.com/2023/04/27/microsoft_windows_rust/
-
https://youtu.be/8T6ClX-y2AE?t=3149
本文文字及图片出自 OSC开源社区
你也许感兴趣的:
- Android 全力押注 Rust,Linux 却在原地踏步?谷歌:用 Rust 重写固件太简单了!
- C 语言老将从中作梗,Rust for Linux 项目内讧升级!核心维护者愤然离职:不受尊重、热情被消耗光
- 从电梯故障到编程新宠,Rust为何连续七年称霸「最受推崇语言」
- 【外评】不要把 Rust 写成 Java
- 语言设计: Rust 的几乎规则
- 美国国防部建议将C代码转换为Rust
- 【外评】Why Not Rust?
- 【外评】 我使用(并喜爱)Rust 已经有 10 年了, 以下是它让我失望的地方
- 【外评】为什么我希望不要让 Rust 锈化一切?
- 【外评】Rust 版的 Linux 文件系统
你对本文的反应是: