ABI Laboratory

API and ABI

Explaining basic terms

Application Binary Interface (ABI) of a software library is the machine code level interface between this library and other libraries and programs using it.

The layout of data types in memory (classes, structures, unions, etc.) and calling conventions of the library symbols (layout of the calling stack, used registers, etc.) are the main parts of the library ABI.

ABI   =   API   +   Compiler ABI



Backward compatibility

Backward binary compatibility (i.e. ABI compatibility) allows old programs compiled with old versions of a library to run with newer versions without the need to recompile. This allows your users to upgrade easily to new versions of your software library.

Backward source compatibility (i.e. API compatibility) allows old programs to be recompiled successfully with newer versions of your library.

You need to verify and improve both binary and source compatibility of updates to easy life of the library users and let them upgrade.
   

Analysis

You can check backward compatibility of your C/C++ API libraries manually by the open-source ABI Compliance Checker and ABI Dumper tools or automate the analysis of all release versions by the ABI Tracker tool. For Java libraries you can use JAPICC and JAPI Tracker tools respectively.

Please refer to ABI Viewer if you'd like to visualize ABI differences and control binary compatibility in details.