Spec-Zone.ru › Python 3.14

Версионирование API и ABI

Константы версии на этапе сборки

CPython предоставляет номер своей версии в виде следующих макросов. Обратите внимание: они соответствуют версии кода, с которой он был собран. См. Py_Version — там указана версия, используемая во время выполнения.

Обсуждение стабильности API и ABI в разных версиях см. в разделе Стабильность C API.

PY_MAJOR_VERSION

3 в 3.4.1a2.

PY_MINOR_VERSION

4 в 3.4.1a2.

PY_MICRO_VERSION

1 в 3.4.1a2.

PY_RELEASE_LEVEL

a в 3.4.1a2. Это может быть 0xA для альфа-версии, 0xB для бета-версии, 0xC для кандидата на выпуск или 0xF для финальной версии.

PY_RELEASE_SERIAL

2 в 3.4.1a2. Для финальных выпусков — ноль.

PY_VERSION_HEX

Номер версии Python, закодированный в виде целого числа. Подробности кодирования см. в Py_PACK_FULL_VERSION().

Используйте это значение для числовых сравнений, например, #if PY_VERSION_HEX >= ....

Эти макросы определены в файле Include/patchlevel.h.

Версия во время выполнения

const unsigned long Py_Version
Входит в стабильный ABI начиная с версии 3.11.

Номер версии среды выполнения Python, закодированный в виде одной целочисленной константы. Подробности кодирования см. в Py_PACK_FULL_VERSION(). Это версия Python, используемая во время выполнения.

Используйте это значение для числовых сравнений, например, if (Py_Version >= ...).

Добавлено в версии 3.11.

Макросы для упаковки битов

uint32_t Py_PACK_FULL_VERSION(int major, int minor, int micro, int release_level, int release_serial)
Входит в стабильный ABI начиная с версии 3.14.

Возвращает указанную версию, закодированную в виде 32-битного целого числа со следующей структурой:

Аргумент

Число битов

Маска битов

Сдвиг битов

Примеры значений

3.4.1a2

3.10.0

major

8

0xFF000000

24

0x03

0x03

minor

8

0x00FF0000

16

0x04

0x0A

micro

8

0x0000FF00

8

0x01

0x00

release_level

4

0x000000F0

4

0xA

0xF

release_serial

4

0x0000000F

0

0x2

0x0

Например:

Версия

Аргументы Py_PACK_FULL_VERSION

Закодированная версия

3.4.1a2

(3, 4, 1, 0xA, 2)

0x030401a2

3.10.0

(3, 10, 0, 0xF, 0)

0x030a00f0

Биты аргументов, выходящие за допустимый диапазон, игнорируются. То есть макрос можно определить следующим образом:

#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 — это прежде всего макрос, предназначенный для использования в директивах #if, но он также доступен как экспортируемая функция.

Добавлено в версии 3.14.

uint32_t Py_PACK_VERSION(int major, int minor)
Входит в стабильный ABI начиная с версии 3.14.

Эквивалентно Py_PACK_FULL_VERSION(major, minor, 0, 0, 0). Результат не соответствует ни одному выпуску Python, но полезен для числовых сравнений.

Добавлено в версии 3.14.

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/c-api/apiabiversion.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API