< 返回版块

苦瓜小仔 发表于 2025-11-28 18:49

Tags:日报

播客: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 年奠定坚实基础。
  • 安全与可靠性优先

    • 解决痛点:通过引入内存安全语言(Rust),消除长期困扰底层系统的内存安全隐患,提升系统的整体健壮性。
    • 现代化愿景:Jon Seager 强调这不仅是语言替换,更是对通信、自动化和流程的全面现代化,确保关键组件在未来长期可用。
  • 规模化落地的挑战与策略

    • 风险管理:面对千万级日活用户(Desktop 用户超 1200 万),团队采取极度谨慎的策略,确保在替换底层架构时保持向后兼容,避免“破坏现有互联网”。
    • 渐进式替代:通过逐步引入(如 ntpd-rs 可能进入 Ubuntu 26.04),在不影响用户体验的前提下完成技术栈的平滑迁移。
  • 广泛的 Rust 生态布局

    • 更多组件:除了核心工具,节目还提到了 LXDdqliteAppArmor 以及未来可能的 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 中断而残留的“不一致数据”。移除该机制可能导致程序在数据损坏的状态下继续运行,产生难以追踪的 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 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页