À retenir
- C'est une interface au niveau du code machine (0 et 1), pas du code source.
- Elle dépend étroitement du processeur et du système d'exploitation.
- Elle garantit la compatibilité entre les logiciels et les bibliothèques sans avoir à les recompiler.
L'ABI est un ensemble de règles qui permet à deux programmes déjà compilés (en langage machine) de communiquer entre eux ou avec le système d'exploitation. C'est un peu comme une « prise électrique » standardisée : elle garantit que le logiciel pourra se brancher correctement sur le processeur et la mémoire sans provoquer d'erreur fatale.
Étymologie
Vient de l'anglais Application Binary Interface. Contrairement à l'API qui définit comment les programmeurs écrivent le code, l'ABI définit comment les fichiers finaux (les binaires) interagissent physiquement au cœur de la machine.
Exemples d'usage
- Le format ELF (Executable and Linkable Format) utilisé sous Linux pour structurer les programmes.
- Les conventions d'appel (calling conventions) qui décident si un paramètre de fonction doit être mis dans le registre A ou le registre B du processeur.
- Le format PE (Portable Executable) utilisé par les fichiers .exe sur Windows.
Cas d'usage
L'ABI intervient principalement lors de la création de bibliothèques partagées (comme les fichiers .dll ou .so). Elle assure qu'un programme compilé avec un outil (comme GCC) pourra utiliser une fonction provenant d'une bibliothèque compilée avec un autre outil (comme Clang), à condition qu'ils partagent la même ABI.
Bonnes pratiques
Lorsqu'on met à jour une bibliothèque informatique, il faut veiller à ne pas « casser l'ABI ». Si on modifie la taille d'une structure de données ou l'ordre des arguments d'une fonction, les logiciels qui utilisaient l'ancienne version risquent de planter brutalement car ils ne trouveront plus leurs informations au bon endroit en mémoire.
Synonymes
Antonymes
Conseil
Si vous débutez, ne vous souciez pas trop de l'ABI au quotidien. C'est un concept crucial pour ceux qui font de la programmation système (C, C++, Rust) ou qui créent des systèmes d'exploitation. Retenez simplement que c'est ce qui permet à un .exe de fonctionner sur votre Windows d'une version à l'autre.
Questions fréquentes
Quelle est la différence entre API et ABI ?
L'API est destinée aux humains (code source), l'ABI est destinée à la machine (code binaire). Si l'API change, vous devez modifier votre code ; si l'ABI change, votre programme ne se lancera plus du tout.
Une ABI est-elle universelle ?
Non, elle est spécifique à une architecture de processeur (ex: x86, ARM) et souvent à un système d'exploitation particulier.