今年 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
格式字符串)。该系列补丁的主要内容:
- 让
str.rs
和print.rs
与下游同步- 添加剩余的 proc 宏
- 让
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 驱动程序。