0Pricing
C++ Academy · Pelajaran

Pembuatan Versi API dan Stabilitas ABI

Rencanakan pembuatan versi semantik dan lindungi stabilitas ABI di seluruh rilis

Pembuatan Versi API dan Stabilitas ABI adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Dua Kompatibilitas yang Berbeda

Dua hal yang perlu diperhatikan terkait kompatibilitas:

  • Kompatibilitas API — kode sumber yang dikompilasi terhadap versi N juga dapat dikompilasi terhadap N+1
  • Kompatibilitas ABI — biner yang dikompilasi terhadap versi N dapat digunakan dengan N+1 tanpa dikompilasi ulang

Mengapa ABI Penting

Kompatibilitas ABI memungkinkan pustaka bersama ditingkatkan tanpa mengompilasi ulang dependensinya. Hal ini penting bagi distribusi, pengaya, dan aplikasi yang digunakan dalam jangka panjang.

Hal-Hal yang Merusak ABI

Banyak perubahan yang tampak tidak berbahaya dapat merusak ABI:

  • Menambahkan, menghapus, atau mengurutkan ulang anggota data
  • Menambahkan atau menghapus fungsi virtual
  • Mengubah pewarisan
  • Mengubah parameter templat
  • Mengubah fungsi inline (terkadang)

Penerapan Versi Semantik (SemVer)

Komunikasikan kompatibilitas melalui nomor versi MAJOR.MINOR.PATCH:

  • MAJOR — perubahan yang merusak kompatibilitas
  • MINOR — fitur baru, kompatibel dengan versi sebelumnya
  • PATCH — perbaikan

Pemberian Versi pada Header

Sediakan makro versi di dalam header Anda.

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

SONAME untuk Pustaka Bersama

Di Linux, pustaka bersama memiliki SONAME yang menyandikan versi mayor. Pengait dan pemuat menggunakannya untuk menemukan versi yang kompatibel.

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

Menyembunyikan Detail Implementasi

ABI yang stabil mengharuskan implementasi tidak berada di dalam header. Gunakan PIMPL (pada pelajaran berikutnya) untuk menambah atau menghapus anggota privat tanpa memengaruhi pengguna.

ABI Kompiler

ABI C++ berbeda-beda antar-kompiler (GCC dan MSVC menggunakan pengacakan nama serta tata letak kelas yang berbeda). Distribusikan biner yang dibangun dengan kompiler tertentu, atau gunakan antarmuka extern "C".

ABI Pustaka Standar

Pustaka standar juga dapat merusak ABI — meskipun libstdc++ dan libc++ memiliki kebijakan tertentu. Hindari tipe std dalam API publik stabil jika Anda memerlukan kompatibilitas lintas versi.

Menambahkan Fitur secara Kompatibel

Penambahan yang aman:

  • Fungsi bebas baru
  • Kelas baru
  • Fungsi anggota nonvirtual baru (dengan hati-hati)

Tidak aman: mengubah kelas yang digunakan pengguna di stack atau yang sudah dikompilasi.

Alat untuk Memeriksa ABI

Alat yang membandingkan dua hasil pembangunan:

  • abidiff — membandingkan ABI
  • abicompliance-checker — menghasilkan laporan

Strategi Jangka Panjang

Rancang kestabilan sejak awal: API publik yang kecil, tipe opak, serta penggunaan templat dan pewarisan yang cermat. Setelah dirilis, perubahan yang merusak ABI mahal dilakukan — tetapkan kenaikan versi mayor dan komunikasikan dengan jelas.

Pemeriksaan Singkat

Perubahan apa pada kelas C++ yang paling mungkin merusak ABI?

Ringkasan

Kompatibilitas API berarti kompatibilitas kode sumber; kompatibilitas ABI berarti kompatibilitas biner. ABI rapuh — menambahkan anggota, fungsi virtual, atau mengubah pewarisan dapat merusaknya. Gunakan SemVer, sembunyikan implementasi dengan PIMPL, kirim beberapa versi mayor secara berdampingan, dan jalankan pemeriksa ABI.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pembuatan Versi API dan Stabilitas ABI” gratis?

Ya — teks lengkap “Pembuatan Versi API dan Stabilitas ABI” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pembuatan Versi API dan Stabilitas ABI”?

Rencanakan pembuatan versi semantik dan lindungi stabilitas ABI di seluruh rilis Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Pembuatan Versi API dan Stabilitas ABI” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pustaka Hanya-Header vs Terkompilasi
  2. Pembuatan Versi API dan Stabilitas ABI
  3. Menyembunyikan Implementasi dengan PIMPL
  4. Menulis Pustaka Utilitas Hanya-Header Modern
← Kembali ke C++ Academy