作为 C 语言开发的代表作,Linux 内核也在越来越多地引入 Rust 语言。近日,ZDNet 就与 Linus Torvalds 和 Greg Kroah-Hartman 等人展开了类似的讨论。早在去年的 Linux Plumbers 会议上,开发者们就认真思考了如何将 Rust 语音用于新的 Linux 内联代码,且当前市面上已有不少 Rust 产品。
早些时候,亚马逊云服务(AWS)推出了面向容器的 Bottlerocket Linux,其中就包含了大量的 Rust 元素。至于 Rust 为何如此流行,主要是因为它能够用于编写更安全的软件。
AWS 产品经理 Samartha Chandrashekar 表示:Rust 有助于确保线程安全、避免与内存相关的错误,从而堵上潜在的缓冲区溢出型安全漏洞。
作为 Mozilla 的主管,Sylvestre Ledru 也在夜间兼职 Debian Linux 的开发,目前已使用 LLVM 编译了基础结构、Clang C 语言前端和工具基础结构,并将 Rustutil 版本的 Coreutils 移植到了 Linux 平台。
Coreutils 是 GNU Shell 的核心实用程序,Sylvestre Ledru 借此启动了 Linux、并运行了深受欢迎的 Debian 软件包。虽然距离生产部署还有很长一段路要走,但它最终还是有望取代 GNU Coreutils 。
2019 年的时候,Alex Gaynor 和 Geoffrey Thomas 在 Linux 安全峰会上表示,约有 2/3 的 Linux 内核漏洞源于内存安全性问题。
从理论上来讲,Rust 可带来本质上更安全的应用程序接口(API),以全面规避此类情况的出现。
不过 Linux 开发者 Nelson Elhage 还是在 Linux Plumber 会议的总结词中强调,他们并非提议通过 Rust 来彻底重写 Linux 内核,而是专注于向新一代编程世界迈进。
Rust 的三大潜在应用,包括了对 Linux 内核中现有 API 的使用、体系结构支持、以及处理 Rust 和 C 语言之间的应用程序二进制接口(ABI)的兼容性。
在向 Linus Torvalds 提问对这一切都有怎样的看法时,他表示正在耐心等待和保持密切观察:
我对 Rust 项目很感兴趣,但当前似乎主要由 Rust 的爱好者所推动,因此我决定静观其变,看它最终能够在实践中发挥怎样的作用。
就个人而言,目前应该还不是推举 Rust 语言的最佳时机。不过考虑到该语言所承诺的一些优势(虽然不一定能完全兑现)、以及能够规避一些安全问题,我还是愿意接受它的。
如果分个轻重缓急,Linus Torvalds 认为 Rust 的首要目标应该放在驱动程序的改进上。
即便显得有些枯燥,大家还是可以在这里找到许多不同的潜在目标,且内核的这些部分都是相对较小且彼此独立的。
针对驱动程序的任何初步试验都仅停留在体系结构层面,而许多驱动程序仅与特定的几个目标体系结构有关,所以 Rust 支持代码的重要性也没有那么高。
Kroah-Hartman 对这一观点表示同意,因为驱动程序只是内核源代码依赖树上最末端的叶子。此外 Linus Torvalds 提到了内核与用户空间项目的不同:
许多人抱怨在用户空间这块使用 Rust 并不是一个好兆头,但这里其实和内核项目有很大的不同。
由于我们使用了许多非常奇怪的头文件,其在某些方面确实更加困难,你也可以将之称作 C 语言的一个边界。
但在其它方面,Rust 开发或许可以做到更加轻松。这点主要得益于内核的相对独立,所以并不需要依赖于其它项目的最终二进制文件。
在 Kroah-Hartman 看来,一切都归结为“如何将用 C 语言编写的内核核心架构和生存期规则之间的交互”映射到 Rust 结构和生存期规则中,以便基于 Rust 语言开发的驱动程序能够被顺利推行。
至于 Rust 语言在 Linux 平台上的后续发展,还请耐心留意未来几年里的更多项目。
转自 https://www.cnbeta.com/articles/tech/1106805.htm