Strategi versi Qiskit SDK
Nombor versi Qiskit mengikut Semantic Versioning.
Nombor versi terdiri daripada tiga komponen utama: versi utama, kecil, dan
tampalan. Contohnya, dalam nombor versi X.Y.Z, X ialah versi utama,
Y ialah versi kecil, dan Z ialah versi tampalan.
Perubahan API yang memecahkan keserasian dikhaskan untuk keluaran versi utama. Tempoh minimum antara keluaran versi utama ialah satu tahun. Versi kecil memperkenalkan ciri baharu dan pembetulan pepijat tanpa memecahkan keserasian API, dan diterbitkan secara berkala (kini setiap tiga bulan) untuk versi utama semasa sahaja. Versi tampalan menyediakan pembetulan untuk pepijat yang dikenal pasti dalam versi kecil terkini bagi setiap siri keluaran yang disokong secara aktif (iaitu, versi utama). Kami menyokong paling banyak dua siri keluaran pada satu masa, yang berlaku hanya semasa tempoh pertindihan berikutan keluaran versi utama baharu, seperti yang diterangkan dengan lebih terperinci di bawah.
Jadual keluaranβ
Jadual keluaran tentatif disertakan di bawah:
Untuk jadual keluaran yang terkini, rujuk senarai pencapaian projek GitHub Qiskit, yang akan sentiasa mengandungi pelan keluaran semasa.
Dengan keluaran versi utama baharu, versi utama sebelumnya disokong selama sekurang-kurangnya enam bulan dengan pembetulan pepijat sahaja, dan satu tahun untuk pembetulan keselamatan. Semasa tempoh ini, hanya keluaran tampalan yang diterbitkan untuk versi utama ini. Versi tampalan terakhir diterbitkan apabila sokongan dihentikan, dan keluaran itu juga mendokumentasikan penghujung sokongan untuk siri versi utama tersebut. Tetingkap sokongan yang lebih panjang diperlukan untuk versi utama sebelumnya kerana ini memberi peluang kepada pengguna hiliran Qiskit dan pengguna mereka untuk berhijrah kod mereka. Pustaka hiliran yang bergantung pada Qiskit tidak sepatutnya menaikkan versi minimum Qiskit yang diperlukan ke versi utama baharu sejurus selepas keluarannya kerana pangkalan pengguna pustaka memerlukan masa untuk berhijrah ke perubahan API baharu. Mempunyai tetingkap sokongan yang dipanjangkan untuk versi utama Qiskit sebelumnya memberi projek hiliran masa untuk memastikan keserasian dengan versi utama seterusnya. Projek hiliran boleh menyediakan sokongan untuk dua siri keluaran pada satu masa untuk memberi pengguna mereka laluan penghijrahan.
Untuk tujuan penomboran semantik, API awam Qiskit dianggap
sebagai mana-mana modul, kelas, fungsi, atau kaedah yang didokumentasikan yang tidak ditandai sebagai peribadi
(dengan awalan garis bawah _). Walau bagaimanapun, terdapat pengecualian eksplisit yang boleh dibuat untuk
API yang didokumentasikan tertentu. Dalam kes sedemikian, API ini akan didokumentasikan dengan jelas
sebagai antara muka yang belum stabil lagi, dan amaran yang kelihatan oleh pengguna akan
dikeluarkan secara aktif pada mana-mana penggunaan antara muka tidak stabil ini. Selain itu, dalam beberapa
situasi, antara muka yang ditandai sebagai peribadi dianggap sebagai sebahagian dari API awam.
Biasanya ini hanya berlaku dalam dua kes: sama ada definisi antara muka abstrak
di mana subkelas dimaksudkan untuk mengatasi/mengimplementasikan kaedah peribadi
sebagai sebahagian dari mendefinisikan implementasi antara muka, atau kaedah peringkat rendah penggunaan lanjutan
yang mempunyai antara muka stabil tetapi tidak dianggap selamat untuk digunakan,
kerana beban ada pada pengguna untuk menegakkan invarian kelas/keselamatan sendiri
(contoh kanonik ialah kaedah QuantumCircuit._append).
Versi Python yang disokong, versi Rust minimum yang disokong (untuk membina Qiskit dari sumber), dan sebarang kebergantungan pakej Python (termasuk versi minimum kebergantungan yang disokong) yang digunakan oleh Qiskit bukan sebahagian dari jaminan keserasian ke belakang dan mungkin berubah semasa mana-mana keluaran. Hanya keluaran versi kecil atau utama akan menaikkan keperluan minimum untuk menggunakan atau membina Qiskit (termasuk menambah kebergantungan baharu), tetapi pembetulan tampalan mungkin termasuk sokongan untuk versi Python baharu atau kebergantungan lain. Biasanya versi minimum sesebuah kebergantungan hanya ditingkatkan apabila versi kebergantungan lama tamat sokongan atau apabila tidak mungkin untuk mengekalkan keserasian dengan keluaran terkini kebergantungan dan versi yang lebih lama.
Strategi naik tarafβ
Apabila versi utama baharu dikeluarkan, laluan naik taraf yang disyorkan
ialah naik taraf dahulu ke versi kecil terkini pada versi utama sebelumnya. Sejurus sebelum versi utama baharu, versi kecil terakhir akan
diterbitkan. Keluaran versi kecil terakhir X.Y+1.0.0 ini bersamaan dengan
X.Y.0 tetapi dengan amaran dan susut nilai untuk sebarang perubahan API yang dibuat
pada siri versi utama baharu.
Contohnya, sejurus mendahului keluaran 1.0.0, keluaran 0.46.0 akan diterbitkan. Keluaran 0.46.0 akan bersamaan dengan keluaran 0.45.0 tetapi dengan amaran susut nilai tambahan yang mendokumentasikan perubahan API yang dibuat sebagai sebahagian dari keluaran 1.0.0. Corak ini akan digunakan untuk mana-mana keluaran versi utama masa hadapan.
Pengguna Qiskit sepatutnya naik taraf dahulu ke versi kecil terakhir ini
untuk melihat sebarang amaran susut nilai dan menyesuaikan penggunaan Qiskit mereka
sebelum mencuba keluaran yang berpotensi memecahkan. Versi utama sebelumnya
akan disokong selama sekurang-kurangnya enam bulan untuk memberi masa yang mencukupi
untuk naik taraf. Corak tipikal untuk mengurus ini ialah menetapkan had versi maksimum untuk
mengelak menggunakan siri keluaran utama seterusnya sehingga anda pasti tentang keserasian.
Contohnya, menyatakan qiskit<2 dalam fail keperluan apabila versi utama Qiskit semasa ialah 1 memastikan bahawa anda menggunakan versi Qiskit
yang tidak mempunyai perubahan API yang memecahkan keserasian.
Mengehadkan versi di bawah versi utama seterusnya
memastikan bahawa anda melihat sebarang amaran susut nilai sebelum
keluaran versi utama.
Tanpa had, pip memasang
versi terbaru yang tersedia secara lalai.
Format siri QPY adalah serasi ke belakang supaya keluaran Qiskit baharu sentiasa boleh memuatkan fail QPY
yang dijana dengan keluaran Qiskit yang lebih awal. Walau bagaimanapun, format ini tidak serasi ke hadapan supaya, pada prinsipnya, tidak mungkin
untuk memuatkan fail QPY yang dijana dengan versi Qiskit yang lebih baharu menggunakan keluaran yang lebih lama. Untuk memudahkan penghijrahan pengguna merentas keluaran versi utama, fungsi qiskit.qpy.dump() akan sentiasa menyokong sekurang-kurangnya satu versi bertindih antara keluaran X.0.0 dan X-1.Y.0 (di mana Y ialah versi kecil terakhir
siri tersebut). Parameter qiskit.qpy.dump(..., version=...) akan membolehkan menyimpan fail format QPY yang boleh dimuatkan oleh kedua-dua versi utama dari keluaran yang lebih baharu.
Lihat butiran lanjut dalam RFC 0020.
Pra-keluaranβ
Untuk setiap keluaran versi kecil dan utama, Qiskit menerbitkan pra-keluaran yang
serasi dengan PEP440. Biasanya
ini adalah calon keluaran dalam bentuk X.Y.0rc1. Keluaran rc
akan mempunyai permukaan API yang dimuktamadkan dan digunakan untuk menguji keluaran yang dicadangkan.
Perhatikan bahawa apabila salah satu akhiran pra-keluaran PEP440 (seperti a, b, atau pre) diterbitkan, ia tidak mempunyai jaminan yang sama seperti keluaran rc, dan merupakan
keluaran pratonton sahaja. API mungkin berubah antara pra-keluaran ini
dan keluaran muktamad dengan nombor versi tersebut. Contohnya, 1.0.0pre1 mungkin mempunyai
API muktamad yang berbeza daripada 1.0.0.
Pasca-keluaranβ
Jika terdapat masalah dengan pembungkusan sesebuah keluaran, pasca-keluaran mungkin
dikeluarkan untuk membetulkannya. Ini akan mengikut bentuk X.Y.Z.1 di mana integer keempat menunjukkan bahawa ia adalah pasca-keluaran pertama bagi keluaran X.Y.Z.
Contohnya, keluaran qiskit-terra (nama pakej legasi untuk Qiskit) 0.25.2
mempunyai beberapa masalah dengan penerbitan pakej sdist, dan pasca-keluaran
0.25.2.1 diterbitkan yang membetulkan masalah ini. Kod tersebut adalah sama, dan
0.25.2.1 hanya membetulkan masalah pembungkusan untuk keluaran tersebut.
Cara penyumbang boleh menandakan susut nilaiβ
Rujuk panduan susut nilai dalam repositori Qiskit SDK untuk arahan tentang cara menambah susut nilai ke kod sumber.