mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
gh-108634: Py_TRACE_REFS uses a hash table (#108663)
Python built with "configure --with-trace-refs" (tracing references) is now ABI compatible with Python release build and debug build. Moreover, it now also supports the Limited API. Change Py_TRACE_REFS build: * Remove _PyObject_EXTRA_INIT macro. * The PyObject structure no longer has two extra members (_ob_prev and _ob_next). * Use a hash table (_Py_hashtable_t) to trace references (all objects): PyInterpreterState.object_state.refchain. * Py_TRACE_REFS build is now ABI compatible with release build and debug build. * Limited C API extensions can now be built with Py_TRACE_REFS: xxlimited, xxlimited_35, _testclinic_limited. * No longer rename PyModule_Create2() and PyModule_FromDefAndSpec2() functions to PyModule_Create2TraceRefs() and PyModule_FromDefAndSpec2TraceRefs(). * _Py_PrintReferenceAddresses() is now called before finalize_interp_delete() which deletes the refchain hash table. * test_tracemalloc find_trace() now also filters by size to ignore the memory allocated by _PyRefchain_Trace(). Test changes for Py_TRACE_REFS: * Add test.support.Py_TRACE_REFS constant. * Add test_sys.test_getobjects() to test sys.getobjects() function. * test_exceptions skips test_recursion_normalizing_with_no_memory() and test_memory_error_in_PyErr_PrintEx() if Python is built with Py_TRACE_REFS. * test_repl skips test_no_memory(). * test_capi skisp test_set_nomemory().
This commit is contained in:
parent
013a99a47b
commit
13a00078b8
31 changed files with 293 additions and 244 deletions
|
|
@ -425,8 +425,7 @@ See also the :ref:`Python Development Mode <devmode>` and the
|
|||
.. versionchanged:: 3.8
|
||||
Release builds and debug builds are now ABI compatible: defining the
|
||||
``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` macro (see the
|
||||
:option:`--with-trace-refs` option), which introduces the only ABI
|
||||
incompatibility.
|
||||
:option:`--with-trace-refs` option).
|
||||
|
||||
|
||||
Debug options
|
||||
|
|
@ -447,8 +446,14 @@ Debug options
|
|||
* Add :func:`sys.getobjects` function.
|
||||
* Add :envvar:`PYTHONDUMPREFS` environment variable.
|
||||
|
||||
This build is not ABI compatible with release build (default build) or debug
|
||||
build (``Py_DEBUG`` and ``Py_REF_DEBUG`` macros).
|
||||
The :envvar:`PYTHONDUMPREFS` environment variable can be used to dump
|
||||
objects and reference counts still alive at Python exit.
|
||||
|
||||
:ref:`Statically allocated objects <static-types>` are not traced.
|
||||
|
||||
.. versionchanged:: 3.13
|
||||
This build is now ABI compatible with release build and :ref:`debug build
|
||||
<debug-build>`.
|
||||
|
||||
.. versionadded:: 3.8
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue