
昨日合并至主线的 Linux 7.0 内核中,包含了更多与 Rust 相关的更新,旨在为即将发布的 Rust 新版本做准备,同时提升在启用 Rust 代码时内核构建的可重现性(build reproducibility)。
Miguel Ojeda 提交了最新的 Rust 工具链与基础设施更新,这些更改已由 Linus Torvalds 合并。此次更新包括为即将发布的 Rust 1.95 做准备,以改善构建的可重现性;此外,还有一项面向 Rust 1.96 的前瞻性变更。同时还有其他一些修复和改动:
工具链与基础设施:
重新映射路径,避免从即将发布的 Rust 1.95.0 开始使用绝对路径。这有助于提高构建的可重现性,防止泄露确切的构建路径,并避免同一路径以两种形式出现。
此次方法还特别避免了对调试信息进行重映射,以防破坏依赖这些路径访问源文件的工具——此前曾尝试重映射但因导致问题而不得不回退。允许在即将发布的 Rust 1.96.0 中启用
'unused_features'lint(代码检查规则)。尽管该 lint 出发点良好,但我们从中获益有限。直接将依赖信息输出到
$(depfile),不再生成临时的.d文件(这是一种过时的做法)。
kernelcrate(内核模块):
str模块:在未启用CONFIG_BLOCK配置时修复警告,方法是将NullTerminatedFormatter设为公开(public)。
cpufreq模块:抑制 Clippy 报告的误报警告。
pin-initcrate:
移除
#[disable_initialized_field_access]属性,因其存在逻辑不安全(unsound)问题。这意味着暂时移除了对字段未对齐结构体(通过repr(packed)属性定义)的支持。同时记录了一个关键事实:字段访问器(field accessors)在保证类型安全方面具有重要作用(即它们是确保类型安全所必需的)。
将“被遮蔽的返回令牌”(shadowed return token)替换为需通过
unsafe创建的令牌,以确保在面对上游 Rust 即将引入的 Type Alias Impl Trait (TAIT) 和新一代 trait 求解器时,代码仍能保持类型安全(remain sound)。
上述代码已合并,将随今日稍后发布的 Linux 7.0-rc4 一并推出。
转自 Linux 7.0 Lands Improvements To Deal With Upcoming Rust Changes, Build Reproducibility – Phoronix
Linuxeden开源社区