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 3SONAME 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.2Menyembunyikan 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
- Pustaka Hanya-Header vs Terkompilasi
- Pembuatan Versi API dan Stabilitas ABI
- Menyembunyikan Implementasi dengan PIMPL
- Menulis Pustaka Utilitas Hanya-Header Modern