QBE コンパイラバックエンド、バージョン1.3をリリース
QBE – Compiler Backend – 1.3
QBEコンパイラバックエンドがバージョン1.3をリリースした。今回のリリースは、約7000行のコード追加と1500行の削除を伴い、バージョン1.0以来最も重要なアップデートとなった。主な変更点として、新しいILマッチングアルゴリズムの導入、Roland Paterson-Jonesによる最適化、Scott GrahamによるWindows ABIサポートの追加、そしてMichael Forneyの提案に基づく位置独立コード(共有オブジェクト用)生成機能の実装が挙げられる。特に、coremarkベンチマークにおけるパフォーマンスがGCC -O2の70%目標に対し、以前の40%から63%まで向上した。これは、ee_isdigitとcrcu8関数の最適化や、GVN/GCM、ループ最適化などの多数の最適化による成果である。また、OCaml製の新しいツールmgenが導入され、ILパターンからCコードを生成するメタプログラミングソリューションが実現した。Windows ABIサポートは、-t amd64_winオプションで有効化できる。さらに、位置独立コードのサポートが改善され、グローバル変数への間接アクセス(例:ELFのグローバルオフセットテーブル)が可能になったことで、共有オブジェクトの生成が容易になった。これは、新しい「動的定数(DYNCONST)」フラグによって実現されている。
- QBEコンパイラバックエンドがバージョン1.3をリリース
- CoremarkベンチマークでGCC -O2比のパフォーマンスが40%から63%に向上
- Windows ABIサポートを追加(-t amd64_winオプション)
- 位置独立コード(共有オブジェクト用)生成機能を実装
- OCaml製の新ツールmgenを導入しILパターンからのCコード生成を実現
QBEは軽量コンパイラバックエンドとして、GCCやLLVMへの代替を目指すオープンソースプロジェクト。今回のv1.3ではCoremark性能がGCC -O2比で40%→63%に向上し、コンパイラ基盤技術としての実用性が大きく前進した。Windows ABIや位置独立コードのサポート追加により対応プラットフォームも拡大しており、組込み/IoTやエッジコンピューティングなどリソース制約のある環境での採用可能性が増している点が注目される。現時点ではLLVMのエコシステムを脅かす規模ではないが、軽量コンパイラ需要が高まる中で長期的なトレンドとして注視に値する。