Rejoice brothers and sisters! The next release is undoubtedly one of the most significant projects was released. So March 25, version 4.6 saw the light .
Let's take a quick look at what interesting GCC developers offer us .
Link Time Optimization. By default, optimization occurs only at the compilation unit (file) level, but with the new version of GCC you can optimize the binary code at the application level. The code for LTO was available back in 4.5, but the developers considered the implementation crude and not included in the previous release. Now LTO works fine on large open source projects (GCC, Mozilla) - time to try it on your project. LTO leads to a significant reduction in the final file, and also increases the speed of the application. But nothing comes for free - there is an increase in the size of intermediate (* .o) files and the need of the compiler in memory grows.
Improving the speed characteristics of the compiler itself. Apparently this is a response to criticism from Clang / LLVM. GCC now compiles ~ 10% faster and requires less memory.
Added experimental support for some features from future C ++ 0x and C1X standards.
A frontend for the Go language has appeared. Thanks to Inu Taylor.
Added support for Cortex-M4 processors.
Now GCC works correctly with the Core Foundation on MacOSX. This allows version 4.6 to be used instead of outdated (4.2) from XCode.
Implemented SplitStack on x86 / 64 platform. Now there is no need to allocate a huge indivisible piece of memory for the process stack. SplitStack allows you to allocate stack memory dynamically on a heap. This makes it possible to scale the number of processes / co-routines in the 32-bit address space to several million.