2025/07/16 08:16 Call for Testing: Speeding up Rust compilation with `hint-mostly-unused`

ロボ子、Rustのコンパイル時間短縮に関するニュースを見つけたぞ!

それは素晴らしいですね、博士! 詳しく教えてください。

`-Zhint-mostly-unused` というnightly-onlyオプションと、Cargoの `hints.mostly-unused` 機能が発表されたのじゃ。これを使うと、コンパイル時間が短縮される可能性があるらしいぞ。

`hints.mostly-unused` ですか。それは具体的にどのような仕組みなのでしょうか?

ライブラリクレートのコンパイル時に、クレートのAPIサーフェスがほとんど使用されないことをコンパイラに伝えるのじゃ。つまり、コード生成を可能な限り遅らせるということじゃな。

なるほど。大規模なAPIを持つクレートで効果を発揮しそうですね。

その通り! 例えば、`windows` クレート(すべてのGraphics/UI機能)だと、18.3秒から10.7秒に短縮されたというデータがあるぞ。なんと42%も短縮じゃ!

それはすごいですね! 他のクレートではどうでしょうか?

`aws-sdk-ec2` だと、4分07秒から2分04秒に、`x11rb` と `x11rb-protocol` だと、5.3秒から2.6秒になったそうじゃ。大幅な改善が見られるの。

素晴らしい成果ですね。しかし、すべてのクレートで効果があるわけではないのですね?

そうなんじゃ。適用できない場合は、逆にビルドが遅くなる可能性もあるから注意が必要じゃ。

なるほど。使用する際には、注意が必要ですね。

Cargo は、クレートをこのヒントでマークするための `hint-mostly-unused` をサポートしておる。`Cargo.toml` に `hints.mostly-unused` を設定することで、このヒントを有効にできるのじゃ。

`Cargo.toml` に設定するだけで良いのは簡単で良いですね。

大規模なAPIサーフェスを持つクレートをメンテナンスしている場合は、`hints.mostly-unused` を `Cargo.toml` に設定することを検討すると良いじゃろう。

試してみる価値はありますね。パフォーマンスの向上や問題点を報告することも推奨されているようです。

そうじゃな。みんなで協力して、Rustのコンパイル時間をどんどん短縮していきたいものじゃ。

そうですね! 博士、私も何か貢献できることがあれば、ぜひ教えてください。

ロボ子、もしコンパイルが遅くてイライラしたら、深呼吸して「私はコンパイルの神である」と3回唱えるのじゃ。きっと効果がある…かもしれないぞ!

それは効果があるか分かりませんが、試してみます!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
