summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2022-01-12 23:28:46 (GMT)
committerGitHub <noreply@github.com>2022-01-12 23:28:46 (GMT)
commited57b36c32e521162dbb97199e64a340d3bff827 (patch)
treefab825ae903723e4dc748e7b89cb78f3b226c816 /Misc
parent0bbf30e2b910bc9c5899134ae9d73a8df968da35 (diff)
downloadcpython-ed57b36c32e521162dbb97199e64a340d3bff827.zip
cpython-ed57b36c32e521162dbb97199e64a340d3bff827.tar.gz
cpython-ed57b36c32e521162dbb97199e64a340d3bff827.tar.bz2
bpo-45953: Statically allocate the main interpreter (and initial thread state). (gh-29883)
Previously, the main interpreter was allocated on the heap during runtime initialization. Here we instead embed it into _PyRuntimeState, which means it is statically allocated as part of the _PyRuntime global. 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
Diffstat (limited to 'Misc')
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2021-12-01-11-54-27.bpo-45953.2znR0E.rst4
1 files changed, 4 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-12-01-11-54-27.bpo-45953.2znR0E.rst b/Misc/NEWS.d/next/Core and Builtins/2021-12-01-11-54-27.bpo-45953.2znR0E.rst
new file mode 100644
index 0000000..4fa27b6
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2021-12-01-11-54-27.bpo-45953.2znR0E.rst
@@ -0,0 +1,4 @@
+The main interpreter in _PyRuntimeState.interpreters is now statically
+allocated (as part of _PyRuntime). Likewise for the initial thread state of
+each interpreter. This means less allocation during runtime init, as well
+as better memory locality for these key state objects.