哇,工作 对 Linux 的 Rust 驱动程序支持正在进行中 并且已经开始了相当持续的发展,因为它没有太多可做的 版本 8 发布 补丁,就是这样 现在我们有版本 9。
正是在已经提出的第九个版本中,值得一提的是 是前几天出版的第八版的简化版. 该套件的特点是显着减小了大小,并且只保留了最必要的最小值,足以构建用 Rust 编写的内核模块。
假设最小补丁 将使在主内核中采用 Rust 支持变得更容易。 在提供最低限度的支持后,计划逐步增加现有功能,从 Rust-for-Linux 分支移植其他更改。
这是一系列补丁 (v9),旨在为 Linux 内核添加对 Rust 作为第二语言的支持……
像往常一样,特别感谢 ISRG(互联网安全研究组) 和谷歌在这项工作中的财政支持。
与版本 8 相比,补丁的大小已从 40 行减少到 000 行代码。 例如,版本 3 仅包含来自“kernel”box 包的 500% 的代码(60 行)和 32% 的 alloc 库,允许您使用 Vec 类型创建最简单的内核模块。 并使用“pr_info!”宏在内核日志中显示信息。
此外, 关于 Rust 和 Linux,值得一提的是,最近 Rust 项目开发者警告 给用户关于 对 Linux 环境的需求即将增加 在编译器、Cargo 包管理器和 libstd 标准库中。
从 Rust 1.64 开始,计划于 22 年 2022 月 XNUMX 日发布,Glibc 的最低要求将从 2.11 版本提高到 2.17,Linux 内核从 2.6.32 提高到 3.2. 这些限制也适用于使用 libstd 构建的 Rust 二进制文件。
RHEL 7、SLES 12-SP5、Debian 8 和 Ubuntu 14.04 发行版满足新要求。 将停止支持 RHEL 6、SLES 11-SP4、Debian 7 和 Ubuntu 12.04。 弃用对旧版 Linux 系统的支持的原因包括继续支持旧版环境的资源有限。
为什么要提高要求?
我们希望 Rust 和 Rust 生成的二进制文件尽可能广泛地使用。 同时,Rust 项目只有有限的资源来保持与旧环境的兼容性。工具链要求有两部分:在主机系统上运行 Rust 编译器的最低要求,以及交叉编译二进制文件的最低要求。
主机工具链的最低要求会影响我们的构建系统。 Rust CI 为几十个不同的目标生成二进制工件。 构建支持旧版本 glibc 的二进制文件需要使用旧 glibc 构建操作系统(用于本地构建)或使用带有旧版本 glibc 的构建根(用于交叉构建)。
特别是, 兼容较旧的 Glibcs 需要使用较旧的工具 在持续集成系统中验证时, 与对 LLVM 和交叉编译实用程序的版本控制要求增加相比。 内核版本要求的增加是由于 libstd 能够使用新的系统调用而无需维护层以确保与旧内核的兼容性。
建议在具有较旧 Linux 内核的环境中使用 Rust 创建的可执行文件的用户升级他们的系统,继续使用旧版本的编译器,或维护他们自己的分层 libstd fork 以保持兼容性。
最后,如果你有兴趣能够了解更多,可以查阅详情 以下链接。