diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2024-05-04 21:24:02 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-04 21:24:02 (GMT) |
commit | 291cfa454b9c5b677c955aaf53fab91f0186b6fa (patch) | |
tree | 0a0976010c9f0bd5fb77f80e00f44fa726d7c665 /Include/py_curses.h | |
parent | 978fba58aef347de4a1376e525df2dacc7b2fff3 (diff) | |
download | cpython-291cfa454b9c5b677c955aaf53fab91f0186b6fa.zip cpython-291cfa454b9c5b677c955aaf53fab91f0186b6fa.tar.gz cpython-291cfa454b9c5b677c955aaf53fab91f0186b6fa.tar.bz2 |
gh-117953: Track Extra Details in Global Extensions Cache (gh-118532)
We have only been tracking each module's PyModuleDef. However, there are some problems with that. For example, in some cases we load single-phase init extension modules from def->m_base.m_init or def->m_base.m_copy, but if multiple modules share a def then we can end up with unexpected behavior.
With this change, we track the following:
* PyModuleDef (same as before)
* for some modules, its init function or a copy of its __dict__, but specific to that module
* whether it is a builtin/core module or a "dynamic" extension
* the interpreter (ID) that owns the cached __dict__ (only if cached)
This also makes it easier to remember the module's kind (e.g. single-phase init) and if loading it previously failed, which I'm doing separately.
Diffstat (limited to 'Include/py_curses.h')
0 files changed, 0 insertions, 0 deletions