Uh oh!
There was an error while loading. Please reload this page.
bpo-45953: Statically allocate the main interpreter (and initial thread state). - #29883
Conversation
| int | ||
| _PyEval_InitState(struct _ceval_state *ceval) | ||
| void | ||
| _PyEval_InitState(struct _ceval_state *ceval, PyThread_type_lock pending_lock) |
There was a problem hiding this comment.
Would this be a good opportunity to remove this function?
The _pending_calls struct belongs on the interpreter state, not on the ceval as only the main interpreter can handle them.
There was a problem hiding this comment.
There's enough going on in this PR that I'd rather not.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
markshannon
left a comment
There was a problem hiding this comment.
A couple of tests have been inverted.
bedevere-bot
commented
Dec 2, 2021
When you're done making the requested changes, leave the comment: |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| } _preallocated; | ||
| }; | ||
| #define _PyInterpreterState_INIT \ |
There was a problem hiding this comment.
This is only used once, please remove it.
There was a problem hiding this comment.
FYI, I brought this back to avoid so much nesting and clutter in _PyRuntimeState_INIT.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| } _preallocated; | ||
| } _PyRuntimeState; | ||
| #define _PyRuntimeState_INIT \ |
There was a problem hiding this comment.
Might as well remove this as well. It is also only used once.
There was a problem hiding this comment.
Should _Py_global_objects_INIT also move? It's pretty big and likely to get much bigger.
There was a problem hiding this comment.
Actually, _PyRuntimeState_INIT is used twice.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
ericsnowcurrently
commented
Jan 12, 2022
With basically all feedback addressed I plan on merging this soon, to unblock other changes I have waiting. If I missed something, I'd be glad to address it in a follow-up PR. |
gvanrossum
commented
Jan 12, 2022
via email
Fine with me. …On Wed, Jan 12, 2022 at 2:56 PM Eric Snow ***@***.***> wrote:
With basically all feedback addressed I plan on merging this soon, to
unblock other changes I have waiting. If I missed something, I'd be glad to
address it in a follow-up PR.
—
Reply to this email directly, view it on GitHub
<#29883 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAWCWMXNEYDUC6YIRLTJAEDUVYBIXANCNFSM5JFJMYAA>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
-- --Guido van Rossum (python.org/~guido) |
As of CPython 3.11 (via python/cpython#29883) stdbool.h is now included in Python.h so do attempt to redefine bool/true/false.
As of CPython 3.11 (via python/cpython#29883) stdbool.h is now included in Python.h so do attempt to redefine bool/true/false.
Currently the main interpreter is allocated on the heap during runtime initialization. Here we are instead embedding it into
_PyRuntimeState, which means it is statically allocated as part of the_PyRuntimeglobal. The same goes for the initial thread state (of each interpreter, including the main one). Consequently there are fewer allocations during runtime/interpreter init, fewer possible failures, and better memory locality.FYI, this also helps efforts to consolidate globals, which in turns helps work on subinterpreter isolation.
https://bugs.python.org/issue45953