# API i wersjonowanie ABI

CPython (standardowa implementacja) ujawnia swój numer wersji w następujących makrach. Należy pamiętać, że odpowiadają one kodowi wersji, z którym został zbudowany, niekoniecznie wersji używanej w czasie działania.

Więcej informacji na temat stabilności API i ABI w różnych wersjach można znaleźć na stronie C API Stability.

PY_MAJOR_VERSION

  `3` w `3.4.1a2`.

PY_MINOR_VERSION

  `4` w `3.4.1a2`.

PY_MICRO_VERSION

  `1` w `3.4.1a2`.

PY_RELEASE_LEVEL

  `a` w `3.4.1a2`. Może to być `0xA` dla wersji alfa, `0xB` dla wersji beta, `0xC` dla wersji kandydującej do wydania lub `0xF` dla wersji finalnej.

PY_RELEASE_SERIAL

  `2` w `3.4.1a2`. Zero dla ostatecznych wydań.

PY_VERSION_HEX

  Numer wersji Pythona zakodowany w pojedynczej liczbie całkowitej.

  Podstawowe informacje wersji można znaleźć, traktując je jako 32-bitową liczbę w następujący sposób:

  Bajty | Bity (kolejność big endian) | Znaczenie | Wartość dla `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`

  Tak więc `3.4.1a2` jest hekswersją `0x030401a2`, a `3.10.0` jest hekswersją `0x030a00f0`.

  Służy do porównywania liczb, np. `#if PY_VERSION_HEX >= ...`.

  Ta strona wersji jest również dostępna za pośrednictwem symbolu `Py_Version`.

const unsigned long Py_Version
  Część stabilnego ABI od wersji 3.11.

  Wersja Python runtime jest zakodowana w pojedynczej stałej liczba całkowita, w tym samym formacie co makro `PY_VERSION_HEX`. Zawiera on Python wersja używany w czasie wykonywania.

  Nowe w wersji 3.11.

Wszystkie podane makra są zdefiniowane w Include/patchlevel.h.