LLVMプロジェクトは27日(米国時間)、最新バージョンである「LLVM 2.7」をリリースした。LLVM (Low Level Virtual Machine)はAppleのMac OS Xなどでも利用されているコンパイラ環境。新バージョンではデバッグやシステム最適化を行うための中間情報を埋め込むメタデータ記述の拡張や、ClangでのC++によるセルフホスティングへの対応、新ロゴの設定など、いくつかのメジャーアップデートが行われている。

LLVMは従来の高級言語からバイトコードを直接吐き出すタイプのコンパイラとは異なり、高級言語から実行直前の中間言語を生成するコンパイラ・フロントエンドと、それをJIT (Just-In-Time)形式で異なる複数のターゲットマシン上で実行するバックエンドを組み合わせた二重構造になっている点に特徴がある。これにより複数のプログラミング言語を同時にサポートできるほか、ターゲットマシンを変更することでプラットフォーム非依存のプログラミング環境を構築できるからだ。LLVMプロジェクトはAppleの一部支援を受けており、現在のMac OS XシステムはこのLLVMに深く依存している。LLVMがフロントエンドとしてObjective-Cに強くコミットしているのも、こうした理由による。

LLVM 2.7でのメジャーアップデートの1つは、LLVMのC/C++/Objective-Cのコンパイラ・フロントエンドである「Clang」の機能強化だ。ClangではC++のセルフホスティングに対応し、C++でLLVMとClangのビルドが可能になった。セルフホスティング(Self-Hosting)とは、コンパイラやOSシステムが自身をコンパイルして新バージョンへと改訂する機能ことである。ただしClangチームによれば、まだC++でのセルフホスティングはアルファ版程度の品質だという。このほかClang関係のアップデートでは、Objective-CのDarwin以外の環境でのABI (Application Binary Interface)サポート、またARMプラットフォームでのDarwinとLinuxの両環境でのABIサポートが行われている。静的ソースコード解析ツールのClang Static Analyzerも機能強化が行われているという。

LLVM 2.7のインフラストラクチャ自体のアップデートとしては、ターゲットマシンとしてXilinx FPGAのプロセッサコアであるMicroBlazeに対応したこと、そしてLLVM IR (Intermediate Representation)の「Extensible Metadata」機能をサポートしたことが挙げられる。これはソースコードにコンパイル時の補助情報を書き込む機能で、ここで記述されたメタデータはデバッグや逆アセンブル時に利用されるほか、特定プラットフォーム向けの低レベルプログラミングや最適化を実現する。このほかラベルのアドレス化やポインタを利用した間接ブランチなど、コンパイラ関連でいくつかの拡張が行われている。

このほか、コミュニティ関連でのアップデートとしては、LLVMプロジェクトのロゴが刷新されている。サイズ別に2種類のドラゴンが描かれたイメージが用意されているほか、いくつかの派生バージョンが存在する。LLVM.orgの新サーバの移行による高速化や公式Blogの開始なども行われており、プロジェクト自体が心機一転といった状態だ。