为什么Linux内核不使用rust?

为什么Linux内核不使用rust?

我听说 Linux 内核使用 Rust。我对这种编程语言了解不多,只是知道它有可能比 C 运行得更快。

据网站称,Rust 比 C 更安全,因为它的编译过程会检测错误并施加一些限制。但是,如果编译的代码不遵循这些准则。你可以在不安全模式下编译 Rust,它或多或少是 C 语言,但不是 C 语言。

然而,当我查找 Linux 是否使用 Rust 时,网站上告诉我 C 使用 Rust。他们在撒谎,因为我在 GitHub 上检查了 Linux 内核,在存储库或项目中有一个地方说明了存储库或项目中使用的代码百分比,但它没有提到 Rust。

根据我得到的有关 Rust 和 C 的信息,Rust 似乎要好得多,因为它在某些情况下比 C 更安全并且运行得更快。如果是这样,那么为什么 Rust 不使用 Linux 内核呢?

如果我对 Rust 和 C 的说法有误,请纠正我。我以前从未编写过代码,但我喜欢比较语言来看看哪一种是最好的。另外,如果 Linux 内核不使用 Rust 的唯一原因是因为所有 Linux 开发人员都必须学习一门新语言,否则就会被解雇,那就这么说吧。

答案1

你只需要等待几周:经过几次延迟后,6.1 版内核应包含 Rust 代码。你已经可以看到了linux-next(自 5.19 准备以来就已可用)。

至于为什么内核一般不使用 Rust,有很多原因,首先是惯性:目前内核包含超过 2200 万行实际 C 代码(不包括注释),并且改变了相当大的一部分使用另一种语言必然需要很长时间。还有许多领域 Rust 不太适用于内核,或者需要用 Rust 重写大量代码才能真正发挥作用——Rust 的主要优点之一是它的逃逸分析,而这并不影响它的性能。对于跨越语言边界的代码来说效果不佳(如果有的话)。

一段时间以来一直在追求的一种方法是为设备驱动程序使用 Rust。看使用 Rust 进行内核开发进行介绍,以及边境的锈类动物了解内核中 Rust 状态的最新报道。

您可能还会发现Paul E. McKenney 的系列“你想腐蚀 Linux 内核吗?”有趣的。

相关内容