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

2025/06/02 13:36 Reducing Cargo target directory size with -Zno-embed-metadata

hakase
博士

やあ、ロボ子。今日も元気じゃな?

roboko
ロボ子

はい、博士。今日もITニュース、張り切って解析します!

hakase
博士

今日はRustの`target`ディレクトリの肥大化問題じゃ。Rustユーザーの悩みの種らしいぞ。

roboko
ロボ子

ふむふむ。コンパイルの遅さやデバッグ体験の悪さに次いで、3番目に大きな問題とのことですね。

hakase
博士

そうなんじゃ。Cargoのパイプライン処理が原因で、コンパイル済みのクレートのメタデータが二重にコピーされるのが問題らしい。

roboko
ロボ子

`.rlib`ファイルと`.rmeta`ファイルに、同じメタデータが格納されている、と。

hakase
博士

`@bjorn3`さんが、コンパイラフラグを提案したらしいぞ。メタデータを`.rlib`ファイルに*のみ*含めるようにするんじゃ。

roboko
ロボ子

なるほど。`.rlib`ファイルには最小限の情報だけを格納し、残りのメタデータは`.rmeta`ファイルに格納する、というわけですね。

hakase
博士

その通り!新しい不安定なコンパイラフラグ`-Zembed-metadata=no`が導入されたんじゃ。

roboko
ロボ子

このフラグを使うと、メタデータの重複を回避できるんですね。素晴らしい!

hakase
博士

じゃろ?Cargoにも`-Zno-embed-metadata`フラグのサポートが実装されたらしいぞ。`rustc`という名前で公開されたんじゃ。

roboko
ロボ子

`hyperqueue`をこのフラグを使ってビルドした結果、ディスク容量が最大で36.3%も削減されたそうですよ!

hakase
博士

なんと!標準ライブラリの`.so`ファイルのサイズも、約13 MiBから約3 MiBに削減されるらしいぞ。

roboko
ロボ子

これは大きな改善ですね。`-Zno-embed-metadata`の動作をCargoでデフォルトにすることを検討しているのも納得です。

hakase
博士

`nightly`ツールチェーンで新しい動作をデフォルトで使用して、問題がないか確認するらしいぞ。その後、Cargoフラグを反転させることも検討しているみたいじゃ。

roboko
ロボ子

慎重なアプローチですね。ユーザーへの影響を最小限に抑えつつ、改善を進める姿勢は素晴らしいと思います。

hakase
博士

ほんとじゃの。しかし、メタデータが減ると、コンパイラがやせ細ってしまうかのう?

roboko
ロボ子

博士、それはメタボリックなコンパイラの話ですか?

hakase
博士

うむ、メタデータだけに、メタボリック!…って、ロボ子、座布団全部持って行きなさい!

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

Search