Rust 准备好为系统开发驱动程序了吗?

以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」mp.weixin.qq.com/s/PJIjENgPM...

微软为了实现操作系统内存安全编程,现在终于迈出关键一步,并在 Github 上发布了相关代码,使得开发人员能够使用 Rust 语言编写 Windows 驱动程序的代码,最起码已经可以开始动手做一些实际的事情了。

微软云 Azure 首席技术官 Mark Russinovich 在 X(改名后的推特) 上发布了推文,同时评论说:"致力于在 Rust 中实现 Windows 驱动程序开发"

如果你上不了 github,可以关注我并在公众号后台回复 rust-windows-driver,即可获取网盘下载链接。

这项工程可以追溯到很多年前。2019 年 7 月,微软研究院宣布了期望在漏洞发生之前就消除所有类似的漏洞,这样就为了内存安全语言提供了用武之地,同时还指出了最有希望满足这些要求的新型系统编程语言之一---- Rust 编程语言。

微软非常欣赏 Rust,除了因为 Rust 的内存安全性,还因为它的数据竞争安全性,Rust 可以确保不会有两个或多个线程对一块内存进行竞争性访问。

去年,Russinovich 声称,是时候停止使用 C/C++ 来启动任何新项目了,并推荐使用 Rust 替代非 GC 语言。另外,为了安全可靠,呼吁业界应该宣布这些语言已被弃用。

GC 或垃圾收集语言(例如 C# 和 Java)适合业务应用程序,但不适合底层系统编码。虽然 C++ 没有 GC,但是我在之前也写过相关的 C++ 垃圾回收功能,可以点击查看《都说 C++ 没有 GC,RAII: 那么我算个啥?》

Windows 大部分构件是用 C 和 C++ 编写的。微软资深软件工程师 Raymond Chen 在 2018 年表示,由于各种技术和历史原因,大多数用户模式代码现在都是 C++ 语言,而内核代码仍然是 C 语言。

虽然 Windows 11 从那时起就出现了,但开发新版本操作系统仍然不会重写所有构件,所以 C/C++ 仍然占据主要内容。

硬件制造商为了适配相应硬件和 Windows 系统,仍然会使用 Windows 驱动程序工具包开发相关驱动,由于这也是一个 C/C++ 工具包,所以最终发布的驱动程序也是基于 C/C++ 语言。

但是,最近情况开始转变,新的基于 Rust 的驱动程序工具包已经发布!其发布时指出其目的是支持 WDM(Windows 驱动程序模型)和 WDF(Windows 驱动程序框架)驱动程序。WDM 驱动程序处于较低级别,与操作系统紧密相关,而 WDF 驱动程序通过框架库与系统交互。初始存储库主要关注 WDK。

但是,这个新的工具包补充说,该项目仍处于开发的早期阶段,尚未建议用于商业用途。Microsoft 仍然鼓励对其实验和更多的反馈,并引导开发人员前往代码库 GitHub 讨论论坛寻求反馈。

想要在工具包中引入 Rust,早期的一个无法回避的问题是如何处理异常。对于 Windows 内核(以及一般的操作系统)来说,结构化异常处理是 Windows 开发中不可或缺的一部分,也是使用 Rust 开发 Windows 内核的真正障碍。

Rust 没有异常处理,只能使用 Result 变量报告可恢复的错误,并在出现不可恢复的错误时以紧急失败退出。这种错误处理在内核代码中是不受欢迎的,因为它们会导致系统崩溃。

有开发商表示,在 Linux 内核(Rust 也被采用)的背景下,因为内核代码与随机用户空间系统工具不同,在内核中内存不足绝不能导致中止,它只需要导致错误返回已通知系统处理。

对于 Rust 想要在内核开发中大展拳脚,异常处理是无法忽视或者逃避的问题。

微软新存储库中的早期代码包含以下注释:

arduino 复制代码
// FIXME: Should this trigger Bugcheck via KeBugCheckEx?

这说明,将 Rust 引入底层 Windows 代码绝不仅仅是为 WDK API 添加 Rust 语言绑定的问题。虽然如此,最初的开发者反应总体上是积极的。内存安全问题在 Windows 安全性和稳定性问题中一直占很大的比例,所以转向 Rust 是一个目前大家都很关注的解决方案。

相关推荐
怪我冷i16 小时前
Rust错误处理之unwrap
rust·cloudflare·unwrap
楚国的小隐士1 天前
为什么说Rust是对自闭症谱系人士友好的编程语言?
java·rust·编程·对比·自闭症·自闭症谱系障碍·神经多样性
Tomhex2 天前
Rust智能指针使用指南
rust
AI自动化工坊2 天前
Claw Code技术深度解析:Python+Rust混合架构的设计与实现
开发语言·人工智能·python·ai·架构·rust·开源
web前端进阶者3 天前
Rust初学知识点快速记忆
开发语言·后端·rust
一只幸运猫.3 天前
Rust实用工具特型-Clone
开发语言·后端·rust
咚为3 天前
深入浅出 Rust 内存顺序:从 CPU 重排到 Atomic Ordering
开发语言·后端·rust
咚为3 天前
深入浅出 Rust RefCell:打破静态检查的“紧箍咒”
开发语言·后端·rust
lUie INGA3 天前
rust web框架actix和axum比较
前端·人工智能·rust
沛沛rh454 天前
深入并发编程:从 C++ 到 Rust 的学习笔记
c++·笔记·学习·算法·rust