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¶
3
di3.4.1a2
.
-
PY_MINOR_VERSION¶
4
di3.4.1a2
.
-
PY_MICRO_VERSION¶
1
di3.4.1a2
.
-
PY_RELEASE_LEVEL¶
a
di3.4.1a2
. Ini bisa berupa0xA
untuk versi alfa,0xB
untuk versi beta,0xC
untuk kandidat rilis atau0xF
untuk versi final.
-
PY_RELEASE_SERIAL¶
2
di3.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.1a2
3.10.0
major
8
0xFF000000
24
0x03
0x03
minor
8
0x00FF0000
16
0x04
0x0A
mikro
8
0x0000FF00
8
0x01
0x00
release_level
4
0x000000F0
4
0xA
0xF
release_serial
4
0x0000000F
0
0x2
0x0
Sebagai contoh:
Versi
argumen
Py_PACK_FULL_VERSION
Versi yang dikodekan
3.4.1a2
(3, 4, 1, 0xA, 2)
0x030401a2
3.10.0
(3, 10, 0, 0xF, 0)
0x030a00f0
Bit 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_VERSION
pada 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.