先回顾关于 Linux 内核支持 Rust 的消息。
- 2019 年,内核维护者 Greg 表示愿意接受用 Rust 开发 Linux 内核的驱动程序。
- 2020 年,Linus Torvalds 回应了针对 Linux 内核支持 Rust 的个人看法。他没有否定该提议,而是提倡在默认情况下开启该 feature,以确保该 feature 能被充分测试。当然该 feature 最好以自适应的方式实现,如果在系统上检测到 Rust 编译器,则 Kconfig 将启用 Rust 支持,并继续构建任何假定的 Rust 内核代码,以至少查看其是否正确构建。
- 2020 年 LPC (Linux Plumbers Conference) 大会上,内核开发者基本达成共识,他们不打算将已有的内核用 Rust 重写,只专注于可以用 Rust 编写的新代码。具体来讲,他们集中讨论了 Linux 内核对 Rust 的支持可能涉及到的三个方面:内核中现有的 API、架构支持,以及 ABI 与内核的兼容性问题。
- 2021 年,谷歌称 AOSP (Android Open Source Project) 现已支持使用 Rust 开发 Android 操作系统(Android 也属于 Linux 发行版)。
- 2021 年,Linus 再度发表自己对 Linux 内核支持 Rust 的看法,他对此持观望和开放的态度,并表示 Rust 的首要目标应该是驱动程序。
谷歌使用 Rust 开发 Android 主要是为了解决内存安全问题,其工程师认为 Rust 可以利用编译时检查(确保对象的生命周期和所有权)和运行时检查(确保内存访问有效)来保证内存安全,并且 Rust 在实现这种安全性的同时,还提供了与 C 和 C++ 相当的性能。谷歌向 Android 添加新的开发语言并没有涉及到旧代码,主要是用于新的开发——以避免产生新的内存安全错误。这与 Linux 内核支持 Rust 的实现思路基本一致。
2022 LPC 大会上,Linus 又谈到了 Rust。他本以为能在 6.0 版本中看到 Rust 合并进内核,但最终没有实现。所以他也不会断言能够在 6.1 版本中达成此目标。
同样是在这场会议,西部数据公司的 Linux 内核工程师 Andreas Hindborg 展示了使用 Rust 编写的 NVMe 驱动程序,其基准测试结果表明,虽然 Rust NVMe 驱动程序仍处于早期阶段,但其已表现不俗—— Rust 驱动程序能够实现与 C 驱动程序相当的性能。Linux 内核开发者认为 Rust on Linux 已经处于准备就绪状态。
就在 LPC 大会之后的 2022 Linux 内核维护者峰会上,Linus 提议将 Rust 支持合并到 Linux 6.1 中。他表示希望在内核中看到 Rust 的一个原因是鼓励新的开发者研究内核。
此前 Rust 没有完全进入内核的原因主要有两个,其中一个是非标准的 Rust 扩展的处理,另一个更重要的原因是 Rust 编译器还不稳定。Linus 表示自己更关心后面这个原因,因为 Rust 编译器的可靠性和稳定性更重要。
根据 ZDNet 的报道,Linus 在邮件采访中回复记者称,除非发生意外,否则对 Rust 的支持将会被合并到 Linux 6.1。同时他提醒目前“Rust 只在核心基础设施使用”。无论如何,对于 Rust 和 Linux 来说这都是重要的第一步。