米格尔·奥赫达,Rust-for-Linux 项目的作者, Teme最近公布了第四个提案 设备驱动组件 供 Linux 内核开发人员考虑的 Rust。
Rust 支持被认为是实验性的, 但它已经被同意包含在 linux-next 分支中,并且已经足够成熟,可以开始在内核子系统之上处理抽象层,以及编写驱动程序和模块。 该开发由 Google 和 ISRG(互联网安全研究组)资助,ISRG 是 Let's Encrypt 项目的创始人,促进 HTTPS 和技术发展以提高互联网安全性。
对于那些仍然不知道提议的更改的人,他们应该知道他们使之成为可能 使用 Rust 作为第二语言来开发控制器和模块 的内核。 Rust 支持作为默认情况下未启用的选项提供,并且不会导致 Rust 包含在内核所需的构建依赖项中。
使用 Rust 开发驱动程序 将允许您以最少的努力创建更好、更安全的驱动程序,没有像释放内存区域后访问它、取消引用空指针和缓冲区溢出等问题。
Rust 在编译时通过检查引用、跟踪对象所有权和对象生存期(范围)以及在代码执行期间评估内存访问的正确性来提供内存安全。
Rust 还提供整数溢出保护,需要在使用前初始化变量,更好地处理标准库中的错误,默认强制执行不可变变量和引用的概念,并提供强静态类型以最大限度地减少逻辑错误。.
第四期有哪些变化?
在所呈现的这个新版本的补丁中,提到在讨论第一、第二和第三版补丁时所做的评论继续被删除。
我们会不断更新,直到我们不依赖任何不稳定的功能;
此时我们可能想要开始声明 Rust 的最小版本
支持,例如,对于 GCC 和 Clang。同样,我们也迁移到了 2021 版的 Rust 语言。
至于在这个新版本中所做的其他更改,公告中提到了以下内容:
- 过渡到使用稳定的 Rust 1.58.0 作为参考编译器。
- 项目所需的更改,尚未包含在主要 Rust 工具包中,包括“-Zsymbol-mangling-version=v0”标志(预计在 Rust 1.59.0 中)和“maybe_uninit_extra”模式(预计在 Rust 1.60.0 中) .
- 添加了对 Rust 工具的可用性及其适用性的自动检查,并且还扩展了在系统上测试 Rust 支持的能力。
- 提出了新的抽象,以便能够从 Rust 代码访问设备标识符表(“IdArray”和“IdTable”)。
- 添加了调用与计时器(时钟帧)相关的函数的层。
- 平台控制器现在通过 trait 实现来定义。
- 添加了一个新宏以简化平台驱动程序注册,并提出了一个新的通用驱动程序模板。
- 为“dev_*”结构添加了新的宏。
- 为 IoMem 类型添加了新方法“{read,write}*_relaxed” .
- 移除 FileOpener 属性以简化文件操作。
- 在控制器注册期间传递的参数数量中添加了“ThisModule”参数。
- 提出了一个用 Rust 语言创建内核模块的典型模板。
最后,如果您有兴趣能够了解更多关于这个新版本的信息,可以咨询详情 在下面的链接中。