Linux 内核第四版补丁,支持 Rust 语言

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

回想一下,提议的更改使得可以使用 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 中) .XNUMX) 已注明。
  • 添加了对合适 Rust 工具可用性的自动检查,并扩展了测试系统中 Rust 支持的能力。
  • 已提出新的抽象用于从 Rust 代码访问设备标识符表(“IdArray”和“IdTable”)。
  • 添加了用于访问定时器相关功能(时钟框架)的层。
  • 平台驱动程序现在通过特征实现来定义。
  • 添加了一个新的宏来简化平台驱动程序的注册,并提出了一个新的通用驱动程序模板。
  • 添加了“dev_*”结构的宏。
  • 为 IoMem 类型添加了“{read,write}*_relaxed”方法。
  • 删除了 FileOpener 属性以简化文件操作。
  • “ThisModule”参数已添加到注册驱动程序时传递的参数中。
  • 提出了一种用 Rust 语言创建内核模块的标准模板。

来源: opennet.ru

添加评论