C · Avançado · Inglês · Técnico
ABI
Contrato em nível de binário que define tamanhos de tipos, layout de structs, convenção de chamada e nomes de símbolos. É o que a API, no código-fonte, não garante.
Onde usar
Quebrar a ABI de uma biblioteca compartilhada, por exemplo mudando a ordem de campos de uma struct pública, faz programas já compilados falharem sem recompilar. Por isso bibliotecas usam tipos opacos.
Em código
#include <stddef.h>
struct v1 { int a; int b; };
struct v2 { int a; long x; int b; };
_Static_assert(offsetof(struct v1, b) !=
offsetof(struct v2, b), "ABI mudou");Exemplos
Adding a field in the middle of that struct breaks the ABI.
Adicionar um campo no meio dessa struct quebra a ABI.
The API is the same, but the ABI changed between versions.
A API é a mesma, mas a ABI mudou entre as versões.
Cuidado
Confundir com API: dá para manter o código-fonte compatível e ainda assim quebrar a ABI.
Sinônimos
interface binária de aplicação
Antônimos
API
Origem
Sigla de Application Binary Interface.