![]() |
LLVM is a robust system, particularly well suited for developing new mid-level language-independent analyses and optimizations. |
LLVMがC++標準ライブラリとして新しくlibc++を含むようになった。LLVMはこれまでC++標準ライブラリとしてGCC/G++のlibstdc++を採用してきた。libc++はこれを置き換えることになるもので、BSDライセンスのもとで提供されている。libc++の特徴は次のとおり。
- C++0Xをターゲットにして実装が進められている
- 高速コンパイル
- 高速実行
- 省メモリ
- libstdc++とのABI互換性あり
- 開発段階にありN3092実装の85%ほどを達成
- BSDライセンスでの提供
GCC/G++ libstdc++ではなく新しくlibc++を採用することになった経緯としては次の内容が紹介されている。
- 主流のlibstdc++はGPL3に移行しており採用できない。GPL2ライセンスはGCC 4.2のlibstdc++までだがこれを採用し続けることはコードベースの分岐を招く。
- libstdc++はG++に強く結びついた作りになっており対応するG++のバージョンとの関連性が高い。
libc++はもともとHoward Hinnant氏によって開発されたもの。Howard Hinnant氏はAppleの技術者であり、libc++採用にはAppleからBSDライセンスでのC++標準ライブラリの提供という背景がある。BSDライセンスでのC++標準ライブラリの提供の望むプロジェクトはほかにもあり、FreeBSDなどのOSでもlibstdc++に変わるデフォルトのC++標準ライブラリとして入れ替えが進むことになるとみられる。