Rust 1.90:rustc 在 x86_64 Linux 上切换到 LLD 作为默认链接器

Rust构建工具DevOps

关键更新

Rust 项目宣布,从 Rust 1.90.0 稳定版(计划于 2025-09-18 发布)开始,rustc 将默认使用 LLVM LLD 链接器来支持 x86_64-unknown-linux-gnu 目标。在基准测试中,此更改将增量构建的链接时间减少了多达 7 倍(ripgrep 示例显示增量调试重建的端到端速度提升约 40%,全调试构建的提升约 20%)。新的默认设置已经在 1.90 beta 中可用——项目现在应针对 beta 进行测试,并在观察到链接器回归时提交问题。

重要性

对于 Linux Rust 开发者和 CI 系统来说,这是一个切实可感的性能提升:链接通常是大型二进制文件和调试构建的构建时间的主要部分,因此更快的链接直接缩短了编辑-编译周期和 CI 运行时间。对于团队来说,这意味着更小的 CI 队列、更低的运行时间和成本,以及在不更改代码的情况下更快的开发者迭代。由于 rust-lld 随工具链一起发布,您无需安装系统链接器即可受益;然而,此更改是特定于目标的(x86_64 Linux),并不是其他平台的全局工具链行为。

存在一个小的兼容性问题:在少数情况下,LLD 与 GNU ld 并不是逐字节兼容,因此某些依赖于旧版链接器语义的 crate 可能需要链接标志(或选择退出)。如果您遇到问题,可以通过设置 RUSTFLAGS 或 .cargo/config.toml 为 -Clinker-features=-lld(或将等效标志添加到您的 CI 构建中)来按项目恢复到先前的行为。实际上,建议的立即行动是:在 CI 中测试您的代码库在 1.90 beta 上,更新 CI 中使用的任何固定 Docker 镜像/rustup 工具链配置到 beta/stable 通道以进行验证,并仅在出现真实链接器不兼容时在 CI 模板中添加选择退出标志。同时监控已经资源受限的长时间运行的构建,因为 LLD 的并行性可能会在链接期间增加 CPU 使用率;如果这影响到您的运行器,请限制并行性或暂时使用选择退出。

这一变化是针对 Linux Rust 开发的低风险、高回报的工具改进,具有明确的操作和开发者生产力收益;通过在 CI 中运行 beta 进行准备,关注链接时间回归,并在必要时使用文档中提供的选择退出标志。

来源

继续阅读