LLVM
しかし、LLVMへの興味が広がるにつれ、まったく新しいフロントエンドを多数のプログラミング言語向けに開発しようという動きが出てきた。もっとも注目されているのはC、C++、Objective-C、Objective-C++をサポートする新しいコンパイラClangである。主にAppleのサポートを受け、ClangはGCCシステムのC/C++/Objective-C/Objective-C++コンパイラを統合開発環境と統合できマルチスレッドをサポートした現代的なシステムで置き換えることを目指している。GCCでのObjective-C/Objective-C++の開発は衰退気味で、アップルが施した変更は別個にメンテナンスされている。アップルにとっては、自社でコンパイラを開発することにより、第一のObjective-C/Objective-C++実装であり続けながら、LLVMがすでに達成している統合開発環境への統合やその他の現代的な機能への対応といった問題を解決することができる。
Flangは LLVM Project の FORTRAN コンパイラである。旧来の Flang は NVIDIA の nvfortran(元The Portland Group社のpgfortran)の派生であったが、f18プロジェクトとして開発された次世代 Flang は C++17 や MLIR などの新しい技術を採用している。
LLVMは、JavaとJava VMの関係のように、まず仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換する。この時言語やプラットフォームとは独立した最適化を行う。この方法によってLLVMは言語からもアーキテクチャからも独立しており、それぞれに特化した、プログラミング言語固有のモジュールと、マシン向けコード生成部を用意することにより様々な言語アーキテクチャーに対応する。LLVMは積極的にプロシージャ間最適化を行うとともに、静的コンパイラとしてもJITコンパイラとしても使え、開発の様々な段階で使える多数の部品を持っている(JavaバイトコードとCILフロントエンド、Pythonフロントエンド、グラフ彩色式のレジスタ割り付けモジュール、など)。JITコンパイラの場合、実行時に不要な静的分岐を最適化する機能があり、これはプログラムが様々な実行時オプションを持っている場合、強力な最適化手法(部分評価)となる。このため、Mac OS X v10.5ではこれを使ってハードウェア機能がない場合にOpenGLパイプラインを実現している。
LLVM自体はC++で書かれており、イリノイ大学でVikram AdveとChris Lattnerにより2000年に開発が開始されたものである。ライセンス条件はイリノイ大学/NCSAオープンソースライセンスであり、これはBSDライセンスによく似たOSI認証ライセンスである。バージョン9.0.0からはライセンスがLLVM例外付きApache License 2.0に変更された。
↑ "LLVM 17.0.5 Released!"; 作品の使用言語: 英語; 出版日: 2023年11月14日; 閲覧日: 2023年11月14日.
1 2 “LICENSE.TXT”. llvm.org. 2019年9月24日閲覧。
↑ “The LLVM Compiler Infrastructure Project”. 2004年5月3日時点のオリジナルよりアーカイブ。2019年1月16日閲覧。
↑ “The LLVM Compiler Infrastructure Project”. llvm.org. 2019年1月16日閲覧。
↑ The University of Illinois/NCSA Open Source License (NCSA) - Open Source Initiative
↑ 'llvm' Dialect LLVM Project
↑ Composable and Modular Code Generation in MLIR p.6-7 Google 2022年
↑ IRDL: An IR Definition Language for SSA Compilers p.206 Mathieu Fehrら 2022年
↑ 'omp' Dialect LLVM Project
↑ 'acc' Dialect LLVM Project
↑ 'gpu' Dialect LLVM Project
↑ SPIR-V Dialect LLVM Project