preparing for GCC 5, especially libstdc++6
it's time to prepare for GCC 5 as the default compiler in unstable. Compared to
earlier version bumps, the switch to GCC 5 is a bit more complicated because
libstdc++6 sees a few ABI incompatibilities, partially depending on the C++
standard version used for the builds. libstdc++6 will support two ABI's, the
classic cxx98 ABI (currently in testing/unstable) and the new cxx11 ABI
(currently enabled in experimental as the default ABI).
- the majority of packages using c++98 or earlier c++ standards
should just continue to work.
- In GCC 4.9 and earlier versions the libstdc++6 C++11 support was
still marked as experimental, and upstream doesn't (and didn't in the past)
guarantee c++11 ABI compatibility across major GCC versions.
It worked somehow ok in the past, however it won't this time.
- some c++98 code won't work when parts are built using GCC 4.9, and some
parts with GCC 5 (see PR66145 upstream).
Unfortunately due to PR66145 we already have an incompatible libstdc++6 (at
least for some packages) in testing/unstable, which was only seen after the
first packages were rebuilt and issues like #784655 were reported.
My goal is to make the GCC version bump in early July, and use the time until
then to prepare libstdc++6 depending packages to get ready for GCC 5, and
avoiding version bumps for C++ libraries until this time.
Details for the whole transition are outlined in
I'd appreciate feedback for this plan, clarify the wiki page, and would like to
post a finalized plan next week to d-d-a, and file appropriate transition bugs