Linux 上 Rust 驱动程序支持的第五版补丁已经发布

最近 米格尔·奥赫达, Rust-for-Linux 项目的作者 发布第五个提案 Linux 内核开发人员开发组件的首选 Rust 设备驱动程序 供他们考虑。

对于已经发布了几个月的这一系列提案仍然不了解的人,您应该知道其背后的想法是由于目前对 Rust 的支持被认为是实验性的,但是 已经包含在 linux-next 分支中,并且已经足够成熟,可以开始创建抽象层了 关于内核子系统,以及编写驱动程序和模块。

目前, Miguel Ojeda 的开发委员会由 Google 和 ISRG 提供资金 (互联网安全研究组),它是 Let's Encrypt 项目的创始人,推动 HTTPS 和技术发展以提高互联网安全性。

值得一提的是,拟议的更改 它们使使用 Rust 作为开发驱动程序和内核模块的第二语言成为可能。 Rust 支持作为默认情况下未启用的选项提供,并且不会导致 Rust 包含在内核所需的构建依赖项中。

使用 Rust 开发驱动程序将使您能够以最小的努力创建更好、更安全的驱动程序,而不会出现诸如释放内存区域后访问、取消引用空指针和缓冲区溢出等问题。

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

第五项提案的主要创新点

在新版本的补丁中, 继续删除评论 在讨论第一、二、三、四版补丁时制作的。

在已经进行的部分更改和改进中,我们可以发现 组件验证 为了兼容性 with Rust 已添加到持续集成系统中 基于 Intel 兼容的 0DAY/LKP bot 和测试报告已经开始发布。

除此之外,要强调的是 正在准备集成 Rust 支持 自动化测试系统 内核CI, 加上基于 GitHub CI 的测试被切换到使用容器。

还强调了 添加了定义附加参数的能力 注册设备时,以及 is_rust_module.sh 脚本已重新设计 并且添加了对基于“CONFIG_CONSTRUCTORS”实现的静态同步原语(全局共享变量)的支持。

其他突出的变化 在这个新的控制器提案中:

  • Rust Core 模块无需定义属性:“#![no_std]”和“#![feature(...)]”。
  • 添加了对单个构建目标(.o、.s、.ll 和 .i)的支持。
  • 代码指南现在定义了用于分隔注释(“//”)和记录代码(“///”)的规则。
  • 简化锁管理:Guard 和 GuardMut 合并为一种参数化类型。
  • 添加了“RwSemaphore”抽象,它充当 C rw_semaphore 结构的包装器。
  • 为了使用 mmap,添加了一个新的 mm 模块和一个 VMA 抽象(绑定在 vm_area_struct 结构上)。
  • PL061 GPIO 控制器已更改为使用“dev_*!”宏。
  • 常规代码清理。

最后 如果您有兴趣了解更多有关它的信息 关于这个新提案,您可以查阅详情 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。