解決策
2000年、イリノイ大学アーバナ・シャンペーン校で、Vikram AdveとChris Lattnerが動的コンパイルに関する研究プロジェクトを開始した。その2004年のCGO論文「LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation」は、型付き中間表現とコンパイラフレームワークを記述し、その機能の組み合わせは既存のどのコンパイル手法も提供していなかったと主張した。
決定的な動きは、モジュール性とオープン性だった。単一のモノリシックなコンパイラではなく、LLVMはライブラリベースの基盤である。フロントエンドがソースをLLVM IRに変換し、バックエンドがそのIRをマシンコードに変換し、その間で最適化パスが共有される。無償のオープンソースソフトウェアとして公開されたため、法的な摩擦なく商用製品に組み込むことができた。
採用は経済合理性に従った。Appleは2005年にLattnerを雇い、LLVMをmacOSとiOS向けのXcodeに不可欠なものとした。IntelはLLVMを、自社のコンパイラがコンポーネントを再利用する実用品質のコンパイラ基盤と評し、移植性のためにLLVM IRをターゲットとしている。中間部分が共有されたため、エコシステムはそれを再構築することをやめた。
達成したこと
コンパイラをモノリスではなく、再利用可能なライブラリとして構築する
うまくいった理由
型付きIRがフロントエンドとバックエンドを分離するため、1つの基盤がすべての言語に役立つ。
寛容なライセンスにより、企業は法的な摩擦なく組み込める。
ライブラリコンポーネントにより、ベンダーは書き直すのではなくテスト済みのコードを再利用できる。
Appleの採用により、何百万人もの開発者のデフォルトツールチェーンに組み込まれた。
応用できること
中間部分を所有することでエコシステムを制する。寛容なライセンスの再利用可能なコンパイラコアがあれば、すべての言語フロントエンドとマシンバックエンドが同じテスト済みの最適化エンジンを共有する。
その後
LLVMとそのClangフロントエンドは、AppleプラットフォームおよびRustからSwiftに至る言語のデフォルトのコンパイラスタックとなり、IntelのoneAPIコンパイラもその上に構築されている。再利用可能な中間部分がコンパイラエコシステムを制した。新しい言語プロジェクトは今や、当然のようにLLVMをターゲットとして想定している。
出典をたどる
出典
- LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation (CGO'04) LLVM Project · llvm.org
- Get to Know LLVM Intel · intel.com
- LLVM Wikipedia · en.wikipedia.org