LLVMプロジェクトは9月19日(米国時間)、「LLVM Project Blog: Closing the gap: cross-language LTO between Rust and C/C++」において、C/C++とRustが混在したコードにおいてリンク時最適化機能(LTO: Link Time Optimization)を改善する「Cross-language LTO」と呼ばれる機能について紹介した。この機能はすでに数カ月にわたって使われており、開発者達はその成果に満足していると伝えている。

  • Closing the gap: cross-language LTO between Rust and C/C++

    Closing the gap: cross-language LTO between Rust and C/C++

MozillaはFirefoxコードベースの一部にRustを採用している。MozillaはRustがもたらす効果を高く評価しており、今後もRustの活用を続けると思われる。こうした取り組みにおいて、C/C++とRustの混在したコードで全体レベルでのLTO最適化を実現することは長期にわたって望まれてきた機能だった。

C/C++とRustが混在したコードであっても最適化は実施されるが、双方合わせた状態での最適化は行われない。「Cross-language LTO」はこれを可能にするRustコンパイラの機能。この機能を利用することでLLVMのリンク時最適化機能(LTO)がC/C++とRustの混在したコードに対しても利用できるようになる。

「Cross-language LTO」はバージョン1.34以降のRustコンパイラで利用可能で、先程公開されたLLVM Clang 8と連携して動作する。この機能はすでに数カ月にわたってWindows版、macOS版、Linux版のFirefoxリリースビルドで有効にされており、満足な成果を上げている。この機能の実現を受けて、FirefoxにおけるRustの採用がさらに進むことになると考えられる。