GNU Compiler Collection (GCC) の最新バージョンは、C++への変換の完了を記して、リリースされた。このプロセスは複数年に渡るプロジェクトで、GCCチームは、保守しやすいコードによってプロジェクトメンバーを維持し、新しいメンバーを惹きつけるために必要だった、と述べている。C++が選ばれたのは、部分的には、標準ベースの言語であり、プロジェクトによれば、「より綺麗なコードをサポートするほうが、より綺麗なインターフェースを書いたり、強制するのが、より簡単であり、そして万能薬ではないが、(Cベースのレガシーコードに対する)改善である。」ほとんどの開発者に対する最終結果は、単にソースから4.8をコンパイルすることに興味のある人達は、C++2003を理解するコンパイラーを使わなければならない、ということである。一般的なユーザーは、単に、アップデートするのがもっと効率的で簡単であるように設計されたコンパイラースイートから恩恵を受けるだろう。
新コンパイラーのフィーチャ
一般的なコンパイラーの改善として、「新世代最適化レベルが導入され、これが高速コンパイルと優れたデバッグ機能のニーズに応えている。また実行時パフォーマンス用の合理的なレベルも提供している。」更に、4.8には、メモリエラー検知用のAddressSanitizerとデータ競合を検知するために、命令にインストラメントできるThreadSanitizerが含まれている。(ThreadSanitizerは現在、x86-64 GNU/Linuxでのみ利用可能である。)
注目すべき新しいコンパイラのターゲットには、64ビットのARM(AArch64)と32ビットARMv8アーキテクチャが含まれている。
言語固有の改善
C++への切り替えを終えたことだけが、このリリースの注目すべき成果ではない。コンパイラーの幾つかの領域で改善が行われた。GCCは、複数のアーキテクチャで、 GNU/Linux と Solaris向けに Go 1.1の先行バージョンをサポートしている。 Fortran と Cも、もしこれらを言語で開発しているなら、調査する価値のある、幾つものアップデートが行われた。
C++ユーザーには、C++11サポートの改善がある。
- thread_localキーワード
- 属性シンタックス
- アラインメント指定子
- 継承コンストラクタ
- forward_listは、アロケータ対応のコンテナの要件を満たしている
GCC4.8のC++11サポートは、Clang 3.2と比較して非常に優位であり、これらのコンパイラーの両方共、Visual Studio 2012の November CTPの最新のサポートを引き離している。将来のC++の変更に対応する計画が始まっており、 2017年頃に予定される、標準の次の主要な改定に提案されているフィーチャの実験実装用に-std=c++1yオプションが追加されている。
C++ランタイム標準ライブラリ (libstdc++) では、C+11のサポートが強化され、乱数生成(新X86プロセッサーでのハードウェアサポートを含めて)が改善され、新しい乱数分布が追加された。