Nick Coghlan <ncogh...@gmail.com> added the comment:

> To be honest, I'm not sure that I understand how "Py_LIMITED_API+0 >= 
> 0x03050000" works and should be used.


It's described here: https://docs.python.org/3/c-api/stable.html

If a stable ABI consumer just declares "#define PY_LIMITED_API 1", then they'll 
get the original stable ABI as defined in Python 3.2.

If they don't care about versions prior to 3.6, they can instead declare 
"#define PY_LIMITED_API 0x03060000", and get access to the functions added to 
the stable ABI in 3.3, 3.4, 3.5, and 3.6.

For this PR though, I think it's OK to ignore that detail, as once all the 
internal APIs are in "Include/internal", and all the APIs that don't offer ABI 
stability guarantees are in "Include/TBD" (see note below), then the general 
rule to follow is that everything added to the headers directly in "Include/" 
needs a Py_LIMITED_API guard that matches the upcoming release.


Note: I wrote "TBD" rather than "pycapi" above, as "pycapi" sounds like the 
name of a preferred public API to me, rather than "code compiled against this 
API is not portable to later versions, and may not be portable to other 
implementations". Given the name of the macro, "Include/unlimited/*.h" may make 
sense, especially if those header files are all written to error out at compile 
time if PY_LIMITED_API is defined. "Include/unstable_abi/*.h" would be another 
self-describing name.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35134>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to