This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author ncoghlan
Recipients eric.snow, jkloth, ncoghlan, pitrou, serhiy.storchaka, vstinner, yselivanov
Date 2017-07-07.01:59:21
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1499392762.68.0.3413338947.issue30860@psf.upfronthosting.co.za>
In-reply-to
Content
The core motivation driving the original refactoring was to better understand and consolidate our runtime state in order to clarify what the GIL is actually protecting (aside from the reference counts). That then turned out to have surprising performance benefits (presumably by way of loading all of this state permanently into the CPU cache and then keeping it there).

The changes to the public include files arise more from the fact we don't currently have a common place to put internal CPython headers for declarations we want to share across compilation modules.

I agree the latter is confusing, and it could be worth having a separate "Include/internal/CPython.h" header that outright failed the build if you attempted to include it without Py_BUILD_CORE set.

(This also ties into my comments on the PR, where I believe the current approach of mixing public and private state in the same structs will cause problems with compilers generating incorrect field offsets in extension modules and embedding applications)
History
Date User Action Args
2017-07-07 01:59:22ncoghlansetrecipients: + ncoghlan, pitrou, vstinner, jkloth, eric.snow, serhiy.storchaka, yselivanov
2017-07-07 01:59:22ncoghlansetmessageid: <1499392762.68.0.3413338947.issue30860@psf.upfronthosting.co.za>
2017-07-07 01:59:22ncoghlanlinkissue30860 messages
2017-07-07 01:59:21ncoghlancreate