GCC compatibility of shared libraries with STL objects in their interface
Mon Nov 30 12:32:00 GMT 2015
On Mon, Nov 30, 2015 at 1:13 PM, Jonathan Wakely <firstname.lastname@example.org> wrote:
> On 30 November 2015 at 07:23, Robert Fanner wrote:
>> Is there more documentation somewhere with respect to how you've gone
>> about achieving the high degree of ABI stability (e.g. making sure
>> things are inlined/not inlined, data members don't change, memory
>> layout stays the same, inheritance doesn't change, etc)? I'd really
>> like to learn more.
> Inlining doesn't matter.
> We just don't change things that affect the ABI, even when that means
> we're stuck with a bug that can't be fixed without an ABI change.
> Don't change object layout. Don't change virtual table layout.
> Occasional mistakes have happened, but we've reverted the changes.
I was starting to stray from ABI compatibility into the realm of
runtime behavioural compatibility of code. If inlining isn't really an
issue for STL/libstdc++, then I guess it boils down to making sure
inlined code doesn't change private member data state in unexpected
ways across versions.
More information about the Libstdc++