[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