Miguel Ojeda,Rust-for-项目的作者Linux建议内核开发人员考虑 Linux 这是用于开发 Rust 设备驱动程序的组件的第四个版本。Rust 支持目前仍处于实验阶段,但已获准纳入 linux-next 分支,并且已经足够成熟,可以开始着手创建内核子系统上的抽象层,以及编写驱动程序和模块。该开发项目由 Google 和 ISRG(互联网安全研究小组)资助,ISRG 是 Let's Encrypt 项目的发起者,该项目致力于推广 HTTPS 和开发用于提升互联网安全性的技术。
回想一下,提议的更改使得可以使用 Rust 作为开发驱动程序和内核模块的第二语言。 Rust 支持作为一个选项提供,默认情况下不启用,并且不会导致 Rust 被包含为内核所需的构建依赖项。 使用 Rust 进行驱动程序开发将允许您以最小的努力创建更安全、更好的驱动程序,并且不会出现释放后内存访问、空指针取消引用和缓冲区溢出等问题。
Rust 在编译时通过引用检查、跟踪对象所有权和对象生命周期(作用域)以及在代码执行期间评估内存访问的正确性来提供内存安全处理。 Rust 还提供防止整数溢出的保护,要求在使用前强制初始化变量值,更好地处理标准库中的错误,默认应用不可变引用和变量的概念,提供强静态类型以最小化逻辑错误。
新补丁版本继续解决在第一、第二和第三个补丁版本讨论中提出的问题。新版本包含以下内容:
- 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”)的新抽象。
- 添加了用于访问与定时器(时钟框架)相关的函数的层。
- 平台驱动程序现在通过特性实现来定义。
- 新增了一个宏来简化平台驱动程序的注册,并提出了一个新的通用驱动程序模板。
- 为“dev_*”结构添加了宏。
- 为 IoMem 类型添加了“{read,write}*_relaxed”方法。
- 移除了 FileOpener 属性,以简化文件操作。
- “ThisModule”参数已添加到注册驱动程序时传递的参数中。
- 本文提出了一种用于创建 Rust 语言内核模块的标准模板。
来源: opennet.ru
