0Pricing
C++ Academy · Ders

API Sürümleme ve ABI Kararlılığı

Anlamsal sürümlemeyi planlayın ve sürümler arasında ABI kararlılığını koruyun

API Sürümleme ve ABI Kararlılığı, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Birbirinden Farklı İki Uyumluluk

İki uyumluluk konusu vardır:

  • API uyumluluğu — N sürümüne göre derlenen kaynak kodu N+1 sürümüne göre de derlenir
  • ABI uyumluluğu — N sürümüne göre derlenen ikili dosyalar, yeniden derleme olmadan N+1 sürümüyle çalışır

ABI Neden Önemlidir

ABI uyumluluğu, paylaşımlı kütüphanelerin bağımlı bileşenler yeniden derlenmeden yükseltilmesini sağlar. Dağıtımlar, eklentiler ve uzun süre çalışan uygulamalar için kritiktir.

ABI'yi Bozan Değişiklikler

Masum görünen birçok değişiklik ABI'yi bozar:

  • Veri üyelerini eklemek, kaldırmak veya yeniden sıralamak
  • Sanal işlevleri eklemek veya kaldırmak
  • Kalıtımı değiştirmek
  • Şablon parametrelerini değiştirmek
  • Satır içi işlevleri değiştirmek (bazen)

Anlamsal Sürümleme (SemVer)

Uyumluluğu MAJOR.MINOR.PATCH sürüm numaralarıyla ifade edin:

  • MAJOR — geriye dönük uyumluluğu bozan değişiklikler
  • MINOR — yeni özellikler, geriye dönük uyumlu
  • PATCH — düzeltmeler

Başlık Dosyalarında Sürümleme

Başlık dosyalarınızda sürüm makroları sağlayın.

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

Paylaşımlı Kütüphaneler için SONAME

Linux'ta paylaşımlı kütüphaneler, ana sürümü kodlayan bir SONAME değerine sahiptir. Bağlayıcılar ve yükleyici, uyumlu sürümleri bulmak için bu değeri kullanır.

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

Gerçekleştirme Ayrıntılarını Gizleme

Kararlı ABI'ler için gerçekleştirmeyi başlık dosyalarının dışında tutmanız gerekir. Tüketicileri etkilemeden özel üyeler eklemek veya kaldırmak için PIMPL'i (sonraki ders) kullanın.

Derleyici ABI'si

C++ ABI'si derleyiciler arasında farklılık gösterir (GCC ile MSVC farklı ad değiştirme yöntemleri ve sınıf yerleşimleri kullanır). Belirli derleyicilerle oluşturulmuş ikili dosyalar dağıtın veya extern "C" arayüzleriyle sınırlı kalın.

Standart Kütüphane ABI'si

Standart kütüphane de ABI'yi bozabilir — ancak libstdc++ ve libc++ bununla ilgili politikalara sahiptir. Sürümler arası uyumluluğa ihtiyacınız varsa kararlı genel API'nizde std türlerini kullanmaktan kaçının.

Özellikleri Uyumlu Biçimde Ekleme

Güvenli eklemeler:

  • Yeni serbest işlevler
  • Yeni sınıflar
  • Yeni sanal olmayan üye işlevleri (dikkatli olmak koşuluyla)

Güvensiz olan: tüketicilerin yığınında bulunan veya derleme sırasında içine alınan sınıfları değiştirmek.

ABI Denetleme Araçları

İki derlemeyi karşılaştıran araçlar:

  • abidiff — ABI'yi karşılaştırır
  • abicompliance-checker — raporlar oluşturur

Uzun Vadeli Strateji

Baştan kararlılık için tasarım yapın: küçük bir genel API, opak türler, şablonların ve kalıtımın dikkatli kullanımı. Bir kez yayımladıktan sonra ABI'yi bozmak maliyetlidir — ana sürüm artışlarını sınırlayın ve durumu açıkça bildirin.

Hızlı Kontrol

Bir C++ sınıfında hangi değişikliğin ABI'yi bozma olasılığı en yüksektir?

Özet

API uyumluluğu kaynak uyumluluğu, ABI uyumluluğu ise ikili uyumluluk anlamına gelir. ABI kırılgandır — üye eklemek, sanal işlev eklemek veya kalıtımı değiştirmek ABI'yi bozar. SemVer kullanın, gerçekleştirmeyi PIMPL ile gizleyin, birden çok ana sürümü yan yana sunun ve ABI denetleyicilerini çalıştırın.

Sıkça Sorulan Sorular

“API Sürümleme ve ABI Kararlılığı” dersi ücretsiz mi?

Evet — “API Sürümleme ve ABI Kararlılığı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“API Sürümleme ve ABI Kararlılığı” dersinde ne öğreneceğim?

Anlamsal sürümlemeyi planlayın ve sürümler arasında ABI kararlılığını koruyun C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“API Sürümleme ve ABI Kararlılığı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yalnızca Başlık ve Derlenmiş Kütüphaneler
  2. API Sürümleme ve ABI Kararlılığı
  3. PIMPL ile Uygulamayı Gizleme
  4. Modern Yalnızca Başlık İçeren Yardımcı Kütüphane Yazma
← C++ Academy Sayfasına Dön