Pengelolaan Versi API dan ABI¶
Konstanta versi build-time¶
CPython memperlihatkan nomor versinya dalam makro berikut ini. Perhatikan bahwa ini sesuai dengan kode versi yang dibangun. Lihat Py_Version untuk versi yang digunakan pada saat run time.
Lihat Stabilitas API C untuk diskusi tentang stabilitas API dan ABI di seluruh versi.
-
PY_MAJOR_VERSION¶
3di3.4.1a2.
-
PY_MINOR_VERSION¶
4di3.4.1a2.
-
PY_MICRO_VERSION¶
1di3.4.1a2.
-
PY_RELEASE_LEVEL¶
adi3.4.1a2. Ini bisa berupa0xAuntuk versi alfa,0xBuntuk versi beta,0xCuntuk kandidat rilis atau0xFuntuk versi final.
-
PY_RELEASE_SERIAL¶
2di3.4.1a2. Nol untuk rilis final.
-
PY_VERSION_HEX¶
Nomor versi Python dikodekan dalam sebuah bilangan bulat. Lihat
Py_PACK_FULL_VERSION()untuk mengetahui detail pengodean.Gunakan ini untuk perbandingan numerik, misalnya,
#if PY_VERSION_HEX >= ....
Versi run-time¶
-
const unsigned long Py_Version¶
- Part of the Stable ABI since version 3.11.
Nomor versi runtime Python yang dikodekan dalam sebuah bilangan bulat konstan. Lihat
Py_PACK_FULL_VERSION()untuk detail pengodean. Ini berisi versi Python yang digunakan pada saat dijalankan.Gunakan ini untuk perbandingan numerik, misalnya,
if (Py_Version >= ...).Added in version 3.11.
Makro pengemasan bit¶
-
uint32_t Py_PACK_FULL_VERSION(int major, int minor, int micro, int release_level, int release_serial)¶
- Part of the Stable ABI since version 3.14.
Mengembalikan versi yang diberikan, dikodekan sebagai bilangan bulat 32-bit tunggal dengan struktur berikut:
Argumen
Jumlah bit
Topeng bit
Pergeseran bit
Contoh nilai
3.4.1a23.10.0major
8
0xFF00000024
0x030x03minor
8
0x00FF000016
0x040x0Amikro
8
0x0000FF008
0x010x00release_level
4
0x000000F04
0xA0xFrelease_serial
4
0x0000000F0
0x20x0Sebagai contoh:
Versi
argumen
Py_PACK_FULL_VERSIONVersi yang dikodekan
3.4.1a2(3, 4, 1, 0xA, 2)0x030401a23.10.0(3, 10, 0, 0xF, 0)0x030a00f0Bit yang berada di luar jangkauan dalam argumen akan diabaikan. Artinya, makro dapat didefinisikan sebagai:
#ifndef Py_PACK_FULL_VERSION #define Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \ (((X) & 0xff) << 24) | \ (((Y) & 0xff) << 16) | \ (((Z) & 0xff) << 8) | \ (((LEVEL) & 0xf) << 4) | \ (((SERIAL) & 0xf) << 0)) #endif
Py_PACK_FULL_VERSIONpada dasarnya adalah makro, yang dimaksudkan untuk digunakan dalam arahan#if, tetapi juga tersedia sebagai fungsi yang diekspor.Added in version 3.14.
-
uint32_t Py_PACK_VERSION(int major, int minor)¶
- Part of the Stable ABI since version 3.14.
Setara dengan
Py_PACK_FULL_VERSION(major, minor, 0, 0, 0). Hasilnya tidak terikat dengan rilis Python apa pun, tetapi berguna dalam perbandingan numerik.Added in version 3.14.