I repeatedly see other people doing the mistake, so a little reminder doesn’t hurt.
- API: Application Programming Interface
- ABI: Application Binary Interface
The difference can be easily explained by knowing what to do for some code when the API or ABI breaks in a library that the code depends on:
- If only the ABI breaks, then you just need to re-compile the code.
- If the API breaks, you need to adapt the code.
- When the code doesn’t compile anymore, you need to adapt it, so it’s both an API and ABI break.
- When the code still compiles fine but you need to adapt it, it’s only an API break.
Example of an ABI break only: when the size of a public
Example of an ABI and API break: when a function is renamed.
Example of an API break only: CSS in GTK+ 3.20, or when a function doesn’t do the same as what was documented before (in an incompatible way).