今年 XNUMX 月在 linux-next 分支上 当时适用于 Linux 内核 5.13, 包含一组初始组件来开发设备驱动程序 语言 Rust,现在请求包含第二版 为 Linux 内核添加 Rust 支持的补丁。
向 Linux 开发人员发送请求的人是 Miguel Ojeda,Rust-for-Linux 项目的作者,我们前几天也谈到了他,因为他被聘请负责“Prossimo”项目,基本上专注于协调将关键软件基础设施转移到安全代码以使用 Rust 保护 Linux 内核内存的工作(如果您想了解有关该项目的更多信息,可以咨询 在下面的链接发布。)
相关文章:
Prossimo,一个使用 Rust 保护 Linux 内核内存的 ISRG 项目
Miguel Ojeda 发送的请求是第二个更新版本 用于以 Rust 语言开发设备驱动程序的组件,其中删除了在讨论补丁的第一个版本期间所做的评论,并且 Linus Torvalds 已经加入了讨论并建议更改逻辑以处理一些位操作。
里面的好处 提到的是 Rust 保证了安全的内存管理 在编译时通过检查引用、跟踪对象所有权和对象生命周期,以及在运行时评估内存访问的正确性。
Rust 还提供 整数溢出保护, 需要在使用前强制初始化变量值,更好地处理标准库中的错误,默认采用引用和不可变变量的概念,并提供强静态写入,最大限度地减少逻辑错误。
在突出的变化中 在这个新版本的补丁中提到:
- 内存分配代码可防止在发生内存不足等错误时产生恐慌的可能性。
- 已经包括了 Rust alloc 库的一个变体,其中的代码已经过重新设计以处理锁,但最终目标是将内核的所有必要功能引入 alloc 的主版本(更改已经准备好并转移到标准 Rust 库中)。
- 现在可以使用测试版和稳定版,而不是每晚构建 rustc 编译器来编译支持 Rust 的内核。 目前使用 rustc 1.54-beta1 作为参考编译器,但月底 1.54 发布后,将支持作为参考编译器。
- 添加了对使用标准 Rust 属性“# [test]”编写测试的支持,以及使用 doctests 将文档中的示例代码用作测试的能力。
- 除了先前支持的 x32_86 和 ARM64 之外,还添加了对 ARM64 和 RISCV 架构的支持。
改进的 GCC 实现 Rust(Rust 的 GCC 前端)和 rustc_codegen_gcc(GCC 的 rustc 后端),现在通过了所有基准测试。 - 一种 新的抽象层次 用于 Rust 程序使用 C 编写的内核机制,例如树、引用计数对象、创建文件描述符、任务、文件和 I/O 向量。
- 驱动程序开发组件改进了对“file_operations”模块、“module!”宏、宏日志记录和基本驱动程序(探测和删除)的支持。
- Binder 支持传递文件描述符和 LSM 链接。
- 为 Raspberry Pi 板的硬件随机数生成器提出了一个更实用的 Rust 驱动程序示例 bcm2835-rng。
最后,如果您有兴趣了解更多信息,可以查阅详细信息。 在下面的链接中。