0Pricing
C++ Academy · Leçon

Gestion des versions d’API et stabilité de l’ABI

Prévoir la gestion sémantique des versions et préserver la stabilité de l’ABI entre les versions

Gestion des versions d’API et stabilité de l’ABI est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.

Deux compatibilités différentes

Deux problèmes de compatibilité :

  • Compatibilité de l'API — le code source qui se compile avec la version N se compile aussi avec la version N+1
  • Compatibilité ABI — les binaires compilés avec la version N fonctionnent avec la version N+1 sans recompilation

Pourquoi l'ABI est importante

La compatibilité ABI permet de mettre à niveau les bibliothèques partagées sans recompiler les dépendances. Elle est essentielle pour les distributions, les modules d'extension et les applications à longue durée de vie.

Ce qui rompt l'ABI

De nombreuses modifications apparemment anodines rompent l'ABI :

  • Ajouter, supprimer ou réordonner des membres de données
  • Ajouter ou supprimer des fonctions virtuelles
  • Modifier l'héritage
  • Modifier les paramètres des modèles
  • Modifier des fonctions définies en ligne, parfois

Gestion sémantique des versions (SemVer)

Communiquez la compatibilité au moyen des numéros de version MAJOR.MINOR.PATCH :

  • MAJOR — changements incompatibles
  • MINOR — nouvelles fonctionnalités, rétrocompatibles
  • PATCH — corrections

Versionner les en-têtes

Fournissez des macros de version dans vos en-têtes.

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

SONAME pour les bibliothèques partagées

Sous Linux, les bibliothèques partagées possèdent un SONAME qui code la version majeure. Les éditeurs de liens et le chargeur l'utilisent pour trouver des versions compatibles.

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

Masquer les détails de l'implémentation

Les ABI stables nécessitent de garder l'implémentation hors des en-têtes. Utilisez PIMPL (dans la prochaine leçon) pour ajouter ou supprimer des membres privés sans affecter les utilisateurs.

ABI du compilateur

L'ABI C++ varie selon les compilateurs (GCC et MSVC utilisent une décoration des noms et une organisation des classes différentes). Distribuez des binaires construits avec des compilateurs précis, ou limitez-vous aux interfaces extern "C".

ABI de la bibliothèque standard

La bibliothèque standard peut également rompre l'ABI, même si libstdc++ et libc++ disposent de politiques en la matière. Évitez les types standard dans votre API publique stable si vous avez besoin d'une compatibilité entre les versions.

Ajouter des fonctionnalités de manière compatible

Ajouts sûrs :

  • Nouvelles fonctions libres
  • Nouvelles classes
  • Nouvelles fonctions membres non virtuelles, avec précaution

Dangereux : modifier des classes que les utilisateurs ont sur la pile ou qu'ils ont compilées dans leur code.

Outils de vérification de l'ABI

Outils qui comparent deux compilations :

  • abidiff — compare l'ABI
  • abicompliance-checker — génère des rapports

Stratégie à long terme

Concevez la stabilité dès le départ : petite API publique, types opaques et utilisation prudente des modèles et de l'héritage. Une fois le logiciel distribué, rompre l'ABI coûte cher : réservez les ruptures aux changements de version majeure et communiquez clairement.

Vérification rapide

Quelle modification d'une classe C++ risque le plus de rompre l'ABI ?

Récapitulatif

La compatibilité de l'API signifie la compatibilité du code source ; la compatibilité ABI signifie la compatibilité binaire. L'ABI est fragile : ajouter des membres ou des fonctions virtuelles, ou modifier l'héritage, la rompt. Utilisez SemVer, masquez l'implémentation avec PIMPL, distribuez plusieurs versions majeures côte à côte et exécutez des outils de vérification de l'ABI.

Questions Fréquemment Posées

La leçon « Gestion des versions d’API et stabilité de l’ABI » est-elle gratuite ?

Oui — le texte complet de « Gestion des versions d’API et stabilité de l’ABI » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Gestion des versions d’API et stabilité de l’ABI » ?

Prévoir la gestion sémantique des versions et préserver la stabilité de l’ABI entre les versions Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C++ Academy ?

Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Gestion des versions d’API et stabilité de l’ABI » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?

Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Bibliothèques à en-tête uniquement ou compilées
  2. Gestion des versions d’API et stabilité de l’ABI
  3. Masquer l’implémentation avec PIMPL
  4. Écrire une bibliothèque utilitaire moderne à en-tête unique
← Retour à C++ Academy