【Rust日报】2026-11-08 uutils - Ubuntu 26.10 完成用 Rust 实现替换 GNU coreutils

【Rust日报】2026-11-08 uutils - Ubuntu 26.10 完成用 Rust 实现替换 GNU coreutils

💡 原文中文,约4500字,阅读约需11分钟。
📝

内容提要

Ubuntu 26.10 已完成用 Rust 版 uutils 替换 GNU coreutils,此前暂缓的 cp、mv、rm 也已切换。两轮安全审计发现 113 个问题,修复后移除了 override 列表,并承诺回移植到 26.04 LTS。Rust 类型系统存在已持续 11 年的不健全性,可让短生命周期引用被当作 'static 保存,需恶意 Drop 实现才能利用。此外还有关于 safe Rust 热路径检查、arena 性能及移植潮的讨论,GSoC 2026 的 13 个 Rust 课题全部通过。

🔎

延伸解读

安全审计揭示的不仅是内存安全

两轮审计共发现113个问题,其中不少是TOCTOU缺陷。这说明即使Rust保证了内存安全,逻辑层面的安全漏洞依然存在。uutils作为统一二进制,一处修复可覆盖多个工具,但这也意味着缺陷可能影响面更广。Canonical承认无法证明完全兼容,只能承诺快速修复,这提醒读者:系统基础组件的迁移需要持续的安全投入,而非一劳永逸。

类型系统不健全性的现实风险

该问题需要恶意Drop实现才能触发,因此无意中造成内存不安全的可能性较低。但存在11年未被发现,说明类型系统仍有盲区。团队正推进next-generation trait solver等长期项目,将修复已知不健全性作为优先事项。对普通开发者而言,这更多是提醒:safe Rust并非绝对安全,依赖库的恶意代码仍可能利用此类漏洞。

性能讨论中的常见误区

有开发者看到unsafe Rust比safe Rust快4倍的对比,担心编译器插入的检查拖慢热路径。但这类对比往往来自特定场景,不能推广为日常情况。关于arena与RAII的讨论也显示,Rust默认不使用arena,但并非不能使用。性能选择应基于实际测量,而非假设编译器保守或分配方式固定。

GSoC课题反映的社区投入方向

13个课题全部通过,但数量少于2025年,原因是导师精力有限。课题涵盖GPU offload、链接器、调试器、libc迁移等,显示Rust项目在工具链和底层基础设施上的持续投入。其中安全GPU offload前端实现了类型检查和泛型kernel支持,并避免用raw pointer绕过引用规则,体现了在扩展功能的同时保持安全抽象的取向。

❓

Q&A

Ubuntu 26.10 用 Rust 替换 GNU coreutils 的进展如何?

Ubuntu 26.10 已完成用 Rust 版 uutils 替换 GNU coreutils,此前在 26.04 LTS 中暂缓的 cp、mv 和 rm 也已切换。Canonical 承诺将新版本回移植到 26.04 LTS,并允许用户切回 GNU 实现。

uutils 的安全审计发现了哪些问题?

针对 rust-coreutils 的外部审计分两轮进行,共发现 113 个问题,其中不少是 TOCTOU(检查与使用时间差)问题。修复后移除了 override 列表,并承诺回移植到 26.04 LTS。

Rust 类型系统存在 11 年的不健全性是什么?

该不健全性允许将短生命周期引用当作 'static 保存,需要恶意 Drop 实现才能利用。issue 164250 给出了可编译通过的示例,在 AddressSanitizer 下会崩溃。团队正通过 next-generation trait solver 等计划修复。

safe Rust 在热路径上会因为编译器插入检查而变慢吗?

文章提到有开发者询问此问题,并看到 unsafe Rust 比 safe Rust 快约 4 倍的对比,但未给出明确结论。

为什么近期很多项目都改用 Rust?

文章仅记录 Reddit 帖子观察到电子游戏、Artcraft、Minecraft、Discord 等项目在移植到 Rust,并提问为何选择 Rust,但没有给出原因或结论。

Google Summer of Code 2026 中 Rust 项目的通过情况如何?

Rust 项目 2026 年有 13 个 GSoC 课题,全部通过最终评估。课题数量少于 2025 年是因为导师精力有限。Rust 项目计划继续参加 GSoC 和 Outreachy 等导师计划。

GSoC 2026 中安全 GPU offload 前端课题做了什么?

该课题实现了类型检查确保 kernel 启动安全、支持泛型 kernel、可指定 GPU、新增两个宏减少样板代码,并实现了 sound 的抽象来安全处理可变引用,还将 RajaPerf 性能套件从 C++ 移植到 Rust。

🏷️

标签

➡️

继续阅读