Opensource.com presents a quick guide to the Linux applications’ binary interface (ABI). It is intended to familiarize you with the concept of an ABI, why ABI stability matters, and what is included in Linux’s stable ABI.
Linus Torvalds’ famous admonition, is “we don’t break user space,” but perhaps not everyone who recognizes the phrase is certain about what it means.
The “#1 rule” reminds developers about the stability of the applications’ binary interface via which applications communicate with and configure the kernel.
What follows is intended to familiarize readers with the concept of an ABI, describe why ABI stability matters, and discuss precisely what is included in Linux’s stable ABI. The ongoing growth and evolution of Linux necessitate changes to the ABI, some of which have been controversial.
ABI stands for Applications Binary Interface. One way to understand the concept of an ABI is to consider what it is not. Applications Programming Interfaces (APIs) are more familiar to many developers. Generally, the headers and documentation of libraries are considered to be their API, as are standards documents like those for HTML5, for example. Programs that call into libraries or exchange string-formatted data must comply with the conventions described in the API or expect unwanted results.
ABIs are similar to APIs in that they govern the interpretation of commands and exchange of binary data. For C programs, the ABI generally comprises the return types and parameter lists of functions, the layout of structs, and the meaning, ordering, and range of enumerated types. The Linux kernel remains, as of 2022, almost entirely a C program, so it must adhere to these specifications.
Read more in the guide here.