Linux 内核的新版本补丁支持 Rust 语言

Rust-for-Linux 项目的作者 Miguel Ojeda 提议发布用于用 Rust 语言开发设备驱动程序的 v5 组件,供 Linux 内核开发人员考虑。 这是第六版补丁,考虑到第一版,发布时没有版本号。 Rust 支持被认为是实验性的,但已经包含在 linux-next 分支中,并且已经充分开发,可以开始在内核子系统上创建抽象层以及编写驱动程序和模块。 该开发由 Google 和 ISRG(互联网安全研究小组)资助,ISRG 是 Let's Encrypt 项目的创始人,致力于推动 HTTPS 以及提高互联网安全性的技术开发。

回想一下,提议的更改使得可以使用 Rust 作为开发驱动程序和内核模块的第二语言。 Rust 支持作为一个选项提供,默认情况下不启用,并且不会导致 Rust 被包含为内核所需的构建依赖项。 使用 Rust 进行驱动程序开发将允许您以最小的努力创建更安全、更好的驱动程序,并且不会出现释放后内存访问、空指针取消引用和缓冲区溢出等问题。

Rust 在编译时通过引用检查、跟踪对象所有权和对象生命周期(作用域)以及在代码执行期间评估内存访问的正确性来提供内存安全处理。 Rust 还提供防止整数溢出的保护,要求在使用前强制初始化变量值,更好地处理标准库中的错误,默认应用不可变引用和变量的概念,提供强静态类型以最小化逻辑错误。

新版本的补丁继续消除了在讨论第一版、第二版、第三版、第四版和第五版补丁时所做的评论。 在新版本中:

  • 该工具包已更新至发布 Rust 1.59.0。 alloc 库的一个变体也与新版本的 Rust 同步,消除了发生错误(例如内存不足)时可能产生的“恐慌”状态。 使用汇编器插入(“feature(global_asm)”)的能力已经稳定。
  • 添加了对在 Rust 中创建内核编译期间使用的主机程序的支持。
  • 它们不是提供预先生成的目标平台规范文件,而是根据内核配置动态生成。
  • 添加了 HAVE_RUST 内核参数以启用支持 Rust 的架构。
  • 建议在硬件伪随机数生成器的 Rust 代码中使用抽象。
  • 允许使用不带“Error::”前缀的错误代码(例如“return Err(EINVAL)”)以近似 C 中错误代码的处理。
  • 为自定义 C 字符串添加了“CString”类型。 Formatter 和 Buffer 类型已合并。
  • 添加了 Bool 和 LockInfo 类型。
  • 自旋锁的实现已被简化。

来源: opennet.ru

添加评论