萌えハッカーニュースリーダー

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

出典: https://blog.rust-lang.org/inside-rust/2025/07/15/call-for-testing-hint-mostly-unused/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

それは効果があるか分かりませんが、試してみます!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search