FreeBSD - The Power To Serve

FreeBSDプロジェクトはベースシステムからGPLv2のコードを排除する取り組みを続けている。こうした動きのきっかけはデフォルトのコンパイラとして採用しているGCCがそのライセンスをGPLv3に移行させたことにある。FreeBSDプロジェクトはベースシステムにGPLv3のコードを取り込まない方針を定めている。このため、移行後のGCCへアップグレードができずにいる。ベースシステムのGCCは「GCC 4.2.2 20070831 prerelease」のままで止まっており、別のコンパイラへの移行が求められている。

FreeBSDはアプライアンスや組み込みデバイスで採用されるケースが増えており、またそうしたプロダクトを製造しているベンダはGPLのコードがベースシステムに含まれていることを良としない傾向がある。GCCから別コンパイラへの移行や、ベンダの要望もあり、ここ数年をかけてGPL排除の取り組みが進められている。

この最初のマイルストーン的なブランチがFreeBSD 10系になりそうだ。FreeBSDファウンデーションの発表によると、LLVMのlibc++移植の目処が立ったことが報告されている。FreeBSDはCの標準ライブラリは自前で持っているが、C++の標準ライブラリにはGCCのものを採用してきた。GCC C++標準ライブラリの代替えとしてはLLVM C++標準ライブラリが検討されていたが、LLVM C++標準ライブラリを移植するにはFreeBSD側にいくつかの機能が欠落しておりこれまで実現されてこなかった。

LLVMのC++標準ライブラリはもともとAppleのもとでDarwin向けに開発されたもの。このC++標準ライブラリはスレッドごとにロケールを設定できる機能(POSIX 2008 スレッド別ロケールAPIを拡張したもの)を持っているが、FreeBSDはそのうちのいくつかの機能を実装していなかった。今回、ファウンデーションが支援する形でxlocaleの未実装部分の開発を実施。すでにほとんど開発は終了しており、実質的にlibc++移植の目処が立ったことになる。これでリンカーを除いてGPLフリーなC/C++スタックの実現が見えてきた。

FreeBSDプロジェクトはデフォルトコンパイラをGCCからLLVM Clangに置き換える取り組みを継続しており、すでにClangベースのシステムを使っている開発者もいる。FreeBSD 10はC/C++スタックに関してGPLフリーが実現される初のブランチになるものとみられる。