【Rust日报】2026-08-30 Rustdoc 一周提速 33%

💡 原文中文,约1900字,阅读约需5分钟。
📝

内容提要

Rustdoc通过先过滤再构建trait impl,并限制primitive和synthetic impl,平均提速约33%,部分crate提升40%。该优化已进入nightly,计划随Rust 1.99发布。

🔎

延伸解读

优化思路:先过滤再构建

Rustdoc 的提速关键在于改变了 trait impl 的处理顺序:原先会对依赖图中几乎所有 trait impl 先构建再过滤,现在改为先过滤再构建。这一改动单独带来约 20% 的 wall-time 改善和 12% 的 Max RSS 下降。这种先筛选再处理的方式减少了不必要的计算,对其他类似场景也有借鉴意义。

多项优化叠加效果显著

除了核心的过滤优化,Rustdoc 还通过限制 primitive impl 仅在本地 primitive 上运行(约 12% 提升)、只对文档可见类型做 auto/blanket synthetic impl(约 6%)、避免对不需内联的 impl 调用 param_env(约 18%)等多项改进,最终实现平均约 33% 的加速。这些优化相互独立,叠加后效果显著,体现了性能调优中多管齐下的策略。

性能提升的适用范围

虽然平均 wall-time 降低约 25%(对应约 33% 加速),但不同 crate 的提升幅度不同:hyper、bitmaps 等真实 crate 最高约 40%,而微基准 helloworld 最高约 60%。这表明优化效果与 crate 的依赖结构和 trait impl 数量相关,并非所有项目都能获得同等收益。

Q&A

Rustdoc 最近在性能上有什么改进?

Rustdoc 通过一系列 PR 优化,平均 wall-time 降低约 25%(对应约 33% 加速),部分 crate 提升 40%,微基准最高 60%。改进已进入 nightly,计划随 Rust 1.99 发布。

Rustdoc 提速的具体优化方法是什么?

主要优化包括:将 collect_trait_impls 中先构建再过滤改为先过滤再构建;限制 primitive impl 仅在本地 primitive 上运行;只对文档可见类型做 auto/blanket synthetic impl;避免对不需内联的 impl 调用 param_env。

Rustdoc 提速的起因是什么?

起因是 Crater 在 beta 上发现部分 crate 在很低 recursion_limit 时 Rustc 可通过,但 Rustdoc 因内联外部 trait 失败。排查显示 collect_trait_impls 会对整个依赖图中几乎所有 trait impl 先 build_impl 再过滤,导致性能问题。

Apache Iggy 是什么?它最近有什么重要进展?

Apache Iggy 是一个用 Rust 编写的持久化消息流平台,采用 thread-per-core、shared-nothing 架构,使用 Linux io_uring 和 VSR 共识。它于 2026-08-19 从 Apache Incubator 毕业,成为 Apache Software Foundation 顶级项目(TLP)。

Apache Iggy 有哪些技术特点?

Iggy 采用 thread-per-core、shared-nothing 架构,使用 Linux io_uring 做磁盘/网络 I/O,共识基于 Viewstamped Replication Revisited(VSR)。协议侧原生支持 TCP、QUIC、HTTP 与 WebSocket,面向可预测超低延迟与较小基础设施占用。

Glacex 是什么?它目前有哪些功能?

Glacex 是一个用 Rust 从零实现的 GPU 加速 immediate-mode UI 库,基于 winit 与 wgpu。当前支持实例化 GPU 渲染、SDF 圆角形状、glyphon 文本渲染、命中测试与交互、Row/Column 布局、Solid/Gradient 填充,以及多种控件如 button、checkbox、radio、label、text input 等。

COSMolKit 是什么?它有哪些功能?

COSMolKit 是 Rust 原生的化学信息学与结构生物学工具包,提供 Python 绑定和 WASM 支持。覆盖分子图操作、SMILES/SMARTS、分子文件工作流、2D 描绘、3D 构象生成、UFF/MMFF 优化、指纹、描述符、InChI、批处理与蛋白结构 API 等。

COSMolKit 如何保证与 RDKit 的兼容性?

COSMolKit 以 RDKit 兼容行为作为正确性下限:在有源码参考时尽量按 RDKit 逻辑移植,并用差异测试对照;大规模验证语料为 ChEMBL 37(约 290 万条记录),对照 RDKit 2026.03.1。

🏷️

标签

➡️

继续阅读