今年 10 月,初始的 Rust 基础设施已被合并到 Linux 6.1 。意味着未来 Rust 编程语言将用于内核驱动程序和其他子系统的代码。但 10 月的 Rust for Linux 只提供了底层的基础设施和一些非常基础的集成,缺少很多规范和子系统抽象。
近日,领导 Rust for Linux 工作的 Miguel Ojeda 发布了一组优化补丁( 28 个),为内核提供了更多的 Rust 核心支持代码。
Ojeda 在补丁系列邮件中解释道:
这个补丁系列是对上游 Rust 支持的第一批更改,所有引入的设施都是 “Rust 核心” 的一部分,不会与 C 端交互(没有使用新的 C 类型;只有 strlen、memchr、额外的错误代码和一些更多的 printk 格式字符串)。 该系列补丁的主要内容: 1、让 str.rs 和 print.rs 与下游同步 2、添加剩余的 proc 宏 3、让 error.rs 更完整,尽管稍后会出现更多的 pub(crate) 功能(以避免在系列之间留下死代码)。 此外,此系列补丁使用了一些临时的 #[allow(dead_code)] 属性,以便在组织补丁时有更多的自由度,同时保持所有补丁都可构建,而不会出现警告 / 错误。但这些属性只是临时使用,在系列补丁最终发布时没剩下多少。
这批补丁几乎所有代码都在 linux-next 中呆了好几个月,属于 Rust 补丁系列的一部分,且每个补丁都在启用 Rust 的 defconfig
上进行了构建测试。鉴于其测试的完整度,这批补丁极有可能进入 Linux 6.2 合并窗口。
一旦所有 Rust 基础设施都到位,将会有一些硬件驱动程序开始转换为 Rust 代码,一些 C 驱动程序代码也会使用 Rust 重写。据外媒 Phoronix 预测,Rust for Linux 的首批主要用户之一应该是 Apple M1/M2 图形的 DRM 驱动程序。
相关链接:
http://lore.kernel.org/lkml/20221110164152.26136-1-ojeda@kernel.org/
https://www.phoronix.com/news/More-Rust-Upstream-Prep-Linux