稳定的应用程序二进制接口
************************

传统上，Python的C API将随每个版本而变化。大多数更改都与源代码兼容，通
常只添加API，而不是更改现有API或删除API（尽管某些接口会首先弃用然后再
删除）。

不幸的是，API兼容性没有扩展到二进制兼容性（ABI）。原因主要是结构定义的
演变，在这里添加新字段或更改字段类型可能不会破坏API，但可能会破坏ABI。
因此，每个Python版本都需要重新编译扩展模块（即使在未使用任何受影响的接
口的情况下，Unix上也可能会出现异常）。此外，在Windows上，扩展模块与特
定的pythonXY.dll链接，需要重新编译才能与新的pythonXY.dll链接。

从Python3.2起，已经声明了一个API的子集，以确保稳定的ABI。如果使用此API
（也被称为“受限API”）的扩展模块需要定义``Py_LIMITED_API``。许多解释器
细节将从扩展模块中隐藏;  反过来，在任何3.x版本（x>=2）上构建的模块都不
需要重新编译

在某些情况下，需要添加新函数来扩展稳定版 ABI。希望使用这些新 API 的扩
展模块需要将 "Py_LIMITED_API" 设置为他们想要支持的最低 Python 版本的
"PY_VERSION_HEX" 值（例如： Python 3.3 为 "0x03030000"）（参见 API 和
ABI 版本管理）。此类模块将适用于所有后续 Python版本，但无法在旧版本上
加载（因为缺少符号）。

从Python 3.2开始，受限API可用的函数集记录在 **PEP 384** 。在C API文档
中，不属于受限API的API元素标记为 “不属于受限API” 。
