I like to understand a bit more about ABI and API and how certain changes affect these. It would be quite helpful for me when proposing feature requests on GitHub if know before what consequences would arise.
I have some knowledge about binaries, linking etc. but it is not that deep I could fully understand some dependencies.
Some questions I had the last weeks:
- Adding a new
getXXX
to astruct
in a header file.
Changes the API, but won’t break it. Not sure about ABI. - Adding or removing a member field to a
struct
in a header file.
Breaks API and ABI because the binary representation of thestruct
changes? - Making an existing member function
virtual
.
Changes API. Changes ABI also I guess, becausevirtual
leads to different calling convention?
Any helpful links on this topic are very welcome!