0Pricing
C++ Academy · Aula

Versionamento de API e estabilidade de ABI

Planeie o versionamento semântico e proteja a estabilidade da ABI entre lançamentos

Versionamento de API e estabilidade de ABI é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.

Duas compatibilidades diferentes

Há duas preocupações relacionadas à compatibilidade:

  • Compatibilidade da API — o código-fonte que compila com a versão N também compila com a N+1
  • Compatibilidade da ABI — os binários compilados com a versão N funcionam com a N+1 sem recompilação

Por que a ABI é importante

A compatibilidade da ABI permite atualizar bibliotecas compartilhadas sem recompilar os dependentes. Isso é essencial para distribuições, plug-ins e aplicações de longa duração.

O que rompe a ABI

Muitas alterações que parecem inofensivas rompem a ABI:

  • Adicionar, remover ou reordenar membros de dados
  • Adicionar ou remover funções virtuais
  • Alterar a herança
  • Alterar os parâmetros dos modelos
  • Alterar funções inline (às vezes)

Versionamento semântico (SemVer)

Comunique a compatibilidade por meio dos números de versão MAJOR.MINOR.PATCH:

  • MAJOR — alterações incompatíveis
  • MINOR — novos recursos, compatíveis com versões anteriores
  • PATCH — correções

Versionamento nos cabeçalhos

Forneça macros de versão nos seus cabeçalhos.

#define MYLIB_VERSION_MAJOR 2
#define MYLIB_VERSION_MINOR 1
#define MYLIB_VERSION_PATCH 3

SONAME para bibliotecas compartilhadas

No Linux, as bibliotecas compartilhadas têm um SONAME que codifica a versão principal. Os vinculadores e o carregador usam esse valor para encontrar versões compatíveis.

# libmylib.so.2 -> libmylib.so.2.1.3
# SONAME = libmylib.so.2

Ocultação dos detalhes da implementação

ABIs estáveis exigem manter a implementação fora dos cabeçalhos. Use PIMPL (na próxima lição) para adicionar ou remover membros privados sem afetar os consumidores.

ABI do compilador

A ABI do C++ varia entre compiladores (GCC e MSVC usam decoração de nomes e layouts de classes diferentes). Distribua binários compilados com compiladores específicos ou mantenha-se em interfaces extern "C".

ABI da biblioteca padrão

A biblioteca padrão também pode romper a ABI — embora libstdc++ e libc++ tenham políticas próprias. Evite tipos da biblioteca padrão na sua API pública estável se precisar de compatibilidade entre versões.

Adição compatível de recursos

Adições seguras:

  • Novas funções livres
  • Novas classes
  • Novas funções-membro não virtuais (com cuidado)

Inseguro: alterar classes que os consumidores mantêm na pilha ou compilam diretamente.

Ferramentas para verificar a ABI

Ferramentas que comparam duas compilações:

  • abidiff — compara a ABI
  • abicompliance-checker — gera relatórios

Estratégia de longo prazo

Projete pensando na estabilidade desde o início: API pública pequena, tipos opacos e uso cuidadoso de modelos e herança. Depois que a biblioteca é distribuída, romper a ABI é caro — restrinja os aumentos da versão principal e comunique-se com clareza.

Verificação rápida

Qual alteração em uma classe C++ tem maior probabilidade de romper a ABI?

Recapitulação

Compatibilidade da API significa compatibilidade do código-fonte; compatibilidade da ABI significa compatibilidade binária. A ABI é frágil — adicionar membros ou funções virtuais, ou alterar a herança, pode rompê-la. Use SemVer, oculte a implementação com PIMPL, distribua várias versões principais lado a lado e execute verificadores de ABI.

Perguntas Frequentes

A aula “Versionamento de API e estabilidade de ABI” é grátis?

Sim — o texto completo de “Versionamento de API e estabilidade de ABI” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.

O que vou aprender em “Versionamento de API e estabilidade de ABI”?

Planeie o versionamento semântico e proteja a estabilidade da ABI entre lançamentos Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C++ Academy?

Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Versionamento de API e estabilidade de ABI”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C++ Academy?

Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Bibliotecas apenas de cabeçalho versus compiladas
  2. Versionamento de API e estabilidade de ABI
  3. Ocultar a implementação com PIMPL
  4. Escrever uma biblioteca utilitária moderna apenas de cabeçalho
← Voltar para C++ Academy