cpython/Include/cpython
Dino Viehland 05f2f0ac92
gh-90815: Add mimalloc memory allocator (#109914)
* Add mimalloc v2.12

Modified src/alloc.c to remove include of alloc-override.c and not
compile new handler.

Did not include the following files:

 - include/mimalloc-new-delete.h
 - include/mimalloc-override.h
 - src/alloc-override-osx.c
 - src/alloc-override.c
 - src/static.c
 - src/region.c

mimalloc is thread safe and shares a single heap across all runtimes,
therefore finalization and getting global allocated blocks across all
runtimes is different.

* mimalloc: minimal changes for use in Python:

 - remove debug spam for freeing large allocations
 - use same bytes (0xDD) for freed allocations in CPython and mimalloc
   This is important for the test_capi debug memory tests

* Don't export mimalloc symbol in libpython.
* Enable mimalloc as Python allocator option.
* Add mimalloc MIT license.
* Log mimalloc in Lib/test/pythoninfo.py.
* Document new mimalloc support.
* Use macro defs for exports as done in:
  https://github.com/python/cpython/pull/31164/

Co-authored-by: Sam Gross <colesbury@gmail.com>
Co-authored-by: Christian Heimes <christian@python.org>
Co-authored-by: Victor Stinner <vstinner@python.org>
2023-10-30 15:43:11 +00:00
..
abstract.h gh-106320: Remove private AC converter functions (#108505) 2023-08-26 04:05:17 +02:00
bytearrayobject.h gh-89653: PEP 670: Macros always cast arguments in cpython/ (#93766) 2022-06-13 20:09:40 +02:00
bytesobject.h gh-106320: Remove _PyBytes_Join() C API (#107144) 2023-07-23 20:10:12 +00:00
cellobject.h gh-87347: Add parenthesis around PyXXX_Check() arguments (#92815) 2022-06-16 13:49:43 +02:00
ceval.h gh-106320: Remove private _PyEval function (#108433) 2023-08-24 20:25:22 +02:00
classobject.h gh-89653: PEP 670: Convert macros to functions (#99843) 2022-11-28 16:40:08 +01:00
code.h GH-109369: Merge all eval-breaker flags and monitoring version into one word. (GH-109846) 2023-10-04 16:09:48 +01:00
compile.h gh-107149: Rename _PyUnstable_GetUnaryIntrinsicName() function (#108441) 2023-08-29 01:42:24 +02:00
complexobject.h gh-106320: Add pycore_complexobject.h header file (#106339) 2023-07-02 21:19:59 +00:00
context.h gh-106320: Remove private _PyContext_NewHamtForTests() (#108434) 2023-08-24 19:37:41 +02:00
descrobject.h gh-106320: Move _PyMethodWrapper_Type to internal C API (#107064) 2023-07-22 20:57:59 +00:00
dictobject.h gh-106320: Re-add some PyLong/PyDict C-API functions (GH-#111162) 2023-10-25 11:33:48 +02:00
fileobject.h gh-106320: Remove private _Py_UniversalNewlineFgetsWithSize() (#108602) 2023-08-29 02:36:50 +00:00
fileutils.h bpo-46303: Move fileutils.h private functions to internal C API (GH-30484) 2022-01-11 11:56:16 +01:00
floatobject.h gh-89653: PEP 670: Convert macros to functions (#99843) 2022-11-28 16:40:08 +01:00
frameobject.h GH-96803: Move PyUnstable_InterpreterFrame_GetCode() to Python.h (#107188) 2023-07-24 21:20:44 +02:00
funcobject.h gh-106320: Remove _PyFunction_Vectorcall() API (#107071) 2023-07-22 21:44:33 +00:00
genobject.h gh-106320: Move private _PyGen API to the internal C API (#107032) 2023-07-22 14:21:16 +00:00
import.h GH-108716: Turn off deep-freezing of code objects. (GH-108722) 2023-09-08 10:34:40 +01:00
initconfig.h gh-110722: Add PYTHON_PRESITE to import a module before site.py is run (#110769) 2023-10-14 23:32:57 +02:00
interpreteridobject.h gh-101524: Only Use Public C-API in the _xxsubinterpreters Module (gh-107359) 2023-07-27 15:30:16 -06:00
listobject.h gh-106168: Check allocated instead of size index bounds in PyList_SET_ITEM() (#111480) 2023-10-30 12:24:21 +01:00
longintrepr.h gh-106320: Remove private _PyLong_New() function (#108604) 2023-08-29 04:59:49 +02:00
longobject.h gh-106320: Re-add some PyLong/PyDict C-API functions (GH-#111162) 2023-10-25 11:33:48 +02:00
memoryobject.h gh-106320: Remove private _PyManagedBuffer_Type (#108431) 2023-08-24 19:07:54 +02:00
methodobject.h gh-87347: Add parenthesis around PyXXX_Check() arguments (#92815) 2022-06-16 13:49:43 +02:00
object.h gh-108867: Add PyThreadState_GetUnchecked() function (#108870) 2023-10-03 16:53:51 +00:00
objimpl.h gh-105268: Remove _PyGC_FINALIZED() macro (#105350) 2023-06-06 11:54:23 +02:00
odictobject.h gh-87347: Add parenthesis around macro arguments (#93915) 2022-06-20 16:04:52 +02:00
optimizer.h GH-109369: Add machinery for deoptimizing tier2 executors, both individually and globally. (GH-110384) 2023-10-23 14:49:09 +01:00
picklebufobject.h gh-87347: Add parenthesis around PyXXX_Check() arguments (#92815) 2022-06-16 13:49:43 +02:00
pthread_stubs.h gh-110014: Include explicitly <unistd.h> header (#110155) 2023-09-30 20:06:45 +00:00
pyatomic.h gh-109693: Update _gil_runtime_state.locked to use pyatomic.h (gh-110836) 2023-10-17 07:32:50 +09:00
pyatomic_gcc.h gh-109693: Update _gil_runtime_state.locked to use pyatomic.h (gh-110836) 2023-10-17 07:32:50 +09:00
pyatomic_msc.h gh-109693: Update _gil_runtime_state.locked to use pyatomic.h (gh-110836) 2023-10-17 07:32:50 +09:00
pyatomic_std.h gh-109693: Update _gil_runtime_state.locked to use pyatomic.h (gh-110836) 2023-10-17 07:32:50 +09:00
pyctype.h bpo-43816: Add extern "C" to Include/cpython/pyctype.h (GH-25365) 2021-04-13 13:27:21 +02:00
pydebug.h gh-77782: Deprecate global configuration variable (#93943) 2022-06-17 16:12:00 +02:00
pyerrors.h gh-106320: Remove private _PyErr_WriteUnraisableMsg() (#108863) 2023-09-05 01:54:55 +02:00
pyfpe.h bpo-35134: Move non-limited C API files to Include/cpython/ (GH-24561) 2021-02-19 15:55:46 +01:00
pyframe.h gh-107149: Make PyUnstable_ExecutableKinds public (#108440) 2023-08-31 09:56:06 +02:00
pylifecycle.h gh-110397: Add Py_IsFinalizing() to the stable ABI (#110441) 2023-10-07 17:59:16 +02:00
pymem.h gh-90815: Add mimalloc memory allocator (#109914) 2023-10-30 15:43:11 +00:00
pystate.h gh-76785: Clean Up the Channels Module (gh-110568) 2023-10-17 23:51:52 +00:00
pystats.h gh-109329: Add stat for "trace too short" (GH-110402) 2023-10-05 16:12:06 +01:00
pythonrun.h gh-106320: Remove private pythonrun API (#108599) 2023-08-29 04:18:52 +02:00
pythread.h gh-110014: Remove PY_TIMEOUT_MAX from limited C API (#110217) 2023-10-02 18:07:56 +02:00
setobject.h gh-106320: Move private _PySet API to the internal API (#107041) 2023-07-22 17:04:34 +02:00
sysmodule.h gh-109587: Allow "precompiled" perf-trampolines to largely mitigate the cost of enabling perf-trampolines (#109666) 2023-10-27 03:57:29 +00:00
traceback.h gh-106320: Remove private _PyTraceback functions (#108453) 2023-08-24 23:35:47 +00:00
tracemalloc.h gh-106320: Remove private _PyTraceMalloc C API functions (#106324) 2023-07-02 00:49:18 +00:00
tupleobject.h gh-106320: Remove _PyTuple_MaybeUntrack() C API (#107143) 2023-07-23 19:16:21 +00:00
unicodeobject.h gh-111089: Add PyUnicode_AsUTF8() to the limited C API (#111121) 2023-10-20 19:29:27 +02:00
warnings.h gh-87347: Add parenthesis around macro arguments (#93915) 2022-06-20 16:04:52 +02:00
weakrefobject.h gh-105927: Deprecate PyWeakref_GetObject() function (#106006) 2023-06-26 12:10:53 +02:00