API と ABI のバージョニング
***************************

CPython は以下のマクロでバージョン番号を公開しています。これらはコード
が **ビルドされた** バージョンに対応しており、必ずしも **実行時** に使
われるバージョンではないことに注意してください。

バージョン間の API と ABI の安定性については C API の安定性 を参照して
ください。

PY_MAJOR_VERSION

   "3.4.1a2" の "3" 。

PY_MINOR_VERSION

   "3.4.1a2" の "4" 。

PY_MICRO_VERSION

   "3.4.1a2" の "1" 。

PY_RELEASE_LEVEL

   "3.4.1a2" の "a" 。アルファでは "0xA" 、ベータでは "0xB" 、リリース
   候補では "0xC" 、最終版では "0xF" となります。

PY_RELEASE_SERIAL

   "3.4.1a2" の "2" 。最終リリースでは 0 になります。

PY_VERSION_HEX

   Python のバージョン番号を単一の整数に符号化したものです。

   下記のように32ビットの値として扱うことで、バージョン情報を得ること
   ができます:

   +---------+---------------------------+---------------------------+----------------------------+
   | bytes   | ビット (ビッグエンディア  | 意味                      | "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" は16進数で "0x030401a2" であり、 "3.10.0" は
   16進数で "0x030a00f0" です。

   これを数値比較に使用します。例えば、 "#if PY_VERSION_HEX >= ..." 。

   このバージョンはシンボル "Py_Version" からも入手できます。

const unsigned long Py_Version
    * 次に属します: Stable ABI (バージョン 3.11 より).*

   "PY_VERSION_HEX" マクロと同じ書式で、単一の定数整数でエンコードされ
   た Python の実行時のバージョン番号です。これは実行時に使用される
   Python のバージョンを含んでいます。

   Added in version 3.11.

これらのマクロは Include/patchlevel.h で定義されています。
