GCC 5系初のリリースとなる「GCC 5.1」登場

 GNU ProjectとGCC開発者は4月22日、「GNU Complier Collection(GCC)5.1」」を公開した。Cのデフォルトモードの変更、最適化エンジンの強化、JITコンパイラ対応など多数の機能が盛り込まれている。

 2014年4月に公開されたGCC 4.9に続くもので、GCC 5系で最初のリリースとなる。変更点としては、まずCのデフォルトモードが-std=gnu89(GNU89)から-std=gnu11(ISO C11ベースのGNU11)に変更された。また、C++ランタイムライブラリlibstdc++ではデフォルトで新しいABIを利用するようになっている。古いABIのサポートも継続するデュアルライブラリとなり、「_GLIBCXX_USE_CXX11_ABI」パラメータで利用するABIを設定できる。libstdc++ではC++11のサポートが完全対応となった。また、C++14の実験サポートも加わっている。コンテナ向けのGDB Xmethods、Library Fundamentals TSの実験サポートも強化されている。

 ループ最適化をGraphiteフレームワークも改善され、必要なライブラリがISL(バージョン0.14(推奨)と0.12.2をサポート)のみとなった。CLooGライブラリは不要となる。

 最適化エンジンの強化としては、プロシージャ間の最適化で同一コードの折りたたみ(ICF)パスが加わり、リンク時最適化もメモリ使用とリンク時を改善するなどさまざまな強化が加わった。

 言語側では、OpenMP 4.0におけるオフロード機能のサポート(C、C++、Fortran)、OpenACC 2.0aの初期実装が加わった。C++でのC++14の変数テンプレートのサポート、C/C++の拡張でデータとタスクの並列処理をサポートするCilk Plusの完全対応も加わっている。

 Go言語については、バージョン1.4.2の完全実装を提供し、goおよびgofmtの2種類のプログラムをインストールするようになった。

 libgccjitを利用したJITコンパイルも利用できるようになった。libgccjitは、ほかのプロセスに組み込むための共有ライブラリとしてGCCを構築するという機能で、実験的位置付けとなっている。C APIとC++ラッパーAPIを持ち、PythonとD向けのサードパーティのバインディングもあるという。

 AArch64ではARM Cortex-A57向けコード生成を改善するなどの機能が加わった。MIPSではRelease 3と5をサポート、Intelでは「Skylake」(開発コード)サーバープロセッサのAVX-512のサポートが加わっている。OS関連では、DragonFly BSDとFreeBSDを新たにサポートに加えている。

 新機能を導入する一方で、C++0xのhas_trivial_default_constructor、has_trivial_copy_constructor、has_trivial_copy_assignは非推奨となった。代わりにC++11の is_trivially_default_constructible、is_trivially_copy_constructible、is_trivially_copy_assignableの利用を勧めている。

GNU Compiler Collection
http://gcc.gnu.org/