微软正在用 Rust 重写核心 Windows 库


微软正在用 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 的人来说,微软正在使用它并希望支持它,这真的很令人兴奋。”


相關推薦

2023-07-18

Windows 11 上周发布了新的测试版 (Insider Preview Build 25905)。 发布公告提到此版本已经使用 Rust 重写 Windows 11 内核中的部分模块。 据介绍,该预览版使用 safe Rust 对关键内核功能进行了早期实现。具体来说,win32kbase_rs.sys 包含

2022-12-23

Nick Cameron 是就职于微软负责 Rust 开发的首席工程师,此前是 Rust 核心开发团队的成员。他在 3 个月前发表文章:“Rust 面临的十大挑战”,称这是 Rust 应该在 2023 年要解决的问题。 上周他又发表了文章:“Rust in 2023”,表达对

2023-03-03

动程序尝试使用 Rust  —— 内核中的“VGEM”驱动程序正在用 Rust 编程语言重写。 VGEM(Virtual GEM) 是 Linux 4.1 版本引入的虚拟 GEM 提供者,作为最小的非硬件支持的图形执行管理器 (GEM) 内存管理服务已经存在了一段时间。它

2023-04-24

面前端,语法优美, F12调试界面CSS, 好爽啊。 但是后面微软大佬们发力做了 TypeScript 以后, CoffeeScript这种语言就淡出人们的视野了。 12: TypeScript: 如果你羡慕JavaScript轮子生态, 有生产力, 但是又鄙视JavaScript的混乱语法和标

2022-09-20

微软首席工程师 Nick Cameron 发布了一篇博客,指出了他认为现在和未来几年 Rust 将面临的十大挑战,并提出了一些初步的解决方案想法。目前,Nick Cameron 主要负责该公司 Rust 相关的工作;曾经,他还是 Rust 核心团队的成员。 Nick

2022-04-04

图并对其进行注释,而无需任何额外的程序。 用 Rust 重写 Baobab Baobab(又名磁盘使用分析器)是用 Vala 编写的。然而 Vala 没有强大的库生态系统,且该工具还有一些不足之处。但 Rust 拥有蓬勃发展的库生态系统和出色的工具

2023-08-31

止内存安全漏洞,由 AWS 资助的 Ferrous Systems 和 Tweede Golf 正在联合将 sudo 和 su 从 C 移植到 Rust。 据介绍,Prossimo 对于选择的软件会重点关注以下方面: 使用非常广泛(几乎每个服务器 / 客户端都在使用) 被应用于重要

2023-05-05

互联网安全研究小组 (ISRG) 的 Prossimo 项目正在用 Rust 重写 sudo 和 su,目标是提升它们在内存方面的安全性,确保它们不再遭受内存安全漏洞的困扰,并进一步增强 Linux 和开源生态系统的安全性。 据介绍,Prossimo 选择的软件会重

2023-02-02

具链的明确途径。每年的“开发痛苦”都会加重。 C++ 正在成为一种“遗留语言”,未来寻找贡献者将变得困难,而 Rust 拥有一个活跃且不断发展的社区。 Rust 是实现并发函数执行所需要的语言。 用 Rust 编写将有助于 fish 继

2022-07-29

安全特性,Rust 如今备受青睐,包括已在苹果、亚马逊、微软、谷歌和 Linux 内核开发中被采用。但 The Register 指出,对 Meta 来说,内存安全在短期内可能不如客户安全重要。咨询公司 Everest Group 发布的一份有关“元宇宙中信

2023-03-01

同的服务。 近日,Cloudflare 工程师介绍了如何使用 Rust 重写基于 C 语言的 Nginx 模块。Cloudflare 工程师在博客写道,他们用 Rust 为 Cloudflare 基础设施中最古老和最不为人所知的部分——cf-html,编写了替代品。这是一个 Nginx 模块,

2023-01-19

eScript 重写 CLI,并支持在 Node Runtime 上运行。 Shopify 内部正在使用的编程语言除了最熟悉的 Ruby 之外,其次是 Node、Go 和 Rust。从技术层面来说,Go 和 Rust 也是理想的选择,Go 和 Rust 程序能够方便地编译成二进制文件,因此用户

2023-11-28

。他们表示不会删除所有的 C++ 代码,也没有计划移植到 Windows 平台。他们还表示不会更改 Fish Shell 的名称或吉祥物,并且对于最终移植的性能,他们表示早期结果是令人鼓舞的,但可能在某些情况下会比现有版本慢约 20%。 最

2022-09-21

。 Go、Nim 和 Crystal 都是比 C/C++ 更好的选择。还有 Zig,它正在做一些很酷的事情,但尚未像 Rust 那样成熟或流行。” 目前,Hacker News 和 Reddit 上也有相关的话题讨论。 Rust 最近确实有着较高的热度: Linus Torvalds