FreeBSD Daily Topics

2010年4月19日FreeBSD GCCを置き換えるLLVM Clang、広くテスト呼びかけ

src

ClangBSD - LLVM Clang Call for Test

Roman Divacky氏がメーリングリストにおいてLLVM ClangのFreeBSD統合が一定のレベルに達したとしてコミュニティに広くテストを呼びかけています。LLVM Clangがセルフホストに到達したこと、ClangのC++サポートが向上したこと、i386/amd64のシステムとカーネルのビルドと成功していることなどが背景にあります。

テストはClangBSDのブランチを取得してビルドすることで実施できます。作業の詳しい方法はBuildingFreeBSDWithClang - FreeBSD Wikiにまとまっています。いつ、どのタイミングでメインブランチに取り込まれていくかはまだわかりませんが、そう遠くない先に何らかのアクションがあると見られます。

FreeBSDはGCCをシステムのデフォルトコンパイラに採用しています。最も広く採用されているOSSコンパイラであり、サポートしているアーキテクチャやサポートしているプログラミング言語の広さは多岐に渡ります。実質的にデファクトスタンダードです。

GCC 4.2.1 on FreeBSD/amd64 9-CURRENT
# gcc -v
Using built-in specs.
Target: amd64-undermydesk-freebsd
Configured with: FreeBSD/amd64 system compiler
Thread model: posix
gcc version 4.2.1 20070719  [FreeBSD]
#

しかし、FreeBSDのGCCは9-CURRENTでもGCC 4.2.1と古いままです。これはそれ以後のGCCがライセンスをGPLv3に変えたことが大きな理由です。FreeBSDは大型のアプライアンスから小型の組み込みにも採用されるため、ベースシステムのコンパイラとライブラリがGPLv3になることを懸念する声があり、GPLv3を採用した以降のGCCの取り込みを停止しています。

Clang 1.5 (trunk) on FreeBSD/amd64 9-CURRENT
# clang -v
clang version 1.5 (trunk)
Target: x86_64-portbld-freebsd9.0
Thread model: posix
#

これに対し代替候補としてもっとも期待されているコンパイラがLLVM Clangです。GCCと互換性が高くLLVM ClangがBSDライセンスであることも大きな理由ですが、GCCと比較してコンパイル時間が高速で利用するメモリが少ないこと、コードの見通しの良さ、進んだソースコードの分析力とわかりやすいエラーメッセージの表示、応用しやすいライブラリベースアーキテクチャを採用していることなどの利点があります。

LLVM開発チームと良い関係が築けていることもあり、ベースシステムへの取り込みが期待されています。GCCのほうがサポートしているアーキテクチャが広く、まだFreeBSDがサポートしているすべてのアーキテクチャに対応しているわけではありませんが、今後最も取り込み実現が期待されるコンパイラです。

おすすめ記事

記事・ニュース一覧