[3.12] gh-105766: Document that Custom Allocators Must Be Thread-Safe (gh-107519) (gh-107522)

gh-105766: Document that Custom Allocators Must Be Thread-Safe (gh-107519)
(cherry picked from commit db361a340a)

Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
This commit is contained in:
Miss Islington (bot) 2023-07-31 16:25:18 -07:00 committed by GitHub
parent 31cd12ab21
commit fc4532a55d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 0 deletions

View file

@ -476,6 +476,10 @@ Customize Memory Allocators
thread-safe: the :term:`GIL <global interpreter lock>` is not held when the
allocator is called.
For the remaining domains, the allocator must also be thread-safe:
the allocator may be called in different interpreters that do not
share a ``GIL``.
If the new allocator is not a hook (does not call the previous allocator),
the :c:func:`PyMem_SetupDebugHooks` function must be called to reinstall the
debug hooks on top on the new allocator.
@ -500,6 +504,8 @@ Customize Memory Allocators
**must** wrap the existing allocator. Substituting the current
allocator for some other arbitrary one is **not supported**.
.. versionchanged:: 3.12
All allocators must be thread-safe.
.. c:function:: void PyMem_SetupDebugHooks(void)

View file

@ -1922,6 +1922,13 @@ Porting to Python 3.12
* :c:func:`PyUnstable_Long_IsCompact`
* :c:func:`PyUnstable_Long_CompactValue`
* Custom allocators, set via :c:func:`PyMem_SetAllocator`, are now
required to be thread-safe, regardless of memory domain. Allocators
that don't have their own state, including "hooks", are not affected.
If your custom allocator is not already thread-safe and you need
guidance then please create a new GitHub issue
and CC ``@ericsnowcurrently``.
Deprecated
----------