New submission from Eric Snow <ericsnowcurren...@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 <rep...@bugs.python.org>
<https://bugs.python.org/issue45887>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to