[Python-Dev] Procedure for adding new public C API

Steve Dower steve.dower at python.org
Tue May 22 13:00:31 EDT 2018


On 21May2018 0708, Paul Moore wrote:
> On 21 May 2018 at 14:42, Serhiy Storchaka <storchaka at gmail.com> wrote:
>>> Is it even acceptable to add a symbol into the limited ABI? I thought
>>> the idea was that if I linked with python3.dll, my code would work
>>> with any version of Python 3? By introducing new symbols, code linked
>>> with the python3.dll shipped with (say) Python 3.8 would fail to run
>>> if executed with the python3.dll from Python 3.5.
>>
>> The limited API is versioned. If you use only Python 3.5 API (define
>> Py_LIMITED_API to 0x03050000), the built code will be expected to work on
>> 3.5 and later. In theory.
> 
> Thanks, I'd missed that point (I need to go and check my build
> process, in that case :-)).

The fact that the headers and python3.def claim different functions are 
in the limited API basically breaks any ability to use this. You really 
do need to build with the oldest possible version.

Alternatively, we can try again to get everyone to agree that since 
their APIs shipped as stable in earlier versions that we need to 
actually make them stable (or take a breaking backwards incompatible 
change to make them non-stable). Last time Zach and I attempted this we 
got nowhere. (There's a bug on bpo somewhere with details and helper 
scripts, as well as unrecorded discussions from the sprints a couple 
years ago.)

Sorry to be the bearer of bad news.

Cheers,
Steve


More information about the Python-Dev mailing list