#Rust
lwn.net · ⭐️ 8/10 · 2026-10-31
在 Kangrejos 2026 的演讲中,Carlos Llamas 宣布删除 Android Binder 驱动的 C 实现;会后移除补丁已并入 Linux 7.4 合并窗口,因此从 7.4 起 Binder 只保留 Rust 实现。该迁移历时五年多,Rust 版沿用相同算法,但重点处理尾延迟和锁竞争,并通过将部分操作移出锁、改用自旋锁解决优先级反转问题。旧稳定内核仍保留 C Binder 并继续接收安全修复,7.3 被指定为 2026 年的长期支持版本。由于部分厂商钩子无法由 Rust 版完全复现,许多 Android 厂商需先更新代码才能迁移。
blog.cloudflare.com · ⭐️ 8/10 · 2026-10-21
Cloudflare 博客的一篇文章介绍了 tsrs:一个把 TypeScript 编译移植到 Rust 的项目。据评论者引用的移植文档,它用永不释放的 arena 安放长生命周期对象,以在没有 GC 的 Rust 中模拟 GC;另一名评论者称,项目动机之一是获得能在 WASM-only 沙箱中运行的编译器,避免 tsc 的 Go 版本附带完整 Go 运行时。该评论者还称 Rust 版本快于参考的 tsc/Go 实现。现有材料没有说明 tsrs 的发布状态、与 tsc 的兼容范围或可复现的基准数据,因此这些速度说法仍需核实。
yoyo-code.com · ⭐️ 7/10 · 2026-10-21
Rust 编译器贡献者 panstromek 撰文展望 2026 年 Rust 编译器的工作重点,帖文在 Hacker News 引发讨论。由于原文正文未随讨论一并提供,具体版本号、落地时间表与已完成状态均无法核实;从讨论内容看,涉及的核心议题是 trait 求解器(solver)、Polonius 借用检查、长期停滞的 specialization,以及 target 目录体积。评论者引用了文中一句评价,称这项工作“解决了编译器开发者多年来梦寐以求的一大块技术债”,但该引文本身没有点明具体对应哪个组件。
lwn.net · ⭐️ 7/10 · 2026-10-20
在 Kangrejos 2026 上,Rust 编译器贡献者 Jana Dönszelmann 介绍了 nightly 中已可用的“外部可实现项”(externally implementable items,用 \\[eii\] 标注):一个 crate 可声明由其他 crate 实现的函数,作为 C 弱符号链接的受检查替代;编译器保证至多一个定义,并在既无外部定义又无回退实现时报错。该机制目前依靠弱链接实现,以便各 crate 并行生成代码,但受 Windows 弱链接限制,仅支持类 Unix 平台。她还演示了基于该机制的 -Coverflow-checks=report 原型和 report\integer\overflow\(\):发生整数溢出时调用可返回的处理函数,默认仍转入 panic,使用者需启用该编译选项并自行定义处理函数。她认为这套溢出检查改动不大,但尚未正式提议纳入语言,而是先征求内核开发者意见,尤其是 Rust for Linux 当前溢出即 panic 与 Linus Torvalds 认为意外溢出不应使整个内核崩溃之间的分歧。
lwn.net · ⭐️ 7/10 · 2026-10-17
在 Kangrejos 2026 大会上,Gary Guo 提出了一种基于内核 pin\init crate 的方法,使自引用数据结构无需 unsafe 代码即可实现;这是会议演讲中展示的设计方案,并非已合入内核的改动。该方案借助 Rust 的子类型、well-formedness 规则与仅限于生命周期参数的高阶多态(如 &dyn for<&\x27;a> Fn\(&&\x27;a u32\))来处理过去难以满足的生命周期约束。按演讲所述,它有望移除 Nova GPU 驱动中大部分与生命周期相关的 unsafe 代码,并可能逐步推广到其他 Rust-for-Linux 组件。原文指出问题的根源在于设备资源(例如设备内存)只在设备绑定期间有效:原有的 Devres 类型内部使用 Revocable 指针,强制每次访问都做可失败检查,给驱动代码引入了大量冗余的失败路径。
github.com · ⭐️ 7/10 · 2026-10-14
一个 Rust 编译器 GitHub issue(\164250)报告借用检查器存在已持续约 11 年的不健全性缺陷:编译器接受了一段按 Rust 生命周期规则本应被拒绝的代码。该问题目前处于被报告和讨论的阶段,尚无证据表明官方已发布修复或已确认受影响的 crate 清单。评论者认为这不是类型系统本身的问题,修复方向是让编译器按既有生命周期规则拒绝该代码,因此相对直接,但该缺陷是否影响真实代码仍待确认。
lwn.net · ⭐️ 7/10 · 2026-10-14
在 Kangrejos 2026 上,Andreas Hindborg 介绍了 Rust for Linux 的一个补丁系列(邮件列表中的 v21 版本,2026 年 9 月发布),它新增 Ownable trait 和 Owned 智能指针,让 Rust 代码可以持有由 C 代码分配的对象,并在使用完毕后负责清理(但不一定释放内存)。Owned 像 KBox 一样提供对所指值的唯一访问,但生命期结束时调用 release\(\) 而非 free,因此只能指向实现了 Ownable 的 C 类型,例如块层中可复用的 bio 请求结构。该系列尚未合并,Hindborg 希望在数月邮件列表讨论后达成共识;主要争议在于 Owned 与 ARef 之间的转换可能破坏健全性,他提议把 AlwaysRefCounted 拆成两个 trait,并禁止同时实现 Ownable 的类型将内建引用升级为 ARef。讨论还涉及 page 结构是否可实现 Ownable,以及 IOMMU 页表、Rust binder 驱动和 USB 驱动等潜在使用场景。
lwn.net · ⭐️ 7/10 · 2026-10-14
用 Rust 编写操作系统内核的 Asterinas 项目发布了 0.19.0 版本。此次更新包含一个能够运行 X.org 的新图形子系统、“最小但可用”的 64 位 Arm 支持,以及更好的虚拟化支持。LWN 曾在 2025 年报道过该项目,本次发布信息来自 LWN 的报道与项目公告。