Rust周刊2026W36 | rustup 1.29.1 更名 target tuple、Wasmi 2.0 提速 2.2 倍、Box map 稳定化、aarch64 FFI 传参修复…
rustup 1.29.1 弃用 target triple编译内存降至 4GiB、智能指针 map 稳定化修复标准库 UB 与 FFI 传参Wasmi 2.0发布Rustdoc 快 33%。 Rust 工具链更新 编译器 新功能safestack 现在可以通过 #[sanitize(safestack “…”)] 属性逐函数开关开发者无需为整个 crate 统一开启就能只对敏感代码启用安全栈保护。⚡ 性能优化本周 compiler 有三处编译期提速名义 obligations 改为直接 push 而非层层返回、降低了标量尺寸检查的性能开销、并移除了宏派生过程中一次多余的 clone。大型项目的类型检查与宏展开耗时会有小幅改善。 标准库 新功能Box、Rc、Arc 的 (try_)map 系列方法开始支持自定义 allocator嵌入式与高性能场景可以在保持自定义分配策略的同时做类型转换core 还暴露了 volatile 原子操作、新增整数 min/max 的 intrinsics并实现了 [u8]::split_ascii_whitespace 与 clamp_to手工实现容器或用裸指针写底层代码的开发者可直接使用标准库原语。⚡ 性能优化aarch64 平台上的 Vec::retain_mut 新增 SVE 加速实现String::retain 也做了专门优化过滤保留元素这类高频操作在 ARM 服务器和移动端的吞吐会明显提升。 Cargo✅ 稳定化cargo-lints 与 min-publish-age 两项能力正式稳定前者让 workspace 集中配置 lint 等级后者可自动避免拉到刚发布不久的 crate 以规避供应链风险。同时实现了 feature-metadataRFC 3416feature 可以在 manifest 中携带描述信息cargo add等工具未来能展示每个 feature 的用途。⚡ 性能优化使用 git-cli 抓取依赖时的重复工作被削减未显式配置 build.sbom 时也不再生成 SBOM依赖解析与构建阶段在无谓开销上都有节省。 改进cargo run 结束后会补打一个换行避免子进程输出以 \r 结尾时把退出码信息覆盖掉trim-paths 支持按 workspace 相对路径重映射 member 路径可复现构建的路径处理更可控Cargo 自身的 profiling 能力也得到增强。 Clippy Bug修复cargo_common_metadata 不再检查 package.readmeredundant_clone 改为真正分析循环体而不是直接放弃–explain 的 lint 查找不再因大小写不匹配失败never type impls 的误报也已修复这几项都会减少误报与漏报对日常开发的干扰。 Lint规则lint_groups_priority 的错误消息补上了缺失的逗号missing_transmute_annotations 的建议中不再包含函数名两处提示文本现在都能被直接复制使用。⚡ 性能优化too_many_lines 在规则未启用时会提前退出不含 clone 的函数会跳过 redundant clone 分析Clippy 在大型 crate 上的扫描耗时随之下降。 Rust-Analyzer 新功能“Extract variable” 重构现在可以直接在 record expression 的字段名上触发hover 会打印非默认 ABI 的函数指针签名块级文档注释渲染时也会去掉前导星号装饰代码重构与阅读体验都更顺手。 Bug修复本周集中修复了一批影响日常使用的缺陷trait 关联函数参数的 HIR lowering、hover 显示错误泛型、union 中访问数字字段的 panic、解引用未解析别名的 panic、宏内做 extract variable 的 panic、hover 带 binder 的 dyn trait 的 panic以及括号内 range pattern 被误判为 tuple pattern 等。同时修正了 const 的泛型参数作用域、raw * 的 unsafeck 与 never type 在数组重复表达式中的重新推断。 改进NamedTempFile 从依赖 temp-dir crate 切换为自研实现并修复了相关缺陷临时文件处理在跨平台上更稳定文档渲染中的若干细节 bug 也一并修正。✅ 已批准 RFC 平台支持调整i686-pc-windows-msvc 目标从 Tier 1 with host tools 调整为 Tier 1 without host tools该目标仍是一级支持、测试与构建保障不变只是不再随发行版附带编译器等 host tools仍需要 32 位 Windows 工具链的开发者要留意获取方式的变化。 新增·更新 RFC RFC 勘误RFC 4004 发布勘误不再鼓励使用局部递归的 accessible(…) 写法涉及可见性规则设计讨论的开发者需要按新表述调整理解。 rustdoc Bug修复修复了 --generate-macro-expansion 模式下宏展开生成多个 item 时的处理错误并修正了 cargo::non_kebab_case_bins lint 的行为生成文档时对宏定义较多的 crate 不再产出错乱的展开页。 改进关键字高亮现在会考虑 edition 信息同一个标识符在不同 edition 下是否为关键字不再被一刀切跨 edition 阅读文档时的着色更准确。 rustfmt 改进运行 diff check 时允许指定 release channelCI 中比对 stable / nightly 格式化差异的场景不再需要切换工具链即可完成。 跟踪 issue 稳定化推进never type 的稳定化已进入 T-types 的 FCP 阶段core::mem::DropGuard 也在推进稳定两者落地后开发者将能在公开 API 中直接使用 ! 类型与作用域守卫。 标准库 API正在讨论将 core::fmt::NumBuffer 重导出到 alloc 和 std以及为 RawWakerVTable 保证 8 字节对齐自定义格式化实现与手写 Waker 的代码未来可以少写样板。 工具链与治理Cargo feature 描述与 rustdoc 的 LaTeX 数学公式支持均在推进中项目管理方面则有临时资助团队章程延期至 2026-09以及依据 2025 年反馈更新 PD 选举流程的议题。 Officialrustup 1.29.1 发布一个补丁版本刚刚重命名了 Rust 里最常用的术语之一rustup 1.29.1 在整个项目中用“target tuple”取代了“target triple”于是多年来积累的文档、CI 配置和肌肉记忆一夜之间都变成了废弃术语。在这背后还藏着几处更安静的坑被取消的 rustup-init 安装会留下残留文件、i686 工具链会静默安装到 64 位 Windows 上现在需要 --force-non-host、rustup-init.sh 在 Windows 上则直接失败。该版本还改进了并发能力让 rustup doc 可以通过本地 HTTP 提供文档以适配容器化环境并新增了对 aarch64-pc-windows-gnullvm 宿主平台的官方支持——同时提醒用户反恶意软件扫描器可能会拦截 rust-docs 的安装。2026 年新一届项目董事选举Rust 基金会的董事会中有五个席位属于 Rust 项目但构成这个项目的开发者并不能直接投票选出他们——领导力委员会会在逐团队征集提名之后再行选举。今年五个席位中只有两个开放交错的两年任期把另外三个推迟到 2027 年因此未来几周获得提名的人将决定项目未来数年的代表权。读者可以从中了解流程的两个阶段、9 月 21 日的提名截止时间以及这一职位的职责要求。2026 年 7–8 月项目管理进展Rust 的目标提醒机器人在几个月里一直往一个大多数目标负责人从未订阅的频道发消息——对关注它的人来说是噪音对被它催促的人来说却完全不可见。这一点很重要因为目标计划正是 Rust 分配资金和跟踪跨团队工作的方式本周期新开了七个目标二进制体积缩减、异步状态机优化、build-std完成了 Cargo 的 lint 稳定化终止了另外两个包括实验性的语言规范并把若干目标调整为部分或全额资助。这篇更新逐一梳理了每个目标的状态、rust-lang/goals 的更名、新上线的 goals.rust-lang.org 站点、每个目标的提醒频率以及为带标签提案自动创建 Zulip 话题。 Project/Tooling UpdatesWasmi 2.0打造最快的 Wasm 解释器历时八个月重写 Wasmi 引擎使其比 1.0 快了约 2.2 倍——该数据是在 Apple M2 Pro 上以 wasmi-benchmarks 套件的几何平均值测得的。这一点很关键因为在 IoT 设备、Soroban 和 Ripple 这样的智能合约宿主以及 Typst 和 Zellij 这类插件系统上运行 WebAssembly 的是解释器而非 JIT可移植性和启动开销让分层编译无从谈起。读者可以看到它与其他可移植解释器在三种硬件配置下的完整基准对比以及新增的二进制体积开关、稳定的燃料计量、确定性 profile 支持和重新设计的 CLI。我如何在一周内让 Rustdoc 快了 33%一个函数体只有 #![recursion_limit “8”] 的单行 crate 让 Rustdoc 以栈帧错误崩溃——追查这个并非真正缺陷的问题反而让 Rustdoc 在一周内快了 33%。严格来说这不算回归因为栈帧数量并不属于 Rust 的稳定性保证但调查为什么 Rustdoc 在 core::fmt 里烧掉大量栈帧、而 rustc 编译同样的代码却没问题暴露出了真正被浪费的工作。读者将看到逐步剖析并修复每一处瓶颈的过程最终在 hyper、bitmaps 等 crate 上把实际耗时最多削减 40%在微基准上削减 60%。自研的 Rust 与 C# 异步互操作 FFI 框架ScyllaDB 把它的 C 和 Node.js 驱动重写为同一个 Rust 驱动的轻量绑定随后在 C# 上撞了墙Rust 到 C# 的互操作几乎没有任何现成方案仅有的两个选项都是 bindgen。bindgen 解决的是跨边界调用的问题而不是 tokio 与 .NET 异步运行时如何通过 C ABI 协同这个更难的课题——而这正是包装一个异步 Rust 驱动的前提。读者将看到该团队自研的异步 FFI 框架的全过程讲解。 Observations/ThoughtsCargo 的调度器能做得更好吗摘要已生成约 101 词并已把该实例判例追加到记忆文件。我们如何打造全球首个用 Rust 编写的安全认证产品——以及为什么选择裸机全球首个用 Rust 编写并通过安全认证的嵌入式系统出自一个此前没有任何 Rust 产品交付经验的团队而在他们启动时Rust 缺少认证编译器这一点还是减分项。Sonair 的 ADAR One 是一款安全等级的 3D 超声波传感器当有物体进入其防护区时会让机器人停下因此那里的内存错误是物理危险而非单纯的 bug团队在 Ferrocene 拿到认证之前就押注了它并放弃了大部分 crate 生态以满足认证和计算平台的要求。文章回顾了这场豪赌、促使他们转向 Rust 的 C/C 痛点以及让他们最终仍取得两年先发优势的裸机决策。优化 1.1.1.1 的 DNS 缓存我们如何省下 100 TB 内存Rust 并发 vs Go 并发无栈协程 vs 有栈协程用 Rust const fn 做编译期计算的九条规则解析文件、构建查找表、提前发现错误……无需构建脚本第一部分在你的 Rust 程序运行之前图像就已被解码、音频已被压缩、机械臂程序也已组装完毕且运行时开销为零、堆分配为零因为 const fn 让编译器完成这些工作然后把输入字节和所有中间值全部丢弃。这一点在内存稀缺、甚至可能没有文件系统的嵌入式 no_std 目标上最为重要也引出了一个现实问题const fn 该推到什么程度才会不再划算。读者将获得从两个真实 crate 中总结出的九条规则首先是让 include_bytes!() 把文件直接喂给常量求值以及第二部分与 C、Zig 和其他 Rust 方案对比的预告。用 Rust 实现的智能体虚拟机 —— Cristian SánchezAsyncIterator 取得进展 —— Jack O’Connor Rust WalkthroughsRust 版 rnull 块设备驱动用 Rust 重新实现 Linux 那个什么都不做的 null_blk 驱动结果大部分工作是在搭建驱动所需的抽象层——Andreas Hindborg 的补丁集中大部分内容都是在补齐编写一个块设备驱动所必需的 Rust 内核 API。null_blk 存在的唯一目的就是以最快速度完成请求来对块设备层做基准测试这让它成为与 C 原版做同类对比的理想对象。文章逐步讲解了模块初始化、pin_init_scope() 与 configfs 的固定引用以及达到功能对等后所揭示的 Rust 在内核中的成熟度。你的第一个 GPUI 应用用 Rust 构建桌面 UIZed 编辑器所基于的 UI 框架没有标记语言、没有 CSS、也没有 DSL——整个界面都是用普通 Rust 代码描述的。GPUI 以 Rust 的安全性带来原生桌面性能但它年轻且快速演进的 API 意味着文档稀少、破坏性变更频繁让新手只能靠猜。文章从一个空白的 cargo 项目开始构建一个类 Linear 的问题追踪器依次讲解依赖配置、类 flexbox 的布局组合与样式最终把侧边栏、页头、标签页和问题卡片组装成一个精致的静态界面。欢迎来到机器世界模拟一颗 CPU调试一台飞向比邻星的探测器本来就够难了——Trailblazer 1 团队还弄丢了飞行软件的源代码和文档它们是在云盘空间不足时被删除的而所有人都以为另一个部门还留着副本。RTFM 通信计算机的存储器可能已被宇宙射线打坏在没有源码、没有文档、又碰不到硬件的情况下看清它的软件究竟在做什么的唯一办法就是把这颗 CPU 本身建模出来。你将从取指—译码—执行循环开始构建一个逐条执行航天器机器码指令的模拟器。证明我的 Rust NVR 不漏内存结果它漏了作者本想证明自己的 Rust NVR 不漏内存结果却发现了无界增长——macOS 的 leaks 和 Clang LeakSanitizer 都看不见这种增长因为数据仍然可达只有在无人值守运行数周之后才会造成真正的内存压力。Electron 的 PartitionAlloc 垫片把每一次 Rust 分配都路由到与前端共享的同一个分区中抹掉了分配的来源信息而 Chromium 的堆剖析器是为一次性排查设计的并不适合常驻的现场指标采集。文章介绍了如何为发布前的浸泡测试构建可绘图的内存指标以及如何定位并修复这个泄漏。绝不能出错的软件为儿童用药剂量计算器做属性测试计算出 4.025 mL 这样的剂量是没有意义的——照护者的注射器只有半毫升刻度因此 favi-child 这个把 200 mg 法匹拉韦片剂配成儿童混悬液的 Rust 计算器会返回 4.0 mL并容忍 1 mg 的偏差。精确算术与真实注射器能抽取的量之间的这道鸿沟正是这段代码属于安全关键的原因一个家庭会依据它的输出给孩子用药因此每个方案都必须是可量取的、能装进容器的并且让偏差最小。读者将看到作者为什么遍历每一组可行的药片加水组合而不是套用公式、total_cmp 如何为 f64 结果排序以及属性测试如何证明这些不变量。用 GPUI 的 Canvas 绘制图形一个本应贴合面板圆角顶边的进度条却总是把圆角盖住——无论怎么调整圆角样式或挪动这个动画 div 都无济于事最终的解决办法是把它画到 GPUI 的 canvas 上也就是这个框架自己用来渲染 UI 的同一个底层图元。当一个元素必须继承另一个元素的几何形状时组件的样式系统就失效了而 GPUI 除了自己绘制之外没有留下任何逃生出口。文章逐步讲解了 canvas() 的 prepaint/paint 这对方法以及用 PathBuilder 的 move_to、line_to、close() 绘制线条、矩形和其他基础图形。彻底搞懂 Rust 的 Pin把值装进 Box 并不会固定它移动这个 Box 时堆上的值确实原地不动但没有任何机制阻止你用 *boxed 直接把它再移出来从而悄悄破坏地址保证。异步 future 是对地址敏感的——它们持有指向自身字段的指针因此首次 poll 之后的一次移动就会让这些自引用悬空然而一个永远不能移动的值毫无用处它甚至连从函数里返回都做不到所以这层保证必须只在使其变得敏感的那一步之后才生效。读者将看到从零重建的简化版 Pin、为什么 PinBoxdyn Future 到处出现以及你能拿它做什么、不能做什么。 Crate of the Week本周 cratebuf_read_splitter本周推荐的 crate 是 buf_read_splitter它可以把一个流拆分分离成多个子流。 foundationRust 标准库验证竞赛如何突破手工证明工程的规模瓶颈要证明 Rust 标准库中不存在未定义行为——大约 34000 个函数、每六周发布一个新版本——从来不是任何单一团队或工具能够负担的工作然而一场众包竞赛已经从四所机构的 21 位外部贡献者那里收到了 450 多个 PR。基础代码的形式化验证通常被锁在某家公司的研究小组内部而一个每六周就变动一次的标准库会跑赢任何固定的证明工作。读者将看到这场竞赛在 RustConf 2026 之前的进展报告带有明确目标、清晰成功标准和金钱奖励的离散挑战如何让这项工作规模化以及 Kani、ESBMC、VeriFast 和 Flux 这四款验证工具是如何接入持续集成的。欢迎 Rust 项目经理 Tomáš Šedovič 加入 Rust 基金会团队Rust 领导力委员会现在全职付薪聘请一个人其工作内容包括做会议记录、确保没有任何事项被遗漏。Tomáš Šedovič 此前作为承包商在 Libs、Lang、Cargo、Types、FLS 和领导力委员会的会议上做的正是这些事如今 Rust 基金会把他转为正式员工经费来自项目优先事项预算。Rust 的治理依赖数十个志愿者团队协调债因此悄然累积行动项停滞、决策无人记录而 Rust for Linux 和 CPython 这样的跨语言协作则失去了联络人。读者将看到设立这一职位的理由、Tomáš 覆盖项目目标团队与跨生态联络工作的职责范围以及 CEO Rebecca Rumbul 对正式雇员化所释放信号的解读。欢迎 Jess Izen 出任 Rust 基金会驻场工程师在接下来的一年里Rust 基金会获得了一位全职工程师却不必动用那些用于支付维护者薪酬的资金Jess Izenjlizen以驻场工程师的身份加入同时保留 AWS 雇员身份。Rust 共享基础设施和社区库的需求已超出志愿者的维护能力而 Jess 来自 AWS 的 Rust 语言团队——负责运维 Amazon 内部的 crates.io 镜像、维护 axum、tower-http 和 dial9此前还在 AWS WAF 团队构建过 anti-DDoS 与机器人流量管控服务。读者将了解她的背景以及她将与基金会安全工程师共同设计的 crates.io 改进方案。 newsletters《嵌入式 Rustacean》第 79 期 researchRust 中的函数式状态机Typestate 与 Newtype 模式往期精选Rust周刊2026W35 | never type 稳定化、next solver 登 nightly、arrayref 供应链投毒、min-publish-age 转正Rust周刊2026W34 | tokio_with_wasm 入驻浏览器、Cargo 默认 -Zembed-metadatano、extern “custom” 稳定化、OxiSH 内存安全 SSHRust周刊2026W33 | RFC 3323 征集测试、polonius 上线 nightly、Bevy 六周年、fearless_simd v0.7、Box::take 稳定化Java周刊2026W35 | JDK 28 值类、Spring Boot 4.1.1、Spring AI 2.0.1、Quarkus 3.39.1、GraalVM 25.3.4.12026年8月编程语言排行榜MATLAB 首次跌出前20Node.js周刊2026W35 | Node.js 26.8.0发布、pnpm 12 Rust重写、Bun 1.4发布、Solid 2.0 RC、SvelteKit 3 RC阅读原文