On 12/2/20 5:08 PM, Edward Diener via Boost wrote:
On 12/2/2020 5:12 AM, Andrey Semashev via Boost wrote:
On 12/2/20 1:21 AM, Edward Diener via Boost wrote:
I believe the great majority of Boost libraries attempt to maintain ABI compatibility between releases.
My impression is the opposite. Boost has never declared backward ABI or API compatibility. There's a reason why binary distributions of Boost append a version tag that matches Boost version to packages and binaries.
Whether Boost declares it or not I do not think Boost libraries change the API or ABI very often between releases and, if they do, they will notify the end-user about it.
No, not really. Internal changes are often not reflected in the release notes at all, while they may affect ABI. You may have an impression of stability because many Boost libraries don't change that much (e.g. due to lack of maintenance). This is not a result of a maintenance decision, but a product of the lack of development. Hence this is not a guarantee or promise or whatever that ABI/API is stable.
So are you telling me that if I have gcc-10.2 I should be able to use the gcc-5.1 libstdc without any ABI problems ?
No, because a program compiled with gcc 10 may use symbols of the standard library that were not available in gcc 5. But you could do the other way around - have your program compiled by gcc 5 and run it with libstdc++ from gcc 10. People do this rather often, when they install pre-compiled binaries from external sources (i.e. not from the distro repositories). There are a few ABI changes that were made in gcc (the compiler, not libstdc++), but there are options to highlight code affected by them or switch to the older behavior. I did not research whether libstdc++ is affected by those, but I would assume either not affected or the necessary workarounds are in place.