Linux 内核中 Rust 的最新状态

在近日举行的 Linux Plumbers Conference 上,Linux 和 Rust 开发人员 Miguel Ojeda 向 Linux 内核开发人员介绍了有关 Linux 内核中 Rust 的最新情况。简而言之,Rust Linux 正在不断走向成熟,并得到了思科、三星和 Canonical 等开发者和供应商的大力支持。

目前,一些发行版已经张开双臂拥抱 Rust。例如,Ubuntu 已经提供了“构建和测试树外内核模块所需的所有必要工具链和内核要求”。

三大 Linux Rust 工具链也正在形成。一个是 rustc 的 GCC codegen,该工具链无需修改源代码即可编译并启动主线 Rust 和 Linux。

另一个是 GCC Front-End for Rust,它可以由现有的 rustc 前端加载,但受益于 GCC 的优化;不过该项目仍处于 alpha 阶段。还有一个是 Coccinelle for Rust;Coccinelle 是一个用于制作大规模 Linux 内核 C 源代码的工具,而 Coccinelle for Rust 正试图将这一功能引入 Rust 代码库。

一些开发者还在尝试使用 Rust 编写驱动程序。至于一些使 Rust 与 Linux 完全集成所需的日常工作,均可以在Rust for Linux 这一官方网站查询更多详情。

开发了两年之久的原始 rust 代码分支已经退役;代码还在,但已被冻结和归档。今后,rust-next 分支将包含新的 Rust 特性,并在 Linux 内核的下一个合并窗口中提交。而这个分支,顾名思义就是 Linux Next 的一部分。

Rust-fixes 分支则包含 Linux 内核当前周期的 Rust 修复。还有一个用于集成的实验分支 Rust-dev ,是一个"look good enough"的补丁队列。

理所当然的是,前进之路并非一帆风顺。Rust on Linux 的开发人员在过程中发现了一些问题:例如,当两个或多个线程等待另一个线程结束时,死锁在 Rust 中是安全的,因为它们不会导致未定义的行为,但它们在 Linux 内核中却不安全。目前开发人员正在努力解决这个问题。

另一方面,开发人员还在担心如何处理 Rust 版本的问题。因为最新版本的 Rust Linux 兼容一些不稳定的功能,所以他们无法保证较新的 Rust 版本能在 Linux 中运行。Linux Rust 程序员现下正在跟踪最新版本的 Rust 编译器。

与此相关的一个问题是,大众对将 Rust 支持反向移植到的 Linux 的 LTS 版本(特别是 5.15 和 6.1)中越来越感兴趣。但 Linux 通常不允许将 Rust 移植到 LTS Linux 中。因此,ZDNet 指出,如果你真的非常想要在旧版的 LTS 内核中获得功能齐全的 Rust 支持,那么你就需要以某种方式支付费用。

总的来说,Rust 无疑正在成为 Linux 开发的重要语言。但在这一进程中无疑还有许多挑战需要克服,正如 Ojeda所述,虽然“核心团队随着新成员的加入而成长”,但前进之路上仍有很多工作要完成。