mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
PyInterpreterState_New(), PyThreadState_New(): use malloc/free directly.
This appears to finish repairs for SF bug 1041645. This is a critical bugfix.
This commit is contained in:
parent
263091e388
commit
8470558a04
2 changed files with 26 additions and 4 deletions
10
Misc/NEWS
10
Misc/NEWS
|
@ -136,6 +136,16 @@ Build
|
|||
C API
|
||||
-----
|
||||
|
||||
- The C API calls ``PyInterpreterState_New()`` and ``PyThreadState_New()``
|
||||
are two of the very few advertised as being safe to call without holding
|
||||
the GIL. However, this wasn't true in a debug build, as bug 1041645
|
||||
demonstrated. In a debug build, Python redirects the ``PyMem`` family
|
||||
of calls to Python's small-object allocator, to get the benefit of
|
||||
its extra debugging capabilities. But Python's small-object allocator
|
||||
isn't threadsafe, relying on the GIL to avoid the expense of doing its
|
||||
own locking. ``PyInterpreterState_New()`` and ``PyThreadState_New()``
|
||||
call the platform ``malloc()`` directly now, regardless of build type.
|
||||
|
||||
- PyLong_AsUnsignedLong[Mask] now support int objects as well.
|
||||
|
||||
- SF patch #998993: ``PyUnicode_DecodeUTF8Stateful`` and
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue