The GCC development team is celebrating the 25th year of the GNU Compiler Collection, a collection initiated by the first public release of GCC (GNU C Compiler) in 1987 by Richard Stallman. Over the years the GNU Compiler Collection, renamed as other languages joined the toolchain, shaped how developers acquired the tools of their trade and provided a platform for new compiler developments. As part of the celebration, the developers have released GCC 4.7.0, a major release of the compiler collection that brings with it new functionality.

All languages in the collection will benefit from an improved link-time optimisation (LTO) framework which improves scalability and reduces memory usage. According to the developers, previously Firefox needed over 8GB of RAM to be optimised on a 64-bit system; with the new LTO this is down to 3GB of RAM. Linking time has been improved too; Firefox's linking has been speeded up by a factor of ten. Other optimisations include improvements to inlining and constant propagation between procedures, and a new string length optimisation pass.

Among the new functionality is experimental support for software transactional memory on 32-bit and 64-bit x86 and Alpha platforms from the C family of languages. The C++ compiler in the collection now supports more of the C++11 standard, including atomics, the C++11 memory model, user-defined literals, alias declarations, delegating constructors and extended friend syntax. Other additions include new warnings such as -Wzero-as-null-pointer-constant to flag when literal 0 is being used as a null pointer, and -Wdelete-non-virtual-dtor which flags when instances of classes with virtual instances are being deleted. The C compiler adds more features from the C11 ISO C standard such as Unicode strings, non-returning functions and alignment support.

Fortran support has been improved with a new option that can place arrays on the stack, which can enhance the performance of some programs. There is also better compatibility with Fortran 2003 and 2008. Go 1, the standard for Google's Go language, has been implemented in GCC 4.7 but the library support for it is not complete; it should be completed in the 4.7.1 release.

The GNU Compiler Collection is known for its wide target support and 4.7.0 is no different. It has support for Adapteva's Epiphany processor, National Semiconductor's CR16, and TI's C6X as well as Tilera's TILE-Gx and TILEPro families of processors. ARM compilation has been enhanced with the addition of support for the Cortex A7 family. The x86 architecture isn't omitted either; GCC 4.7.0 adds support for Intel's Haswell and AMD Piledriver architectures.

Further details about the changes in GCC 4.7.0 are available. The source code for this release is available from GNU project FTP Servers in the gcc/gcc-4.7.0/ directory. The GCC is licensed under the GPLv3 or later.

(djwm)