[New-bugs-announce] [issue30860] Consolidate stateful C globals under a single struct.

Eric Snow report at bugs.python.org
Wed Jul 5 16:30:30 EDT 2017


New submission from Eric Snow:

CPython's C code makes extensive use of global variables.  The globals fall into one of several categories:

* (effectively) constants (incl. static types)
* freelists, caches, and counters
* used exclusively in main or in REPL
* process-global state
* module state
* Python runtime state

Those in the last category are not explicitly organized nor easily discoverable.  Among other things, this has an impact on efforts that change the runtime (e.g. my multi-core Python project).  To improve the situation I'd like to do the following:

1. group the (stateful) runtime globals into various topical structs
2. consolidate the topical structs under a single top-level _PyRuntimeState struct
3. add a check-c-globals.py script that helps identify runtime globals

One side effect of consolidating these globals is a significant performance improvement of CPython.  Presumably this is due to the caching behavior of a single struct vs. that of dozens of separate globals.

I have a patch and will put up a PR momentarily.

----------
assignee: eric.snow
messages: 297780
nosy: eric.snow, haypo, ncoghlan, yselivanov
priority: normal
severity: normal
stage: patch review
status: open
title: Consolidate stateful C globals under a single struct.
type: enhancement
versions: Python 3.7

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue30860>
_______________________________________


More information about the New-bugs-announce mailing list