Uh oh!
There was an error while loading. Please reload this page.
gh-146636: PEP 803: Reference documentation - #148013
Conversation
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
ZeroIntensity
left a comment
There was a problem hiding this comment.
Congrats on the PEP acceptance :)
Mostly editorial comments from me. The content generally looks good.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| Note that compiling for Stable ABI is *not* a complete guarantee that code will | ||
| be compatible with the expected Python versions. | ||
| Stable ABI prevents *ABI* issues, like linker errors due to missing |
There was a problem hiding this comment.
I think we need to precede "Stable ABI" with "the"?
| Note that compiling for Stable ABI is *not* a complete guarantee that code will | |
| be compatible with the expected Python versions. | |
| Stable ABI prevents *ABI* issues, like linker errors due to missing | |
| Note that compiling for the Stable ABI is *not* a complete guarantee that code will | |
| be compatible with the expected Python versions. | |
| The Stable ABI prevents *ABI* issues, like linker errors due to missing |
There was a problem hiding this comment.
Yeah, not too sure about the rules here. What about "the Stable ABIs"?
There was a problem hiding this comment.
The way I wrote it still sounds best to me...
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
StanFromIreland
commented
Apr 2, 2026
The new check caught removals: https://github.com/python/cpython/actions/runs/23907059205/job/69719041532?pr=148013 (and on your PR out of everyone's ;-) |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
ngoldbaum
left a comment
There was a problem hiding this comment.
Thanks for putting this together! I left a few comments inline, please take them or leave them as you see fit.
Uh oh!
There was an error while loading. Please reload this page.
| When using a build tool (for example, ``setuptools``), the tool is | ||
| generally responsible for setting macros and synchronizing them with | ||
| extension filenames and other metadata. | ||
| Prefer using the tool's options over defining the macros manually. |
There was a problem hiding this comment.
Maybe setuptools is a poor example to use above then? Because setuptools expects users to set the build flags manually...
You could delete the "(For example, SetupTools)" above, or maybe refer to meson-python or scikit-build-core instead? These days that's what I recommend to people depending on if they already use CMake or not.
There was a problem hiding this comment.
AFAIK Setuptools is the most widely known build tool; the example is there to clarify what kind of “build tool” I'm talking about.
Setuptools has a --py_limited_api argument. All tools will ideally need an update for abi3t.
Uh oh!
There was an error while loading. Please reload this page.
| The goal for the Limited API is to allow everything that is possible with the | ||
| - define both :c:macro:`!Py_LIMITED_API` and :c:macro:`!Py_TARGET_ABI3T`, or | ||
| - define only :c:macro:`!Py_LIMITED_API` and build for free-threaded Python. |
There was a problem hiding this comment.
| - define only :c:macro:`!Py_LIMITED_API` and build for free-threaded Python. | |
| - Define only :c:macro:`!Py_LIMITED_API` and define :c:macro:`!Py_GIL_DISABLED`. | |
| This happens automatically with a free-threaded interpreter, except on Windows. |
There was a problem hiding this comment.
I think defining Py_GIL_DISABLED "manually" is still only supported on Windows.
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Uh oh!
There was an error while loading. Please reload this page.
encukou
commented
Apr 14, 2026
I've addressed the comments; does anyone want to re-review? |
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
📚 Documentation preview 📚: https://cpython-previews--148013.org.readthedocs.build/