# Керування версіями 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`.

  Use this for numeric comparisons, e.g. `#if PY_VERSION_HEX >= ...`.

  This version is also available via the symbol `Py_Version`.

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

  The Python runtime version number encoded in a single constant integer, with the same format as the `PY_VERSION_HEX` macro. This contains the Python version used at run time.

  Added in version 3.11.

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