# Керування версіями API та ABI

CPython розкриває номер своєї версії в наступних макросах. Зауважте, що вони відповідають коду версії, з яким зібрано, не обов’язково версії, яка використовується під час виконання.

Перегляньте Стабільність C API для обговорення стабільності API та ABI у різних версіях.

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, закодований одним цілим числом.

  Базову інформацію про версію можна знайти, розглядаючи її як 32-розрядне число таким чином:

  Байти | Біти (великий порядок байтів) | Значення | Значення для `3.4.1a2`
  --- | --- | --- | ---
  1 | 1-8 | `PY_MAJOR_VERSION` | `0x03`
  2 | 9-16 | `PY_MINOR_VERSION` | `0x04`
  3 | 17-24 | `PY_MICRO_VERSION` | `0x01`
  4 | 25-28 | `PY_RELEASE_LEVEL` | `0xA`
  29-32 | `PY_RELEASE_SERIAL` | `0x2`

  Таким чином, `3.4.1a2` є шістнадцятковою версією `0x030401a2`, а `3.10.0` є шістнадцятковою версією `0x030a00f0`.

  Використовується для числових порівнянь, напр. `#if PY_VERSION_HEX >= ...`

  Ця версія також доступна як `Py_Version`.

const unsigned long Py_Version
  Part of the Stable ABI since version 3.11.

  Версія середовища виконання Python, представлена як єдина ціла константа, у тому ж форматі, що й макрос `PY_VERSION_HEX`. Містить версію Python, що використовується під час виконання.

  Added in version 3.11.

Усі вказані макроси визначено в Include/patchlevel.h.