Rust周刊2026W32 | Polonius 登 nightly、Rust 1.98 浮点 API、Rust 官方采纳 LLM 政策

28 阅读19分钟

工具链稳定化:asm! 128 位整数、size_of_val_raw 稳定,wasm32-wasip3 升 Tier 2;Polonius 登 nightly,Rust 1.98 浮点 API 提速。

🦀 Rust 工具链更新

🔧 编译器

✅ 稳定化

在 x86 目标上,开发者现在可以通过 asm! 内联汇编将 128 位整数传入向量寄存器,为数值计算相关的汇编级优化打开了新空间。

⚡ 性能优化

编译器改进 CFG 遍历,并避免了 MoveData 位置映射中每个基本块一次堆分配的额外开销,借用检查等阶段的运行开销更低。

📚 标准库

⚡ 性能优化

整数格式化对四位分块路径进一步微调;is_ascii 与 eq_ignore_ascii_case 新增 AArch64 NEON 支持;Take::count 与 Fuse 的 advance_by 也通过特化加速,字符串与迭代器密集的代码可获得更快的执行速度。

🆕 新功能

标准库新增有界随机采样(bounded random sampling);原子操作现在可以在 const 上下文中使用;std::io::copy 移至 alloc::io,使 no_std 环境也能复用拷贝逻辑。

✅ 稳定化

size_of_val_raw、align_of_val_raw 与 Layout::for_value_raw 稳定化,开发者可在 stable Rust 中直接使用这些与未定大小类型相关的底层 API,不再需要 nightly。

🔧 改进

trait 实现现在可以只实现 Read::read_buf 即可编译,降低自定义 reader 的成本;标准库新增 semver check 测试命令,可自动检查 API 兼容性,帮助开发者提前发现破坏性变更。

📦 Cargo

⚡ 性能优化

lockfile 未变化时 Cargo 将跳过解析,避免重复解析开销,重复构建的启动更快。

🐛 Bug 修复

修复 manual_readme lint 对低优先级 README 文件的误报,以及 package.build 为空时可能触发的 panic,边界配置下构建不再崩溃。

🔧 改进

在 workspace 新增 [lints] 时会提示改用 [workspace.lints] 统一管理;补全功能可为 cargo run 参数补全路径;git checkout 名称不再依赖 git config;rustdoc 标志可传入最终 CCI merge 步骤;nightly 上新 build-dir 布局的启用方式重构,trim-paths 采用明确且可逆的 remap 规则提升构建可复现性。

🧹 Clippy

🧹 Lint 规则

新增对 doc_paragraphs_missing_punctuation 中内嵌链接图片的检查,以及 clone_on_copy 中 UFCS 调用的 lint,帮助开发者发现文档规范问题与不必要的克隆。

🐛 Bug 修复

修复 no_effect_underscore_binding 在 proc-macro 生成代码上的误报,减少无效告警。

🔧 改进

manual_div_ceil 不再提出会改变求值次数的改写建议;float_cmp_const 现在也会对使用常量浮点数的 assert_eq! 触发,避免浮点精度误判。

🔌 Rust-Analyzer

🐛 Bug 修复

修复 include! 导致的宏查找失败、pattern 内表达式作用域、glob import 遮蔽、自引用 impl Trait 函数与 hrtb 闭包参数检查时的 panic、raw string 反斜杠后 format 参数识别、赋值左侧作用域解析等一批问题,补全与诊断更可靠。

⚡ 性能优化

避免为 bare path 分配匿名常量、合并 defined opaques 查询、节省 lifetime 处理中的分配,线程栈翻倍至 16MiB,vfs 虚拟路径改用基于组件的路径前缀匹配,整体响应更快。

🔧 改进

路径允许 self 作为最后一段;支持 CovariantUnsafeCell;类型名冲突的 E0308 错误现在显示限定路径;参数数量不匹配改用 E0057/E0061 错误码;auto traits 标记为 coinductive,类型检查更准确;postfix snippet 在 item 作用域下会报告配置错误。

rustdoc

🆕 新功能

rustdoc 为 notable traits 添加标签徽章,文档读者能更直观地识别 Iterator、Read 等关键 trait 的实现。

🐛 Bug 修复

修复 grapheme 簇拼接 Prepend 类字符到 _ 或 : 时触发的 ICE,以及列出 opaque type 属性时的崩溃,文档生成更稳定。

⚡ 性能优化

决定 impl 是否内联时仅分析 self type 的头部,减少无谓的分析开销。

🔧 改进

rustdoc-json 输出的 Stability 现在兼容非自描述的 serde 格式(如 bincode),下游工具链集成更灵活。

rustfmt

🆕 新功能

rustfmt 新增对 cfg_select! 的格式化支持,使用条件选择宏的代码也能保持一致的排版。

📋 跟踪 issue

✅ 稳定化

c_variadic_naked_functions 进入稳定化流程;wasm32-wasip3 目标提升至 Tier 2,WebAssembly 开发者可获得更受官方支持的目标平台。

🆕 新功能

新增 target_feature_available_at_call_site 特性,为在调用点判断目标特性可用性奠定基础。

📋 跟踪

core_io_borrowed_buf 与 derive_macro_global_path 开启 tracking issue,正式进入特性跟踪阶段。

🔧 改进

计划为 lint/诊断专用的 rustc_ 属性制定统一命名约定;OpenBSD -current 版本将编码进目标 target_env,目标环境信息更准确。

🦀 Official

在 nightly 上启用下一代借用检查器

Rust 的下一代借用检查器终于登上 nightly——最初 2018 年的方案在某些程序上慢到根本无法起步。Polonius 的第一个版本通过了 NLL 的测试套件,甚至接受了 NLL 拒绝的正确代码,但性能压垮了它;直到 2023 年一个几乎不需要重构 NLL 的新表述让这项工作重获新生,如今稳定化预计年内落地。这篇文章详细讲述了流敏感的 lifetime outlives 检查解锁了什么、让稳定化得以通过的性能基准,以及如何在 nightly 上测试 Polonius Alpha 并报告问题。

资助团队进展更新

已有 45 位 Rust 维护者申请有偿资助——其中 34 人想要长期的常驻维护者(Maintainer-in-Residence)职位——这个项目目前建立在 35 万美元的捐款之上。把一个粗糙的 RFC 设想变成运转中的基金,意味着要敲定几十个小决策,而申请人对全职雇佣、合同制和兼职安排的偏好分歧很大。这篇文章介绍了正在讨论的问题、初步决策,以及任何人可以如何帮忙——通过 GitHub Sponsors 赞助、贡献筹款想法,或加入 Zulip 讨论。

rust-lang/rust 正在采纳一项 LLM 政策

Rust 自己的 monorepo 现在为 LLM 辅助的贡献写下了成文规则——但这项政策刻意不是对 AI 的官方立场,而且只适用于五个团队,而非整个 rust-lang/rust。LLM 的使用远早于规则的存在:有些贡献确实帮到了社区,另一些则造成足够大的危害,迫使项目启用隐藏的审核通道——这与项目透明、欢迎新人的目标相悖,也让新贡献者在自己 PR 被关闭时措手不及。这篇文章解释了为什么要写这项政策、它说了什么、影响谁,把不成文的规则正式化,让贡献者不必靠猜就能融入社区。

All Hands 2026 回顾

166 位 Rustaceans 聚集在乌得勒支,在 11 个房间里进行了 73 场会议——但 All Hands 明确被设计为不做出任何最终决定。项目的治理全年都在异步 issue 线程上进行,因此这场时隔六年的线下回归是为了解决停滞的阻塞项、重建跨团队联系,六个生态小组如 Bevy Engine、Ariel OS 和安全关键 Rust 联盟(Safety-Critical Rust Consortium,60 位维护者)与核心团队并肩工作。这篇回顾涵盖了 State of the Rust teams 开场、Leadership Council 与 Project Directors 问答、主持人挑战——并确认 All Hands 将于 2027 年回归。

🛠 Project/Tooling Updates

Kevat 0.4.0——向外置硬盘快速、可续传地复制和移动文件,三个平台现已全部配备 GUI

一个 3.4MB 的文件取代了守着大文件传到外置硬盘的脆弱仪式——Kevat 0.4.0 让复制和移动变得快速且可断点续传,现在三个平台都提供了 GUI。长时间的复制通常会在几小时后挂掉——USB 掉落、睡眠唤醒、磁盘写满——让你一无所获地从头再来。本次发布涵盖免安装的静态二进制(chmod +x,需要 FUSE)、新的跨平台 GUI,以及面向无头服务器的静态 CLI。

kache 0.13.0:为 proc-macros 读取的环境变量增加 key

kobe 101:租赁 Kubernetes 集群,而不是创建一个

大多数测试集群在流水线死亡后仍长期存活,因为删除集群是个没人愿意做的决定——kobe 反其道而行,通过租赁预热好的集群并施加系统强制的过期时间来翻转这一局面。来自已结束流水线和已离职同事的孤儿 Kubernetes 集群在悄悄烧钱,而清理工作落在恰好记得这件事的人头上。这篇文章解释了 kobe 基于 Rust 的 operator(kube-rs 和 axum)、其“牲口而非宠物”(cattle-not-pets)的池化设计——替换优于抢救,以及单命令的 kobe lease 工作流。

用 Rust 重写 FalkorDB:先让它跑起来,再让它稳定

Proxelar 0.5.0:会话、规则,以及更多抓包方式

关闭调试代理曾意味着丢失整个抓包记录——恰好在你终于复现那个试了三次的 bug 的时刻。Proxelar 0.5.0 修复了这一点,并从这一个恼人点滚雪球式地长出了会话、HAR 导入/导出、真正的过滤器语言、内容感知的响应体视图、声明式规则、无头 API、插件包和四种新的抓包模式——不过未脱敏的会话文件会悄悄携带 cookie、token 和授权头。这篇文章走了一遍“抓取到持久化”的工作流——拉取流量、定位交换、读取响应体、修改或重放——并解释了带版本号的 JSON 会话格式,以及为什么应该像对待凭据一样对待它。

mirador 1.0.0:个人终端仪表盘

mirador 的 1.0.0 发布刻意不添加任何新功能——整个发布说明只有一句“1.0 是一个承诺,不是一个功能”。大多数主版本号跃升意味着功能大跃进;但对个人终端仪表盘来说,真正的痛点是配置变更,选项会在用户眼皮底下被悄悄改名或移除。这次发布承诺了稳定性:从此以后破坏性变更必须升主版本号,选项只许增加、不许改名,所以锁定 1.x 是安全的。预编译二进制覆盖 macOS、Windows 和 Linux,每个都经过 GitHub Artifact Attestations 验证。

BitFun 0.2.15:基于 Rust 运行时的开源桌面 AI agent

一个构建在 Rust 运行时之上(而非 Node 或 Python)的桌面 AI agent,仍然能导入 Claude Code 命令,并同时兼容 Codex hooks 与 OpenCode skills。大多数 agent 工具链把用户锁死在单一厂商的协议里,而长会话会因上下文膨胀,并在跨设备时挂掉。BitFun 0.2.15 的答案是:自动清理的托管 worktree 会话、通过 SSH 跨设备异步派发任务并拉回结果、经过审核的 MiniApp 市场,以及共享的 TUI 上下文压缩控制。

mvis v0.5.0:CI/CD 性能剖析与分配直方图

multicalc 0.9.0:面向嵌入式和机器人系统的科学计算

在 Wayland 上自动纠正错键盘布局的输入几乎不可能。我们还是做到了

wimux 0.1.0:原生的 Windows 终端复用器

amtr:面向 Claude Code 会话的 btop 风格上下文窗口监视器,及其自身 153 小时构建的取证式解剖

一个监视 Claude Code 上下文窗口的工具,对自己 153 小时的构建做了取证式解剖:amtr 花了 1,472.25 美元,跨 1,945 个回合,模型读了 10.2 亿个缓存 token,而新鲜 token 只有 8,517 个——98% 的缓存命中率让 vibe-coding 的经济学变成了缓存经济学。然而三次压缩悄悄丢弃了其中 289 万个推理 token,整个项目原来是一次持续六天的对话,而非多次会话。这篇文章走了一遍 token 级的时间线——会话诞生、中途的模型切换、fork 出来的子会话、568 条 shell 命令——展示 AI 自己的记录揭示了 vibe-coded 软件究竟是如何构建的。

RSigma v0.20.0 发布

RSigma 的现状

📖 Observations/Thoughts

Firecracker microVM 底层如何工作,以沙箱化不受信任的代码与 AI agent

用 Rust 的新 API 加速浮点数学运算

Rust 1.98 终于让开发者能告诉编译器在浮点数学上别再保守——这是这门语言此前没有稳定办法解除的性能税。编译器在浮点代码上跳过激进优化,以避免改变舍入行为,使得数值密集型程序明显变慢,即使 SIMD 指令本可以批量处理运算。这篇文章基准测试了在现代 x86-64 上每个数值仅需 0.5 条 CPU 指令的百万元素求和,然后展示新 API 如何在把舍入误差保持在最小的情况下,为浮点运算解锁相近的速度。

Rust MEMS 驱动:尝试并采用我们新传感器驱动的 3 个理由

STMicroelectronics——无数嵌入式 C 驱动背后的芯片制造商——现在为其 MEMS 传感器提供 Rust 驱动,同时并未放弃它仍在维护的 C 生态。从缓冲区溢出到 use-after-free 和悬垂指针,这些悄悄困扰 C/C++ 固件的内存 bug 可能破坏数据或给设备留下安全漏洞,而编译器却任其通过;Rust 的所有权模型和 RAII 让编译器在代码发布前就拒绝不安全的内存访问。这篇文章列出了采用新驱动的三个理由,包括 crates.io 可用性,以及 Embassy STM32 如何为 ST 的 MCU 提供 Rust 硬件抽象层。

软件设计的基石 | Alex Fedoseev

代数数据类型(ADT)——这个学术味重到让开发者翻白眼的术语——是这位工程师软件设计中影响最大的东西,而这个概念只是听起来吓人。每个真实领域都充满规则:有些值必须共存,有些绝不允许,必填字段常常依赖其他字段——但这些规则通常只存在于会过时或被跳过的注释和文档里。这篇文章把 ADT 提炼为 product 类型和 sum 类型,并展示如何把这些规则编码进类型系统,让整类整类的 bug 变得不可表示。

Rust 中的尾调用解释器

VM 解释器可以通过把递归分发变成跳转来彻底消除栈帧——而 Rust 不稳定的 explicit_tail_calls 特性要么强制这个优化,要么直接报错。但在 Rust 中复刻函数式语言 VM 的惯用法,需要引入 static mutunsafe 来镜像 Scala 的模式,使得分发风格成为真正的性能权衡。这个实验对两个解释器进行了基准测试——一个 Scala 风格的栈机器,和一个围绕 Rust 强项构建的寄存器机器——展示了分发设计如何可度量地影响吞吐量。

如何在 2026 年 7 月加速 Rust 编译器

已完成英文三段式摘要(约 97 词,符合 60-120 约束):

  • 钩子:数据冲击——rustdoc 8 个月快 37.92%,贡献编译器整体 5.59% 提速的一半
  • 冲突:性能进展零散且 rustc-perf 不测 Clippy 使大赢面不可见;提速来自不起眼的修复,起因仅是有人撞上 rustdoc 怪 bug
  • 收益:逐 PR 量化收益 + rustdoc 综合 28% + rustdoc-json 基准

已将该实例追加到摘要质量记忆(“编译器性能进度报告类”新变体),后续同类输入直接按此判据处理。

Sovereign Tech Fellowship 资助 Rust 维护(2026 年 6-7 月报告)

一位 Rust 维护者本打算加速编译器,但性能剖析把瓶颈指向了 Cargo——多余的克隆拖慢了测试构建。在 Futurewei 的资助结束后,这位 Sovereign Tech Fellowship 获得者重新投入全职的上游 Rust 工作,而编译时间仍是生态中长期的痛点。他的第一份双月报告详细列出了移除冗余克隆的 Cargo PR、编译期优化亮点,以及 2026 年 6-7 月上游贡献的完整拆分。

Rust 参数解析的一个既旧又新的思路

Rust 的 CLI 生态对 clap 如此死心塌地,以至于 2025 年底一个审查作者代码库的 coding agent 直接默认它就在那里。但作者主张工具应该面向生态而非语言:Go 内置的 flag 库对 Go 开发者来说很自然,但对旁边跑着 coreutils 的终端用户却很陌生,Rust 的 clap 习惯也一样外溢。把古老的 getopts crate 扩展成一个小框架,服务于 Unix 风格的 Rust 命令行工具,让 CLI 无论用什么语言实现,都能在 Unix 工具链中宾至如归。

无状态服务器、有状态载荷:会话与延续,用 Rust 实测

大多数报道把 MCP 有史以来最大的一次修订称为“走向无状态”——但协议只是不再对状态表态而已:会话被移进了载荷。SEP-2567 删除了协议层的会话,SEP-2322 的 MRTR 让任何副本都能通过一个不透明的 requestState 信封恢复对话,其内容——一个内存指针、一个 Redis key,或一段完整序列化的对话——规范刻意留给实现者决定。既然传输中的状态需要扛过副本切换,选择权现在在你手里。作为 Typed Agents 系列的开篇,本文把全部三种策略构建在同一个 trait 后面并加以实测:74,550 个样本、六份副本、一张 kill matrix、时移 fork,以及 22 个安全测试。

生成式 AI 时代的 Rust:与 Niko、Allen 和 Zeeshan 对谈

Rust in Production 第 6 季第 9 集:Orhun Parmaksız 谈 JetBrains

JetBrains——Kotlin 和基于 JVM 的 IntelliJ 平台背后的公司——没有计划用 Rust 重写那个平台,却发布了构建其上的商业 Rust IDE RustRover。张力在于 Rust 在 JVM 中心的工具链中处于什么位置:JetBrains 倾向于用进程外的 Rust 辅助程序而非 JNI,并在 Fleet 的文件系统守护进程中使用 Rust,刻意把两个运行时隔离开。本期拆解了 RustRover 的内部——PSI、THIR、基于 MIR 的调试器表达式求值、过程宏沙箱、库存根(library stubs)、解析器回归测试和 cargo-nextest 支持——以及 JetBrains 的索引模型与 rust-analyzer 基于 Salsa 的路径之间的权衡。

工作窃取 vs 每线程执行器:用 Tokio、Smol 和 Glommio 评测不同 HTTP 服务器工作负载

我的 AI agent 修不了的三个 bug

AI agent 写了 wimux(一个面向 Windows 的 Rust 终端复用器)的大部分代码——但它们修不了的那三个 bug,各自藏在一个关于“哪一层拥有屏幕”的错误假设后面。分割窗格会让显示器填满孤儿字形,而每条线索都指向 xterm.js 客户端:四个看似合理的修复,四次失败。30 秒的突破——抓取守护进程自身的终端网格,它在画出第一个像素之前就显示了损坏——彻底排除了客户端。这篇文章走完了全部三个 bug,并解释为什么多层调试胜过单层修复。

📚 Rust Walkthroughs

用 Embedded Rust 让 STM32 Blue Pill(STM32F103C8T6)上的 LED 闪烁

为什么现代字体度量无法复现 Word 的分页

IE11 切换到 DirectWrite“正确”的字体度量,破坏了像素级的布局——原本塞进 330px 容器的文本被挤到了下一行。Word 的分页也有同样的陷阱:Word 的布局路径把小数设计度量在 96 DPI 下量化为整数像素,所以一个看起来对 Word 忠实无误的渲染器,仍可能在不该换行的地方换行、在不该分页的地方分页。这篇文章揭示了作者如何为 Oxi(一个 Rust 和 WebAssembly 的 DOCX 引擎)逆向出精确的 Word 分页——生成受控的 DOCX 矩阵,并联合三个独立的 oracle 来确定哪个组件被舍入、以什么单位、什么顺序、什么方向。

在六天龄的框架上构建 hooklog

一位工程师在 Topcoat 上构建了一个生产级 webhook inspector——这是一个六天前才公开发布的 Rust 框架——仅用了 1546 行代码和两行手写 JavaScript。采用一个全新的框架是场赌博——文档稀薄、API 变动,加上 51.81 秒的冷构建,让早期采用痛苦不堪。结果是一份忠实记录:每条命令、每个错误信息、每个耗时数字,从宏驱动的路由发现到 1.61 秒的增量重建。

📦 Crate of the Week

本周精选 crate:index_type

Rust 允许裸 usize 索引任意集合——没有任何机制阻止你从一个 vec 里拿到的索引悄悄伸进另一个集合。这个编译期漏洞恰好在你最需要的时候酿成微妙的交叉污染 bug,比如手工管理图的邻接表,或把索引缩成 u8 来省内存,此时一个 TypedArrayVec<u8, u8, 3> 仅占 4 字节。index_type 在类型层面修复了这一点:#[derive(IndexType)] 的 newtype 把误用变成编译错误,背后有 TypedVec、TypedSlice、TypedArray、TypedArrayVec 四种容器,同时提供 panic 与可失败(fallible)两类操作。

📌 newsletters

The Embedded Rustacean 第 77 期

ESP32-S31 进入量产,这是硬件厂商终于把 Rust 芯片放进真实供应链的信号。嵌入式 Rust 的增长长期被厂商采用度所制约——官方驱动、板级支持、稳定工具链——而 Zephyr 上的 Arduino Core 退出 beta、ST Micro 力推 Rust 驱动,正是直接针对这些痛点。第 77 期精选了这些里程碑,还有 RustConf 日程调整、一个面向嵌入式 agent 技能的新社区仓库,以及《Simplified Embedded Rust》新书发布。


往期精选


阅读原文


扫码关注「右耳朵猫AI」

扫码关注「右耳朵猫AI」