0Pricing
C++ Academy · Lezione

Versionamento delle API e stabilità dell'ABI

Pianifichi il versionamento semantico e protegga la stabilità dell'ABI tra le release

Versionamento delle API e stabilità dell'ABI è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.

Due tipi di compatibilità

Esistono due aspetti della compatibilità:

  • Compatibilità API — il codice sorgente che compila con la versione N compila anche con la versione N+1
  • Compatibilità ABI — i binari compilati con la versione N funzionano con la versione N+1 senza essere ricompilati

Perché l'ABI è importante

La compatibilità ABI consente di aggiornare le librerie condivise senza ricompilare i dipendenti. È fondamentale per le distribuzioni, i plugin e le applicazioni longeve.

Cosa rompe l'ABI

Molte modifiche apparentemente innocue rompono l'ABI:

  • Aggiungere, rimuovere o riordinare membri dati
  • Aggiungere o rimuovere funzioni virtuali
  • Modificare l'ereditarietà
  • Modificare i parametri dei template
  • Modificare funzioni inline (in alcuni casi)

Versionamento semantico (SemVer)

Comunichi la compatibilità tramite i numeri di versione MAJOR.MINOR.PATCH:

  • MAJOR — modifiche incompatibili
  • MINOR — nuove funzionalità compatibili con le versioni precedenti
  • PATCH — correzioni

Versionamento negli header

Fornisca macro di versione nei propri header.

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

SONAME per le librerie condivise

Su Linux, le librerie condivise hanno un SONAME che codifica la versione major. Linker e loader lo utilizzano per trovare versioni compatibili.

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

Nascondere i dettagli dell'implementazione

Per ottenere ABI stabili, mantenga l'implementazione fuori dagli header. Utilizzi PIMPL (nella prossima lezione) per aggiungere o rimuovere membri privati senza influire sui consumer.

ABI del compilatore

L'ABI C++ varia tra i compilatori (GCC e MSVC utilizzano name mangling e layout delle classi diversi). Distribuisca binari compilati con compilatori specifici oppure si attenga alle interfacce extern "C".

ABI della libreria standard

Anche la libreria standard può rompere l'ABI, sebbene libstdc++ e libc++ adottino proprie politiche. Eviti i tipi della libreria standard nell'API pubblica stabile se serve compatibilità tra versioni diverse.

Aggiungere funzionalità senza rompere la compatibilità

Aggiunte sicure:

  • Nuove funzioni libere
  • Nuove classi
  • Nuove funzioni membro non virtuali (con cautela)

Non sicuro: modificare classi che i consumer hanno sullo stack o hanno già compilato.

Strumenti per il controllo dell'ABI

Strumenti che confrontano due build:

  • abidiff — confronta l'ABI
  • abicompliance-checker — genera report

Strategia a lungo termine

Progetti fin dall'inizio pensando alla stabilità: API pubblica ridotta, tipi opachi e uso attento di template ed ereditarietà. Dopo la distribuzione, rompere l'ABI è costoso: pianifichi gli incrementi della versione major e comunichi in modo chiaro.

Verifica rapida

Quale modifica a una classe C++ ha maggiori probabilità di rompere l'ABI?

Riepilogo

La compatibilità API indica la compatibilità del sorgente; la compatibilità ABI indica quella dei binari. L'ABI è fragile: aggiungere membri o funzioni virtuali oppure modificare l'ereditarietà la rompe. Utilizzi SemVer, nasconda l'implementazione con PIMPL, distribuisca più versioni major affiancate ed esegua strumenti di controllo dell'ABI.

Domande Frequenti

La lezione «Versionamento delle API e stabilità dell'ABI» è gratuita?

Sì — il testo completo di «Versionamento delle API e stabilità dell'ABI» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.

Cosa imparerò in «Versionamento delle API e stabilità dell'ABI»?

Pianifichi il versionamento semantico e protegga la stabilità dell'ABI tra le release Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C++ Academy?

Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Versionamento delle API e stabilità dell'ABI»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C++ Academy?

Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Librerie header-only e compilate a confronto
  2. Versionamento delle API e stabilità dell'ABI
  3. Nascondere l'implementazione con PIMPL
  4. Scrivere una moderna libreria di utilità header-only
← Torna a C++ Academy