17db96d56Sopenharmony_ci.. highlight:: c 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ci.. _apiabiversion: 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ci*********************** 67db96d56Sopenharmony_ciAPI and ABI Versioning 77db96d56Sopenharmony_ci*********************** 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ciCPython exposes its version number in the following macros. 107db96d56Sopenharmony_ciNote that these correspond to the version code is **built** with, 117db96d56Sopenharmony_cinot necessarily the version used at **run time**. 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ciSee :ref:`stable` for a discussion of API and ABI stability across versions. 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci.. c:macro:: PY_MAJOR_VERSION 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci The ``3`` in ``3.4.1a2``. 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ci.. c:macro:: PY_MINOR_VERSION 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci The ``4`` in ``3.4.1a2``. 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci.. c:macro:: PY_MICRO_VERSION 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci The ``1`` in ``3.4.1a2``. 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ci.. c:macro:: PY_RELEASE_LEVEL 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci The ``a`` in ``3.4.1a2``. 307db96d56Sopenharmony_ci This can be ``0xA`` for alpha, ``0xB`` for beta, ``0xC`` for release 317db96d56Sopenharmony_ci candidate or ``0xF`` for final. 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_ci.. c:macro:: PY_RELEASE_SERIAL 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ci The ``2`` in ``3.4.1a2``. Zero for final releases. 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci.. c:macro:: PY_VERSION_HEX 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci The Python version number encoded in a single integer. 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci The underlying version information can be found by treating it as a 32 bit 427db96d56Sopenharmony_ci number in the following manner: 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci +-------+-------------------------+-------------------------+--------------------------+ 457db96d56Sopenharmony_ci | Bytes | Bits (big endian order) | Meaning | Value for ``3.4.1a2`` | 467db96d56Sopenharmony_ci +=======+=========================+=========================+==========================+ 477db96d56Sopenharmony_ci | 1 | 1-8 | ``PY_MAJOR_VERSION`` | ``0x03`` | 487db96d56Sopenharmony_ci +-------+-------------------------+-------------------------+--------------------------+ 497db96d56Sopenharmony_ci | 2 | 9-16 | ``PY_MINOR_VERSION`` | ``0x04`` | 507db96d56Sopenharmony_ci +-------+-------------------------+-------------------------+--------------------------+ 517db96d56Sopenharmony_ci | 3 | 17-24 | ``PY_MICRO_VERSION`` | ``0x01`` | 527db96d56Sopenharmony_ci +-------+-------------------------+-------------------------+--------------------------+ 537db96d56Sopenharmony_ci | 4 | 25-28 | ``PY_RELEASE_LEVEL`` | ``0xA`` | 547db96d56Sopenharmony_ci + +-------------------------+-------------------------+--------------------------+ 557db96d56Sopenharmony_ci | | 29-32 | ``PY_RELEASE_SERIAL`` | ``0x2`` | 567db96d56Sopenharmony_ci +-------+-------------------------+-------------------------+--------------------------+ 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci Thus ``3.4.1a2`` is hexversion ``0x030401a2`` and ``3.10.0`` is 597db96d56Sopenharmony_ci hexversion ``0x030a00f0``. 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ci Use this for numeric comparisons, e.g. ``#if PY_VERSION_HEX >= ...``. 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci This version is also available via the symbol :data:`Py_Version`. 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci.. c:var:: const unsigned long Py_Version 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci The Python runtime version number encoded in a single constant integer, with 687db96d56Sopenharmony_ci the same format as the :c:macro:`PY_VERSION_HEX` macro. 697db96d56Sopenharmony_ci This contains the Python version used at run time. 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci .. versionadded:: 3.11 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ciAll the given macros are defined in :source:`Include/patchlevel.h`. 74