Rust 对 Linux 内核的支持面临 Torvalds 的批评

Linus Torvalds 审查了实现使用 Rust 语言为 Linux 内核创建驱动程序的功能的补丁,并提出了一些批评意见。

最大的抱怨是由于在错误情况下可能出现panic(),例如,在内存不足的情况下,动态内存分配操作(包括内核内的操作)可能会失败。 Torvalds 表示,内核中的这种方法从根本上来说是不可接受的,如果不理解这一点,他可以完全否定任何尝试使用这种方法的代码。 另一方面,补丁开发者同意这个问题并认为它是可以解决的。

另一个问题是尝试使用浮点或 128 位类型,这对于 Linux 内核等环境来说是不可接受的。 事实证明,这是一个更严重的问题,因为目前核心 Rust 库是不可分割的,并且代表一个大块 - 无法仅请求某些功能,从而阻止使用一个或另一个有问题的功能。 解决该问题可能需要更改 rust 编译器和库,尽管目前团队还没有如何实现语言库模块化的策略。

此外,Torvalds 指出,提供的驱动程序示例毫无用处,并建议我们使用一些能够解决实际问题的驱动程序作为示例。

更新:Google 已宣布参与将 Rust 支持推入 Linux 内核的计划,并提供了引入 Rust 来解决内存错误引起的问题的技术原因。 Google 认为 Rust 已准备好加入 C 语言,成为开发 Linux 内核组件的语言。 本文还提供了在 Android 平台中使用 Rust 语言开发内核驱动程序的示例(Rust 被认为是 Android 开发的官方支持语言)。

值得注意的是,Google 已经为 Binder 进程间通信机制准备了用 Rust 编写的驱动程序的初始原型,这将允许对 C 和 Rust 中的 Binder 实现的性能和安全性进行详细比较。 就目前的形式而言,这项工作尚未完成,但对于 Binder 工作所需的几乎所有内核功能的基本抽象,已经准备好在 Rust 代码中使用这些抽象的层。

来源: opennet.ru

添加评论