ExpertiDict

C · Avançado · Inglês · Técnico

ABI

/ˌeɪ.biːˈaɪ/substantivo

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.

Veja também

Todos os termos de C