找回密码
立即注册
搜索
发回帖 发新帖

5100

积分

0

好友

652

主题
发表于 昨天 21:34 | 查看: 13| 回复: 0

10 月 19 日,rustc 性能方向开发者发布了一篇年度复盘。2026 不是 Rust 编译器动手最多的一年,而是多个长期投入集中结果的一年。下一代 trait solver、Polonius 借用检查器、并行前端、LLVM 23、MIR move elimination——清单很长,这篇拆开看每件事到底做了什么。

为什么 2026 扎堆收果

作者开头给了背景:2026 的特殊不是工作量,而是多个不同工程同时走到最后一步。编译器开发里有句老话:真正的大事从来不是某个大爆炸项目,而是长期投资健康体系带来的累积。这句话在后面每一条都能对上。

rustc 2026 收果清单:solver / Polonius / 并行前端 / LLVM 23 / MIR move / 共享产物,六条战线同时收口

下一代 trait solver:近 10 年的工程

分量最重的一件。类型系统的一大块重写,以各种形态推进了近 10 年。它修掉一批健全性 bug,也解锁了长期卡住的功能和修复,包括作者点名的 async Rust 大问题,以及 impl Trait 的各种限制。

作者原话很直白:这件事的分量容易被低估。它解决了一大块多位编译器开发者念叨多年的技术债,同时释放出一批对类型系统理解很深的人去做新东西。队列里排着的包括许多日常痛点,有些看起来互不相关,但都卡在同一个旧 solver 后面。

Polonius:让“编不过”的代码编得过

另一个长期工程。新一代 借用检查器 的核心效果,是让更多代码通过编译,并解锁相关特性。作者特别提到“希望有一天”能实现内部引用。他还比较了两件事的分量:新 solver 在编译器里是更大的一块,Polonius 影响小一些,但同样是大事。

性能线:从停滞到多点开花

作者本身主做编译器性能,因此这段最密集。先交代背景:至少在结果上停滞了 1 到 2 年,然后突然同时有很多事开始动。

并行前端:很老的项目,搁置过几年。新贡献者把它重新拉起,一路磨掉大量棘手问题。目前由 @petrochenkov 驱动的项目目标正接近稳定。作者评价是:“没人对设计满意,但可见未来没有更好的替代,所以硬磨。”

LLVM 23 的意外收益:这条被单列。LLVM 升级对 rustc 性能的影响,历史表现很糟。LLVM 10 曾引入约 10% 回退,之后 LLVM 负责人专门写博客喊“让 LLVM 重新变快”。后来 LLVM 能更早抓到回退,升级结果从“不太坏”到“好坏参半”。到 22 版,icount 基准转绿,但墙钟几乎全红,仍是“有条件的正面”。23 版几乎全面正向,来得“出乎意料地大”。作者归因:LLVM 侧最近真的在做优化,而不是边加特性边保证不回归。

微优化与回退治理:一批小优化正在落地。作者观察到一个现象:交叉授粉——某个人脑中的想法在几个人之间流转,大家看着彼此的 PR 受启发,继续做相关的事情。回退治理也成熟了,merge 管理者直接做性能 triage,响应时间变短,triage 结果又会反过来影响 PR 的 rollup 分组。作者补了一句:“康威定律仍然是定律。”

几个“看着像小项、实际解锁大事”的活

MIR move elimination:今年不知从哪冒出来的 MIR 层优化,让编译器消掉 LLVM 不擅长优化的拷贝,编译期和运行期都更快。它放在 MIR 层有意义,因为 Rust 侧掌握“对 Rust 是否合法”的完整信息,而且确实需要动一点 MIR 语义。为什么 Rust 特别需要它?因为 Rust 生成的 move 比 C++ 多,而 C++ 是 LLVM 的主要目标语言。

Polymorphization:作者说这项他关注很久,它是有史以来影响最大的编译器性能优化之一,但实现极难,目前是第三个实验。原版目标只是避免重复或冗余的单态化,属纯编译期优化,无运行时影响。Swift 风格版则是泛化所有泛型实例,把泛型参数的 layout 当参数传递,会带来运行时成本,通过 compiler flag 调节。下一代 solver 也会启用它。两条路线撞在同一批问题上,相关的工作对两边都有用。

incremental 系统重构:让 cargo 在 check 和 build 之间共享产物。这是他们念叨多年的事。目标其实更通用,但“check 与 build 共享产物”是目前最容易辨认的成果。

新 cargo build-dir 布局:已在 nightly 上把 target 目录缩小 5% 到 30%,具体幅度随工作负载变化。更大的意义是解锁 target 目录的细粒度加锁和跨 workspace 缓存。

no-link / link-only 两个 flag 的修复:让 build scripts 和 proc macros 可以流水线化。作者评价如出一辙:又是一堆内部问题和架构问题清完,一件大事解锁。

架构线:属性统一收尾

两年多前由 @jdonszelmann 发起的属性表示与检查统一清理,在文章发布前几天迁完最后一个属性。收益是属性检查显著改善,并解锁诊断改进等后续工作。query 系统也被 @Zalathar 和 @nnethercote 清理过一遍。除性能改善外,更重要的是“好理解了”。它一直是代码库里最吓人的部分之一,理解门槛降低了,改进才有可能。

组织层的变化

复盘里还说到元层面:Rust 项目正在试新的组织框架“project goals”。经过几轮迭代,它到了稳态,上面那份清单基本就是这个框架跑出来的产物。资金侧同时有三件事在动:资金开始显式挂到 project goals、新的 Maintainers in Residence 项目、新设资金团队。作者特别点名 Hexcat 雇人的产出:过去一年不少成果出自他们雇佣的人。

作者自身的转向:这也是复盘最后一节,题眼“and me”。他从围观 perf triage,到参与其中,再到今年正式决定全职投入 Rust 项目。起因是 Rust All Hands 邀请。他写得很克制,核心一句是:和真正在干这件事的人当面聊,是隔着屏幕给不了的体验。接下来,他会在 target 目录缩减的项目目标上开工——如果资金足够,同时申请 Maintainer in Residence。

判断:这份复盘的价值在于“清单本身就是结论”。十年的 solver、Polonius、并行前端、性能治理,四五个战线同时收口,说明投资结构已经变了,而不是某次冲刺。对使用者来说,可感的变化是:trait 推断和借用报错在放宽,编译时间在加快,check 和 build 共享产物也在靠拢。想跟进编译器内部进展,goals.rust-lang.org/2026 那几页是原始出处。

FAQ

这些改动现在能用到吗? solver 和 Polonius 仍在项目目标里,藏在 nightly 门后。并行前端接近稳定但尚未稳定。target dir 缩减已在 nightly 上生效,幅度约 5% 到 30%。stable 用户最近能感受到的,是性能回退治理让每次升级更稳定。

为什么“停滞 1 到 2 年”之后突然提速? 作者给的解释是人力结构:新贡献者进来,老贡献者腾出手做性能,工具投入加架构清理腾出空间。三者叠加,而不是某一个单点突破。

“意外地大”的 LLVM 23 收益能持续吗? 作者没有打包票。他写的是:“我理解是 LLVM 侧最近真的在做优化,而不是加特性。”方向在,但幅度会随 LLVM 版本波动。关注 perf.rust-lang.org 上的 LLVM 升级数据即可。

参考

  • 复盘原文: yoyo-code.com (10-19 发布,作者为 rustc 性能方向开发者)
  • 项目目标: goals.rust-lang.org/2026 (next-solver / polonius / parallel-front-end / mir-move-elimination / polymorphization / incremental-system-rethought)
  • LLVM 升级性能数据: perf.rust-lang.org



上一篇:Cloudflare 亲自下场做 tsrs:TypeScript 编译器 Rust 移植同配置快 8 倍、内存省 70%
下一篇:golangci-lint 接 CI 门禁实测:默认配置漏报 17 个问题
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-22 08:09 , Processed in 0.067607 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表