[Python-Dev] What version is an extension module binary compatible with

Paul Moore p.f.moore at gmail.com
Tue Mar 28 12:18:41 EDT 2017


On 28 March 2017 at 12:24, Miro Hrončok <mhroncok at redhat.com> wrote:
> I'd like some clarification on what ABI compatibility we can expect.
>  * Should the ABI be stable across patch releases (so calling
> PySlice_AdjustIndices from an existing macro would be a bug)?
>  * Should the ABI be forward-compatible within a minor release (so modules
> built for 3.6.0 should be usable with 3.6.1, but not vice versa)?
>  * Or should we expect the ABI to change even across patch releases?

Given that binary wheels are built against a specific minor version
(3.6, 3.5, ...) I would expect the ABI to be consistent over a minor
release. That would fit with my expectations of the compatibility
guarantees on patch releases.

So I from what you describe, I'd consider this as a bug. Certainly, if
someone built a C extension as a wheel using Python 3.6.1, it would be
tagged as compatible with cp36, and pip would happily use it when
installing to a Python 3.6.0 system, where it would fail.

Paul


More information about the Python-Dev mailing list