An ABI (Application Binary Interface) is a machine-readable list of symbols (functions, globals, and classes) that can only be called, accessed, and used in specific ways.
An API (Application Programming Interface) consists of C and C++ headers (
.hpp) that define how the ABI can be used.
Rack plugins must be compiled against a particular major version of Rack to match its ABI, so that when Rack loads them, they link to Rack’s symbols correctly.
The major version is
X in the version name
Symbols might be added to the API/ABI of Rack in a minor version update. Plugins may use these new symbols, but they cannot be loaded with older versions of Rack. Users will need to upgrade their Rack minor version to load your plugin.
The minor version is
Y in the version name
This is similar to how VST plugins work, where for example, VST 2.3 plugins cannot load in DAWs that only implement the VST 2.2 standard.