GCC 4.6リリース、Google Goの正式サポートなど多数の変更点を含む
GNU ProjectとGCC開発チームは3月25日、オープンソースのコンパイラスイート「GNU Compiler Collection(GCC) 4.6」をリリースした。米Googleの「Go」言語サポートなど、多数の修正や新機能が追加されている。
2010年4月にバージョン4.5を公開してから1年弱でのメジャーリリースとなる。GCC 4.6ではC、C++、Java、Ada、Fortranなどに加え、Googleが2009年11月に発表したGo言語にも対応した。Goは並列処理をサポートし、Pythonなどの動的言語の開発速度とCやC++のようなコンパイル言語の性能を併せ持つとしている。Goは現在LinuxとリアルタイムOSである「RTEMS」で利用でき、Solaris対応も進んでいる段階という。ただしGo言語のサポートはデフォルトでは有効化されておらず、利用する際はビルド時に設定が必要とのこと。
GCC 4.6では「-b」および「-V」オプションが削除されたほか、不正なコマンドラインオプションに対するチェックが厳しくなっている。新たにC/C++やObjective-C/C++向けに「-Wunused-but-set-variable」「-Wunused-but-set-parameter」オプションが追加され、4倍精度(128ビット)の浮動小数点演算を行う「libquadmath」ライブラリも同梱される。
C/C++関連では、ISO C規格「C1X」の機能を実験的にサポートした。また、策定中のC++規格「C++0x」の実験的サポートも強化され、「constexpr」や「noexcept」、「nullptr」などの機能が追加された。
新たにAMD BobcatやARM Cortex-M4などのCPUサポートやIntel Core i3/i5/i7向け最適化オプションも追加された。最新のCore i7プロセッサでサポートされたIntel AVX命令もサポートされている。また、Android向けにBionic Cライブラリのサポートや、ネイティブライブラリおよびアプリケーション作成を容易にする方法も提供されるという。
最適化関連では、新たな最適化レベル「-Ofast」が導入された。より最適化されたコードを出力するよう、「-O3」オプションにほかのいくつかの最適化オプションを追加したものに相当するという。また、Link-Time Optimizerの改善やInterprocedural optimizationも改善された。コンパイル時間やメモリ消費も改善されているという。
ライセンスはGNU General Public License(GPL)v3で、プロジェクトのWebサイトより入手できる。なお、GCC 4.6ではメンテナンスやテストがされていない一部の古いシステムについては「obsolete」扱いとなった。obsolete扱いとなっているプロセッサは下記のとおり。
- Argonaut ARC (arc-*)
- National Semiconductor CRX (crx-*)
- Motorola 68HC11 and 68HC12 (m68hc11-*-*, m6811-*-*, m68hc12-*-*, m6812-*-*)
- Sunplus S+core (score-*)
また、下記のシステムに関してもobsoleteと宣言されている。
- Interix (i[34567]86-*-interix3*)
- Generic ARM PE (arm-*-pe* other than arm*-wince-pe*)
- MCore PE (mcore-*-pe*)
- SH SymbianOS (sh*-*-symbianelf*)
- GNU Hurd on Alpha and PowerPC (alpha*-*-gnu*, powerpc*-*-gnu*)
- M68K uClinux old ABI (m68k-*-uclinuxoldabi*)
- a.out NetBSD (arm*-*-netbsd*, i[34567]86-*-netbsd*, vax-*-netbsd*, but not *-*-netbsdelf*)
これらobsolete宣言されたプロセッサおよびシステムについては、今後アクティビティが回復しない場合、次回のリリースで関連するソースコードが削除される可能性があるとのこと。
GNU Compiler Collection
http://gcc.gnu.org/