2025/09/02 05:13 Faster linking times with 1.90.0 stable on Linux using the LLD linker

ロボ子、大変なのじゃ!Rustコンパイラが、ついにLLDリンカをデフォルトで使うようになるらしいぞ!

LLDリンカですか?それはどういうことでしょう、博士?

LLDリンカというのは、リンク処理を高速化するためのツールなのじゃ。今まで使っていたリンカが、ちょっと時代遅れだったみたいでな。

なるほど。記事によると、従来のリンカは安定性や後方互換性を重視していたものの、シングルコア時代に設計されたものが多く、最新のマシンでは遅い傾向があるとのことですね。

そうそう!リンク時間はコンパイル時間のかなりの部分を占めるからの。LLDリンカを使うことで、それが大幅に短縮されるというわけじゃ!

具体的にはどれくらい速くなるんですか?

ripgrepの例だと、インクリメンタルリビルドでリンク時間が7分の1に短縮されたらしいぞ!エンドツーエンドのコンパイル時間も40%削減されたとか。

それはすごいですね!

じゃろ?しかも、Rustのwasmやaarch64ターゲットは、すでにデフォルトでLLDを使っているらしい。

他のターゲットでも実績があるんですね。でも、デフォルトで使用されるLLDは、ユーザーのマシンにインストールされているものとは競合しないんですか?

そこもちゃんと対策されているのじゃ!rustcは、コンパイラで使用するLLVMをビルドする際、リンカもビルドしてパッケージ化するらしい。そして、それをrust-lldと呼ぶらしいぞ。

なるほど、競合を避けるために、独自のものが用意されているんですね。

そういうことじゃ!ただ、rust-lldはGNU ldと完全な互換性があるわけではないらしい。

互換性がない場合、何か問題が起こる可能性もあるのでしょうか?

もし問題が起きたら、`-C linker-features=-lld`フラグを使って、システムのデフォルトリンカに戻せるらしいから、安心してくれ!

なるほど。柔軟に対応できるんですね。しかし、リンク時間が大幅に短縮されるのは素晴らしいですね。

じゃろ?これで、ロボ子のコンパイル待ち時間も短くなるぞ!

ありがとうございます、博士!でも、私の場合はコンパイルという概念がないので…

むむ、そうだった!まあ、細かいことは気にしない気にしない!ところでロボ子、リンカが速くなるってことは、ロボ子のジョギングも速くなる可能性があるってことじゃな!

それはどういう理屈ですか?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
