FreeBSD、GCC 4.2.1でアップデート停止

| | コメント(0)
FreeBSDは、現在システムコンパイラとツールチェーンの入れ替えを進めている。

FreeBSDはこれまでGCCをシステムのデフォルトコンパイラとして採用してきた。FreeBSDにとってGCCは必要十分なコンパイラだったが、GCCがライセンスをGPL2からGPL3に変更して状況が変わったのだ。
FreeBSDはシステム内でのGCCのアップグレードを、GPL2でリリースされた最後のバージョンGCC 4.2.1で停止。

FreeBSDを利用する企業やユーザからGPL3になったGCCをベースシステムに使用して欲しくないとの要望が多く、GCCのみならず、GPL3のコードはFreeBSDのベースシステムには採用しない方針になっている。

そのため、

アクティブなメンテができず、古いバグが残ったままになっている
C++0Xのサポートがない
新しいCPUのサポートがない

などの問題が発生することになるわけだ。
そこで新たに注目されたのがLLVM Clangだ。

2年前のBSDCan2008で多くの開発者の関心を惹いたLLVM Clangは、近いうちに9-CURRENTへ採用されそうな勢いだ。

LLVM Clangの利点は以下の通り。

BSDライセンス
i386、amd64、powerpc、mips、arm、sparcなど必要になるすべてのアーキテクチャに対応
GCCよりもコンパイル時間が短い
GCCからのリプレースができる
コンパイルエラーメッセージがGCCよりも理解しやすい
アクティブに開発されメンテナンスされている
FreeBSDデベロッパにもアクティブなメンテナがいる
LLVMの開発チームと良好な関係

などとされるが、未だ問題点も多い。

i386版のboot2ビルド成果物が必要とされるサイズに収まらない
x86におけるインラインアセンブラの対応が100%ではない
GCC 4.2.1よりも厳密でワーニングが多く出力される
現段階で、アーキテクチャへの対応が全て良好というわけではない。
(amd64は良好、i386には若干の問題あり、mipsとpowerpcは対応中、sparcも対応中で、armは進展なし)

ツールチェーンもBSDライセンスへ置き換え
LLVM Clangへの移行に合わせて、ツールチェーンを従来のGPLベースのものからBSDライセンスベースのものに置き換える作業も進められている。BSDライセンスで開発されるELFツールチェーンとデバッガ。nm(1)、size(1)、string(1)、c++filt(1)、addr2line(1)、readelf(1)、elfdump(1)、objcopy(1)、strip(1)などのシンプルなツールはすでに変更済み。後はas(1)やld(1)など複雑なツールの実装、libelfの改善、libdwarfの改善、libmcの導入、LLVMとの連携などが残っている。

現在まだ課題が多いため、FreeBSDのビルドがLLVM Clangベースになり、ビルドの大半をLLVM Clangにするにはまだまだ時間がかかるが、amd64版とi386版のカーネルとシステムのLLVM Clang対応はすぐそこまで迫ってきており、9.0での実験的な導入、10.0での正式な対応ということになりそうだ。

FreeBSDでは主にライセンスが理由になったが、コンパイル時間やコンパイルした成果物のパフォーマンスの高さなどからLLVMへ移行するOSSプロジェクトもある。
また、今後この動きはLinuxに波及しないとも限らない。

コメントする

カレンダー

<     2010 May     >
 
日  月  火  水  木  金 
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

ウェブページ

Powered by Movable Type 4.261

このブログ記事について

このページは、が2010年5月26日 05:59に書いたブログ記事です。

ひとつ前のブログ記事は「CCNP(英語版)について」です。

次のブログ記事は「MySQL覚え書き」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。