bpo-32030: Rework memory allocators by vstinner · Pull Request #4625 · python/cpython (original) (raw)
- Fix _PyMem_SetupAllocators("debug"): always restore allocators to
the defaults, rather than only caling _PyMem_SetupDebugHooks(). - Add _PyMem_SetDefaultAllocator() helper to set the "default"
allocator. - main() now uses debug hooks on memory allocators if Py_DEBUG is
defined, rather than calling directly malloc()
https://bugs.python.org/issue32030
- Fix _PyMem_SetupAllocators("debug"): always restore allocators to the defaults, rather than only caling _PyMem_SetupDebugHooks().
- Add _PyMem_SetDefaultAllocator() helper to set the "default" allocator.
- Add _PyMem_GetAllocatorsName(): get the name of the allocators
- main() now uses debug hooks on memory allocators if Py_DEBUG is defined, rather than calling directly malloc()
- Document default memory allocators in C API documentation
- _Py_InitializeCore() now fails with a fatal user error if PYTHONMALLOC value is an unknown memory allocator, instead of failing with a fatal internal error.
- Add new tests on the PYTHONMALLOC environment variable
vstinner changed the title
bpo-32030: Fix _PyMem_SetupDebugHooks() bpo-32030: Rework memory allocators
I tested manually the PR. I ran "test_sys test_cmd_line test_capi" tests in these configurations:
- release, no pymalloc: "malloc": OK
- release, pymalloc: "pymalloc": OK
- pydebug, no pymalloc: "malloc_debug": OK
- pydebug, pymalloc: "pymalloc_debug": OK
Add the _testcapi.WITH_PYMALLOC constant and expose it as support.with_pymalloc().
sysconfig.get_config_var('WITH_PYMALLOC') doesn't work on Windows, so replace it with support.with_pymalloc().