Rust周刊2026W33 | RFC 3323 征集测试、polonius 上线 nightly、Bevy 六周年、fearless_simd v0.7、Box::take 稳定化
RFC 3323 密封 trait 征集测试,polonius 上线 nightly;Bevy 六周年落地 BSN 场景系统,fearless_simd v0.7 补齐 64 位整数 SIMD,Cargo 新增 min-publish-age 报告,Box::take 稳定化。
🦀 Rust 工具链更新
🔧 编译器
🆕 新功能
polonius 借用检查器的 alpha 版本已默认在 nightly 上启用,开发者可以提前体验新一代借用检查模型,为未来在 stable 上落地做好准备。
✅ 稳定化
c_variadic_naked_functions 已稳定化,开发者现在可以在 stable Rust 中编写 C 变长参数的裸函数(naked functions)。
⚡ 性能优化
多项 compiler 性能优化落地:大型 workspace 的 crate 解析加速、solver 错误处理与 try_evaluate_obligations 提速、privacy visitor 缓存已检查类型、hygiene 查询新增无锁快速路径、构建 specialization graph 时跳过无关 foreign impl 等,大型项目的编译与检查时间将明显缩短。
🔧 改进
若干内部改进让 trait solver 与类型检查更高效:canonical_param_env_cache 优化、ty/const 变量浅层解析到根变量、可跳过时略过 deref-projection 有效性检查、拆分 apply_primary_terminator_effect、加速 EverInitializedPlaces 等。
📦 Cargo
🆕 新功能
Cargo 新增内置 debug profile;2024 edition 下允许覆盖继承的 default-features;trim-paths 为最终产物生成 unremap 文件便于调试;构建开始时新增带 run_id 的 build-started JSON 消息,方便外部工具监听。
🐛 Bug 修复
修复 cargo clean --doc 未尊重 target、避免触发 git 的 core.fsmonitor、lock 消息措辞改为更精确的 highest、min-publish-age 相对 --publish-time 计算、trim-paths 的 /cargo/deps fallback 源与 -Zroot-dir workspace remap 等问题。
🔧 改进
诊断信息在无 snippet 时也能正常显示标题,并移除 complexity、perf、nursery 等 lint groups 的默认提示,输出更干净。
🧹 Clippy
🧹 Lint 规则
新增 nonzero operators and methods lint,提醒对 NonZero 类型使用可能产生零值的运算符;needless_bool 扩展为检查提前返回的 guard 形式,帮助写出更简洁的条件逻辑。
🐛 Bug 修复
修复 cast_possible_truncation 的 try_from 建议在宏展开下的错误、needless_range_loop 对嵌套索引的误报、自动派生代码中 semicolon_if_nothing_returned 误报、redundant_pattern_matching 建议缺括号,以及 unwrap_or_default 未尊重 raw-pointer Default 的 MSRV 等问题。
🔌 Rust-Analyzer
🆕 新功能
新增 replace_arith_with_strict assist,可把普通算术运算一键替换为带溢出检查的严格版本;并支持 #[rustc_must_implement_one_of] 的 assist、inline asm 关键字作为操作数名、or pattern 后接 range pattern、doc 属性中的宏,以及将 pub 宏视为对反向依赖可用。
🐛 Bug 修复
修复多个问题:VFS 的 no entry found for key panic、async fn 局部变量被误判为返回协程的 upvar、const block 在闭包内的 upvars 查询、dyn Trait<'a> 生命周期 binder 的 off-by-one、InsertReplaceEdit 不支持时丢失尾部文本、lifetime 传入 ident 元变量时的 panic 等。
🔧 改进
item tree 的内存占用得到优化,可降低大型项目中的内存开销。
✅ 已批准 RFC
✅ RFC 批准
本周 2 个 RFC 获批:Cargo 的 hints.min-opt-level(提示最低优化级别)以及新增 extern "custom"(支持自定义 ABI),开发者未来可更灵活地控制优化级别与外部 ABI。
📝 新增·更新 RFC
📝 RFC 提案
新增 Support External Linkers RFC 提案,讨论支持外部链接器的方案。
rustdoc
🐛 Bug 修复
rustdoc 现在仅在独立 markdown 文件校验有效后才创建输出文件,避免生成残缺产物;过滤 doctests 时不再考虑 doc(cfg()),文档测试的运行结果更符合预期。
📚 标准库
🆕 新功能
标准库新增 OnceCell/OnceLock::new_init,可在已知初始值时更高效地初始化;ByteStr 和 ByteString 新增 to_string() 实现;并引入 PinSafePointer trait 泛化 PinCoerceUnsized。
⚡ 性能优化
escape_string_symbol 新增快速路径,slice::contains 针对单字节 BytewiseEq 类型优化,ASCII 大小写转换改为单遍完成,const 指针方法标记 inline(always) 与 *mut 对齐,字符串与字节处理的性能普遍提升。
✅ 稳定化
fs_set_times 已稳定化,开发者现在可以在 stable Rust 中用标准库直接设置文件时间戳。
📋 跟踪 issue
📋 跟踪 issue
本周跟踪 18 条 issue,重点包括 Box::take 与 -Zprofile-sample-use 的稳定化、riscv64a23-unknown-linux-gnu 晋升 Tier 2(含 host tools)、i686-pc-windows-gnu host tools 降级、MinGW 弃用 dlltool 等平台事项。
🦀 Official
征集测试:限制 trait 的可实现性与字段可变性
Rust 的密封 trait 模式——API 指南中的技巧,迫使每个受限 trait 携带隐藏的 Sealed supertrait——正被一等语言语法取代。RFC 3323 的 impl(crate)/impl(super) 限制直接表达同样的作用域限制,并在下游 crate 越界时产生更清晰的编译器错误,而其 mut_restriction 配套功能则针对字段可变性。文章并排介绍了这两个 nightly 特性与对应的密封 trait 等价写法,并呼吁社区在稳定之前进行测试。
🛠 Project/Tooling Updates
Bevy 六周年
Bevy——一个“令人耳目一新的简单”、数据驱动的 Rust 游戏引擎,拥有 47,529 个 GitHub star 和永久免费授权——六年后,其雄心仍然资金严重不足。今年项目终于落地了 BSN,这个期待已久的新一代场景系统,但增长仍由 Bevy Foundation 捐赠者而非商业支持推动。这篇周年庆反思回顾了今年的成果,用绝对数字拆解了增长,并展望了社区下一年的希望与梦想。
fearless_simd v0.7:64 位整数、改进的泛型、SSE2 与即将到来的 v1.0
fearless_simd v0.7 通过 u64/i64 向量支持填补了最后一个类型覆盖空白——这得益于让编译器跟踪哪些内建函数属于哪套指令集,因为此前猜错就是内存安全违规。64 位整数 SIMD 是最难的部分,因为硬件支持不均衡:AVX2 缺少许多 64 位运算,迫使进行模拟,而手动将内建函数映射到指令集则招致静默的内存 bug。作为 v1.0 前的最后一个主要版本,它还新增了显式的 SSE2 级别取代 x86 上的标量回退,并大幅改进泛型,以编写与向量类型无关的算法。
vairedb 0.1.0——云原生分布式分析数据库
VaireDB 将 DuckDB 的列式向量化执行引擎嫁接到 PostgreSQL 的线上协议上——让分析型 SQL 能配合现有的 Postgres 工具和驱动使用。分析型工作负载通常被迫在像 DuckDB 这样的单节点嵌入式引擎与完全放弃 Postgres 兼容访问之间二选一,而要在保持线上协议兼容的同时将列式查询扩展到集群,正是大多数此类项目停滞之处。这次发布介绍了协调器/工作节点拓扑、设计目标与非目标以及路线图——对任何评估通往生产就绪 v1.0 之路或计划贡献的人都很有用。
OXVG 0.0.7: introducing an SVG-to-JSX transformer to the OXVG toolchain
HTML、JavaScript、CSS 早就该消亡了
HTML、CSS 和 JavaScript——支撑着几乎所有 Web 应用的技术栈——是每个优秀开发者都厌恶的“三个历史意外”,但世界与它们耦合得太紧,永远无法替换。每当 HTML 在复杂表面(如工作流图或波形编辑器)上放弃时,开发者就退回 canvas、WebGL 或绝对定位的 div,在那里每个自定义控件都自行为滚动、双指缩放、指针捕获、键盘焦点和屏幕阅读器发明答案——这种组合爆炸让统一的设计系统不可能实现。文章主张整个技术栈早就该消亡,并介绍了 EffinDOM 的 FUI-RS,一个提供 WASM 时代替代方案的 Rust UI 框架,附有现场演示。
为 BPF 做更多形式化验证
Linux 的 BPF 验证器保证程序无法使内核崩溃——但 Meta 仍看到 sched_ext 看门狗每月踢出一个调度器一两次。Dwivedi 认为内核安全是必要的但不充分:BPF 程序可以静默干扰用户空间操作或在没有完全失败的情况下使性能回退,通常发生在结合了没人预料到的特定硬件与工作负载的边界情况下。这场 LSFMM+BPF 会议综述概述了为什么领域特定的不变量与形式化验证是下一步,以及它们如何融入现有 BPF 生态。
kache 0.14.0: debuggable restores and cross-clone convergence
kobe 0.39.0:加固集群租约生命周期
一个向 CI 和开发者租出预热临时集群的 Kubernetes operator 刚刚投入两个发布版本来加固租约生命周期——因为发放实时集群意味着边界必须守得住。交互式 kubectl 访问必须要求身份证明,租约必须精确固定在其被授予的实例上,一个租户的集群不能与下一个租户共享数据库身份;内部审计还发现了值得关闭的池/租约协调竞态。本次发布详细介绍了跨租约生命周期的这些安全与正确性修复、集群之间如何隔离,以及如何通过 kobectl 或 OCI Helm chart 上手。
renew 0.1.1:一个确定性、代码优先的游戏引擎
renew 0.1.1 的首次发布保证在 Windows、Linux 和 macOS 上逐位完全相同的游戏模拟——相同的构建、相同的种子、相同的输入、相同的结果,并由每个平台上的 CI 摘要验证。大多数引擎会因浮点数学和可变时间步长破坏确定性而在平台间漂移,这就是为什么这个引擎将时间锁定为整数纳秒并使用 Q47.16 定点算术。本次发布涵盖了全部 27 个 renew-* crate、五个核心模块,以及让每个可选 crate 都可移除且由 CI 证明的架构。
GRIT 1.1:为你的量化张量做类型检查
量化检查点的解码语义存在于编写它的工具中,而非文件中——两个逐字节相同的序列化可以解码出不同的数字。在 GGUF/safetensors 工具之间移动模型,你就是在打赌两套代码库独立地对零点与共享指数舍入做出了相同的未文档化选择;仅扫描四个真实检查点就发现一个声明的文件类型与实际张量字节不一致。GRIT 1.1 将这些规则编码进一个 64 字节描述符加上一个规范性解码法则,可在每个生产者-消费者边界以 O(1) 验证——附带 68 个一致性向量、五个零依赖实现,以及一个可用于已有文件的 CI 门控扫描器。
floDl:引入 AMD GPU 支持
flodl 0.8.0 推出 AMD GPU 支持,并附一个诚实的警告:还没有一块 AMD 显卡运行过哪怕一个训练步骤。底层库只为恰好一个后端编译,因此 AMD 构建终其一生都在冒充 NVIDIA 构建——张量报告为 CUDA,调度使用 CUDA 标识符,两个构建宣称同一块领地,使厂商成为构建时属性而非运行时决策。文章解释了如何教会框架不再如此假设:一个协调两种拼写的 C++ 层、不加载任何 GPU 运行时的内核级拓扑检测,以及诚实的 API 重命名与废弃别名,让链接期失败在任何编译开始前就暴露出来。
git-cache-proxy: read-only cache for git
📖 Observations/Thoughts
对 Cargo 的愿景
Cargo 是 Stack Overflow 上最受渴望的开发工具,深受喜爱以至于许多人把它当作选择 Rust 的理由——然而它自己的团队认为它远未完成。正是那种满足感才是问题所在:生产力仍然被“知名”crate 的内行知识所门控,而 Cargo、Rust 和 crates.io 之间理想的工作流仍未被想象。这篇文章勾勒了一个更大胆的愿景——押注生态(其中 ripgrep 的 monorepo 工作会自动改进 typos)并重新思考面向代理化开发(agentic development)的工具链。
循环 trait 实现:动机
Rust 静默禁止循环 trait 实现:要证明一个 trait 实现有效,编译器禁止依赖同一个实现,而大多数开发者从未注意到这个归纳要求如何深刻塑造他们的代码。这一约束位于“内部”证明与“外部”证明之争的核心——作者花了多年才理解这一抽象,而像构建在 Rc<T> 之上的递归类型 List<T> 正是最用力推挤这条线的类型。这篇系列开篇之作将问题扎根于真实 Rust 代码,并为将来可能提交 RFC 的设计奠定基础。
Rust SIMD 登上 GPU
Rust 的可移植 SIMD 现在可以在 GPU 上运行,把它当作又一块向量硬件。VectorWare 之前将每个 std::thread 映射到一个 GPU warp,但让每个 warp 内部的并行通道保持原样,而 Rust 中跨架构的 SIMD 传统上意味着为每套指令集手写厂商内建函数,如 _mm256_add_ps 和 vaddq_f32。文章拆解了如何让一个通用的 Simd<T, N> 只写一次,就编译成目标(CPU 或 GPU)支持的任意向量指令,让开发者以熟悉的 Rust 抽象编写高性能 GPU 应用。
用 Rust 重写:性能、失败与 2026 现实检验
RIIR——用 Rust 重写(Rewrite It In Rust)——已成为 C/C++ 问题追踪器里一个严肃的提案和一个梗,而 2026 年的现实比两者都更混乱:项目在三年后夭折,CVE 依然出现在刚写的 Rust 代码中。安全与性能的主张有硬数据支撑——Android 的内存安全漏洞与内存不安全代码的减少呈线性相关,一项 2017 年的研究将 Rust 排在能源效率前列——但现实世界的重写显示出喜忧参半的记录。基于 Rustikon 2026 的一场演讲,文章审视了成果、性能数字与失败,给 RIIR 一个诚实的现实检验。
RangeFrom,第 1 部分..:历史与背景
Rust 无处不在的 1..=10 迭代和 x[2..5] 切片语法最初是作为切片的一个特例开始存在的——RangeFrom 类型直到很久以后才被正式化,藏在一个更大 RFC 里一个名为“Slice revisions”的小章节中。作者在编写 Clippy lint 时开始怀疑 RangeFrom 最早的设计决策之一出了问题,这个选择如今已烙进每个 Rust 开发者每天都会用的类型里,并且必须与新 range 类型一起演进。第一部分从 RFC0198 和 RFC0439 讲起,经过 rust#19148 的实现和 rust#19794 的 range 记法之争,为第二部分的设计批评奠定基础。
类型化对话:让非法代理对话无法表示
MCP 自己的官方 Rust SDK 示例就误处理了它的招牌特性——用户的“拒绝”被静默当作有效回答,这是一个没有任何消息模式能捕获的对话 bug。多轮代理对话不断带着此类 bug 上线:写了却从未被使用的阶段、被当作真实答案的拒绝和残留内容,因为模式验证的是消息,而非对话状态。文章展示了如何用一个描述订票对话的 56 行契约生成 905 行代码——面向服务器的 Rust typestate、面向 Flutter 客户端的 Dart sealed class,以及已发布的 JSON Schema——三者一旦漂移 CI 就会失败,另附八个编译器拒绝的对话图库。
ECQV:隐式证书,以及我为何将其排除在催生它们的项目之外
一个被攻破的协调服务器不再能破坏点对点网络的安全——被剥成一个哑管道后,它最坏的作为就是拒绝为两个对等节点做介绍。这颠覆了 Tailscale 式架构,在那里你完全信任协调器,而服务器被攻破就意味着系统被攻破。filament 项目使用 PAKE,让两个对等节点完成一个简短仪式后就共享一个观察中的服务器无法获得的密钥,然后解释了为何刻意将 ECQV 隐式证书排除在外。
TLS 握手:测量 4 个加密库的性能
四个加密库——aws-lc-rs、Graviola、ring 和 OpenSSL——在密钥协商、签名算法和密码套件的 36 种构建组合中交叉测试,以揭示哪种组合带来最快的 TLS 握手。握手看起来是一个平凡的步骤,却将哈希、密钥协商和加密打包进一次密集的交换中,这就是为什么 0-RTT、PSK 和无签名证书不断推高上限——而库的选择会悄悄改变真实延迟。文章记录了可复现的 WTX 基准测试框架、PEM 解码和 TCP 开销如何遮蔽原始数字,以及如何通过捆绑的 bench.sh 脚本在本地重跑全部 36 项测量。
Building scalable backend services with Rust and PostgreSQL
通用硬件在环 HAL 测试套件的 PoC——Tweede golf
HAL 本应把硬件抽象掉,但证明这种抽象确实有效,仍然需要对真实芯片进行繁琐、易错、乏味的验证。Tweede Golf 为许多嵌入式客户交付过 HAL,每次都遇到同样的苦差事——验证代码因项目而异,难以写对,容易被跳过直到 bug 在硬件上暴露。这篇文章介绍了他们为通用硬件在环测试套件做的概念验证、让 HAL 验证可复用的动机,以及正确做好这件事需要什么。
FLOSS 878 - A Tool With Opinions
📚 Rust Walkthroughs
在 Rust 中向下转型 Arc
Rust 允许你用 as 安全地将 Arc<MyStruct> 向上转型为 Arc<dyn MyTrait>,但向下转回本质上是危险的——一个任意的 trait 对象可能包裹任何实现者,猜错就是未定义行为。Arc 的 into_inner 只能对 sized 类型解出具体值,而无 sized 的 dyn MyTrait 只存活在堆上,内置的向下转型只针对 dyn Any,让任意 trait 没有恢复路径。文章构建了一个从 Arc<dyn MyTrait> 到 Arc<MyStruct> 的自定义不安全向下转型,绕开 into_raw/from_raw 提取一个你确定原始类型的值。
用 hotpath-rs 剖析 Rust:完整指南——从 SQL 查询到 CPU 采样
优化 CPU 热路径每操作节省微秒,但消除一次数据库往返或并行化 HTTP 调用就能从响应时间中砍掉数百毫秒。随着 Rust 从底层系统编程发展成通用语言,性能剖析不再只是 CPU 采样和火焰图——SQL 查询、HTTP 调用、异步执行和 I/O 瓶颈如今主导着真实的速度瓶颈。栈的每一层都把一个采样瓶颈与能暴露它的 hotpath-rs 剖析器报告以及用前后对比数字验证的修复配对。
裸机嵌入式 Rust 的芯片无关架构
OpenServoCore 的裸机固件在项目中途把整个线上协议拆掉并替换——而分层结构守住了。嵌入式 Rust 的积木(HAL、PAC、异步执行器)非常丰富,但几乎没有关于如何构建严肃固件项目的公开资料:真正的协议栈、电机控制回路、十几个交互的外设、多芯片支持,而且没有 RTOS 也没有异步执行器,只有中断处理器和一个主循环。文章逐层记录了架构并附教学尺寸的代码,展示了逻辑层如何在无硬件连接的桌面上编译和单元测试,以及一个离散事件仿真如何在 bug 到达芯片前捕获十几个真实 bug。
📦 Crate of the Week
Crate of the Week:literator
在 Rust 中格式化迭代器的条目通常意味着构建临时 String——literator crate 直接将它们渲染到写入器,零中间分配。标准的 join 风格格式化要么逐元素分配,要么强制有损 UTF-8 转换,而像路径这样的值需要的显示逻辑是任何切片都无法在不分配的情况下表达的。这篇 Crate of the Week 文章介绍了 Literator trait,以及一个用于不稳定 std::fmt::from_fn() 的 polyfill、支持 Unicode 感知大小写转换的显示适配器,以及用于更友好的即兴错误格式化的重复辅助函数。
📌 foundation
Rust 团队健康峰会:9 月 8 日蒙特利尔
几年前一次为期一天、仅限受邀的 Rust 团队负责人聚会催生了项目目标体系——如今这已是项目两年后自我组织的支柱。但 Rust 的健康依赖于数十个志愿者运营的团队跨越时区达成共识,项目总监们认为,只有当领导层获得专门的面对面空间时,协调一致才会发生。文章详细介绍了与 RustConf 2026 同期在蒙特利尔举行的 9 月 8 日团队健康峰会、其后勤安排、受邀流程,以及证明了这类聚会有回报的 Leads Summit 先例。
与 Rust 内容团队对话:RustWeek 访谈与新的更新日志系列
一个将 Rust 集成到 Tor 遗留 C 代码库的早期实验,滚雪球般地发展成一次完整的分布式系统重写——而这正是 Rust 下一个前沿的形态。这门语言正同时推进两个新领域:与现有 C++ 代码库的互操作,以及达到安全关键软件的准入门槛——在这种软件中,增量采用必须在围绕其他假设构建的系统中赢得信任。文章重点介绍了 RustWeek 访谈,Tyler Mandry 与 Teor 谈论 C++ 互操作工作,Pete LeVasseur 谈论 Safety-Critical Rust Consortium 与 Eclipse Software Defined Vehicle 项目,以及一个新的更新日志系列。
📌 newsletters
本月 Rust OSDev:2026 年 7 月
Rust 正在蚕食操作系统栈的最底层——本月综述涵盖引导加载程序、UEFI 抽象、x86_64 寄存器和 ACPI 表解析,全部用 Rust 重写。编写操作系统传统上意味着 C、汇编、手动内存管理和潜伏的未定义行为;Rust 的所有权模型将那些危险移到编译期,但 OSDev 生态仍然分散在许多独立维护的 crate 中。这份摘要汇集了 rustc/cargo 工具链和 rust-osdev 组织的最新合并变更,从 bootloader crate 的 64 位 ELF 加载到 uefi、x86_64 和 acpi 的贡献。
📌 research
Rust Coreutils:用现代语言重建 Unix 基础
GNU coreutils——每台 Unix 系统启动时依赖的那套约 40 年历史的 C 命令——正被 Sylvestre Ledru 的团队用 Rust 重建。难点不在于速度而在于逐字节兼容:连 GNU 自己的工具在不同平台间都会出现细微差异,而核心工具中的内存 bug 可能损坏用户数据或破坏系统启动。论文涵盖了项目的架构、兼容性与测试策略,以及用现代语言重建 Unix 最基础层的经验教训。
往期精选
- Rust周刊2026W32 | Polonius 登 nightly、Rust 1.98 浮点 API、Rust 官方采纳 LLM 政策
- Rust周刊2026W31 | SeaORM 2.0转正、Syn 3发布、gccrs内核编译
- Rust周刊2026W30 | Rust 1.97.1、Syn 3.0.0、Freya 0.4、size_of_val_raw 稳定、libs 团队 RFC
- Python周刊2026W32 | PEP 842导出、PR-AF登顶、NumPy线程扩展、PyCon Korea 2026
- 用 Rust 重写 Bun
- 2026年8月编程语言排行榜|MATLAB 首次跌出前20
扫码关注「右耳朵猫AI」

浙公网安备 33010602011771号