[New-bugs-announce] [issue45887] [subinterpreters] Pull all interpreter-global objects into one place.

Eric Snow report at bugs.python.org
Tue Nov 23 17:40:54 EST 2021


New submission from Eric Snow <ericsnowcurrently at gmail.com>:

Currently there are still a bunch of PyObject static variables in the code that need to become per-interpreter.  This includes quite a few static types (e.g. in Objects/*.c), as well as freelists and caches.  To make the transition easier I'd like to move all those objects under a single struct.

When I started consolidating globals a few years back, my plan was to turn static variables into fields on the _PyRuntimeState struct, where they can later be moved down into PyInterpreterState and become per-interpreter.  That has worked fine but the mental indirection in that process is clunky.  Consequently, in practice we've ended up just moving things directly to PyInterpreterState, even in cases where making something per-interpreter is premature.

So at this point I'm planning on a slightly different approach.  We'll move the objects (and other state) to PyInterpreterState as pointer fields, and then use the main interpreter's pointers in the corresponding fields in all subinterpreters.  Thus it will be equivalent to having a single global state.  However, it will go smoother down the road when we make all that state unique to each interpreter.

----------
assignee: eric.snow
components: Interpreter Core
messages: 406894
nosy: Mark.Shannon, eric.snow, ncoghlan, vstinner
priority: normal
severity: normal
status: open
title: [subinterpreters] Pull all interpreter-global objects into one place.
versions: Python 3.11

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue45887>
_______________________________________


More information about the New-bugs-announce mailing list