Huge Package Overhaul for Debian and Ubuntu

Debian and Ubuntu are moving to update all C++ packages with GCC5, which was released in April. GCC stands for Gnu Compiler Collection, and it is used to convert source code to executable code and libraries. These compilers are used to build everything from the Linux kernel to user applications, so it's a far-reaching change.

GCC5 has introduced more fundamental updates than previous versions, as it is the first version to fully support the latest version of C++. This new standard, released in 2011, contains numerous improvements to the previous standard, which dates back to 1998. It gives developers the tools they need to build more stable software rapidly, at all levels of the Linux ecosystem.

Bringing the C++ packages up to date is a major project requiring recompilation, as the new standard c++ library (libstdc++) has a different binary interface (the ABI, or Application Binary Interface). In many cases, changes must also be made to the source code to fit in line with the C++11 standard.

Upgrading the packages will ultimately lead to a more stable platform since GCC5 and the new standard C++ library bring a number of improvements beyond support for the new standard. The old ABI had experimental support for some C++11 features. The new version has complete support, but it is not backwardly compatible with the old ABI.

Interestingly, libstdc++ still supports the old ABI (C++98) when packages are compiled with a special macro. However, it makes sense to migrate to the new ABI now rather than later. The next version of the GCC will remove support for the C++98 ABI entirely, so it's essential to make the change long before GCC6 rolls off the production line.

Each package must be compiled on several different architectures so that they are available for all users. As is to be expected, a number of bugs are popping during this process, and they must be fixed. It's a time-consuming process, but the results will be far-reaching. A very large number of users have installed distros based on Debian or Ubuntu.

There are thousands of packages to update, and many of them have complex dependencies. The effort depends on contributions from the developer community, who are being asked to work on fundamental libraries and packages first. This is definitely a case of many hands making light work, so anyone with the required skills is encouraged to join in!

You can learn more at https://wiki.debian.org/GCC5 or by joining the relevant mailing lists (debian-devel-announce and ubuntu-devel).