]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.12] gh-110310: Add a Per-Interpreter XID Registry for Heap Types (gh-110311) ...
authorEric Snow <ericsnowcurrently@gmail.com>
Tue, 28 Nov 2023 02:36:29 +0000 (19:36 -0700)
committerGitHub <noreply@github.com>
Tue, 28 Nov 2023 02:36:29 +0000 (02:36 +0000)
commit1e1a30f9f49ed5104a4be194d094b13703bcc0de
treebc88f0ea9e3c6d998dcf40be3d367e6eb7e320f0
parent0122b4d7c92855e97912cf827dd81d836725c9a4
[3.12] gh-110310: Add a Per-Interpreter XID Registry for Heap Types (gh-110311) (gh-110714)

We do the following:

* add a per-interpreter XID registry (PyInterpreterState.xidregistry)
* put heap types there (keep static types in _PyRuntimeState.xidregistry)
* clear the registries during interpreter/runtime finalization
* avoid duplicate entries in the registry (when _PyCrossInterpreterData_RegisterClass() is called more than once for a type)
* use Py_TYPE() instead of PyObject_Type() in _PyCrossInterpreterData_Lookup()

The per-interpreter registry helps preserve isolation between interpreters.  This is important when heap types are registered, which is something we haven't been doing yet but I will likely do soon.

(cherry-picked from commit 80dc39e1dc2abc809f448cba5d2c5b9c1c631e11)
Doc/data/python3.12.abi
Include/internal/pycore_interp.h
Include/internal/pycore_runtime.h
Python/pystate.c