播客:Ubuntu 迁移到 Rust:默认提供 uutils 和 sudo-rs 的经验教训
这期播客采访了 Canonical 的 Ubuntu 工程副总裁 Jon Seager,探讨了 Ubuntu 这一拥有 20 年历史的操作系统如何引入 Rust 进行底层现代化改造。
-
重构核心基石 ("Oxidizing" Foundations)
- 核心项目:Canonical 正在推进用 Rust 重写 Linux 的关键基础设施,重点提及了
sudo-rs(sudo 的 Rust 实现)和uutils(GNU coreutils 的 Rust 实现)。 - 目标:旨在替换已有数十年历史、存在“根基不稳”(shaky underpinnings)的 C 语言遗留代码,为 Ubuntu 的下一个 20 年奠定坚实基础。
- 核心项目:Canonical 正在推进用 Rust 重写 Linux 的关键基础设施,重点提及了
-
安全与可靠性优先
- 解决痛点:通过引入内存安全语言(Rust),消除长期困扰底层系统的内存安全隐患,提升系统的整体健壮性。
- 现代化愿景:Jon Seager 强调这不仅是语言替换,更是对通信、自动化和流程的全面现代化,确保关键组件在未来长期可用。
-
规模化落地的挑战与策略
- 风险管理:面对千万级日活用户(Desktop 用户超 1200 万),团队采取极度谨慎的策略,确保在替换底层架构时保持向后兼容,避免“破坏现有互联网”。
- 渐进式替代:通过逐步引入(如
ntpd-rs可能进入 Ubuntu 26.04),在不影响用户体验的前提下完成技术栈的平滑迁移。
-
广泛的 Rust 生态布局
- 更多组件:除了核心工具,节目还提到了
LXD、dqlite、AppArmor以及未来可能的 NVIDIA GPU Rust 驱动(Nova)等项目。 - 社区协作:Canonical 积极与 Rust 社区及相关基金会(如 Trifecta Tech Foundation)合作,共同推动开源生态的安全进化。
- 更多组件:除了核心工具,节目还提到了
收听:https://corrode.dev/podcast/s05e05-canonical/
讨论:https://www.reddit.com/r/rust/comments/1p86sp5/ubuntu_migrating_to_rust_uutils_and_sudors/
提议:不 poisoned 的互斥锁?
- 背景提案:社区正在讨论在标准库中引入“非中毒”的锁(如 Mutex、RwLock),不再追踪线程 Panic 导致的数据污染状态,甚至考虑在 Rust 2027 版本中将其设为默认行为。
- 支持理由:
- 易用性提升:现有锁在 Panic 后会返回错误,导致开发者必须频繁调用
.unwrap()。非中毒锁可简化代码,去除这一样板操作。 - 性能优化:由于无需维护中毒状态,新锁的体积减半(Half the size),且运行时开销更低。
- 场景适用性:多数应用在 Panic 发生时并不尝试恢复,中毒机制被认为对大部分场景是“过度设计”。
- 易用性提升:现有锁在 Panic 后会返回错误,导致开发者必须频繁调用
- 反对与担忧:
- 安全性隐患:中毒机制的核心是防止访问因 Panic 中断而残留的“不一致数据”。移除该机制可能导致程序在数据损坏的状态下继续运行,产生难以追踪的 Bug。
- 掩盖问题:强制
.unwrap()虽然繁琐,但显式地提醒了开发者注意潜在的 Panic 风险。
- 替代观点:部分开发者建议优化现有 API(例如让
lock()直接 Panic,仅try_lock()返回错误),在保留安全保障的同时改善开发体验,而非完全引入新类型。
Rust issue:https://github.com/rust-lang/rust/issues/149359
Reddit:https://www.reddit.com/r/rust/comments/1p866uk/nonpoisoning_mutexes/
budget_tracker_tui:预算追踪器
一款可在终端上提供不同视角来追踪收入和支出的工具,使用 Rust 和 Ratatui 构建。
每个视图都有自己的帮助菜单 ——每个部分现在都有自己的帮助屏幕,使应用程序更容易学习和导航。
- 更多自定义选项 ——根据您的工作流程微调界面和行为。
- 改进的图表视图 ——更新后的可视化效果现在可以更清晰地展现消费模式。
- 更佳的交易创建流程 ——包括模糊搜索类别和子类别等提升用户体验的功能。
- 正确的十进制支持 ——切换到精确的十进制类型,以避免财务数据中的浮点问题。
- 轻量级更新检查器 – 无需添加任何臃肿组件,即可在新版本发布时收到通知。
这款应用允许您自定义数据文件路径,因此您可以将预算文件存储在任何位置,包括云端文件夹,从而轻松实现跨设备同步。文件格式简洁易用,方便您在需要时使用电子表格进行数据分析。我还计划添加更多高级存储选项,以支持更广泛的使用场景。
仓库:https://github.com/Feromond/budget_tracker_tui
fast_radix_trie:快速、低内存占用的 trie 树实现
它基于 patricia_tree crate 的深度修改版本,但速度显著提升。文中包含一些基准测试结果,可与其他 trie 树 crate 进行比较。
仓库:https://www.reddit.com/r/rust/comments/1p8c4jy/fast_radix_trie/
视频:Place Capability Graphs - Rust 所有权和借用检查的通用模型
本次 Rust 形式化方法会议由 Zack Grannan 主讲,重点介绍“位置能力图”(Place Capability Graphs),内容包括:
- 构建精确模型:提出 PCG 这一新型模型,直接利用 Rust 编译器的分析数据,旨在精确捕捉类型检查中的借用与可变性保证。
- 突破现有局限:解决了过往模型在处理复杂借用、复合类型及循环时的精度不足问题,实测可支持 97% 的主流 Rust 代码。
- 夯实验证基石:填补了理想化模型与真实代码间的鸿沟,为程序验证和静态分析工具提供了通用且贴合实际的底层支持。
基于 OOPSLA'25 论文《Place Capability Graphs: A General-Purpose Model of Rust's Ownership and Borrowing Guarantees》
介绍:https://rust-formal-methods.github.io/meetings/pcg/
观看:https://www.youtube.com/watch?v=JcQX8raHWQE
讨论:我不喜欢自动 Deref
见 https://www.reddit.com/r/rust/comments/1p84ma7/im_gonna_be_honest_with_you_guys_i_dont_like/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论