cpython/Modules
Sam Gross d70e27f258
gh-112529: Use atomic operations for `gcstate->collecting` (#112533)
* gh-112529: Use atomic operations for `gcstate->collecting`

The `collecting` field in `GCState` is used to prevent overlapping garbage
collections within the same interpreter. This is updated to use atomic
operations in order to be thread-safe in `--disable-gil` builds.

The GC code is refactored a bit to support this. More of the logic is pushed
down to `gc_collect_main()` so that we can safely order the logic setting
`collecting`, the selection of the generation, and the invocation of callbacks
with respect to the atomic operations and the (future) stop-the-world pauses.

The change uses atomic operations for both `--disable-gil` and the default
build (with the GIL) to avoid extra `#ifdef` guards and ease the maintenance
burden.
2023-12-11 18:33:21 +00:00
..
_blake2 gh-111916: Make hashlib related modules thread-safe without the GIL (#111981) 2023-11-15 23:53:38 +00:00
_ctypes gh-110190: Fix ctypes structs with array on Arm (#112604) 2023-12-05 16:07:50 +01:00
_decimal gh-89902: Deprecate non-standard format specifier "N" for Decimal (GH-110508) 2023-10-08 10:01:39 +03:00
_hacl gh-99108: Refresh HACL* (#104808) 2023-05-24 13:30:11 -07:00
_io gh-112205: Update stringio module to use AC for the thread-safe (gh-112549) 2023-12-01 08:37:30 +09:00
_multiprocessing gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
_sqlite gh-111789: Simplify the sqlite code (GH-111829) 2023-11-10 20:49:24 +00:00
_sre Output more details in the re tracing (GH-111357) 2023-10-26 16:42:42 +03:00
_ssl gh-110964: Remove private _PyArg functions (#110966) 2023-10-17 14:30:31 +02:00
_testcapi gh-111545: Add Py_HashPointer() function (#112096) 2023-12-06 15:09:22 +01:00
_testinternalcapi gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
_xxtestfuzz Add a fuzzer for `Py_CompileStringExFlags` (#111721) 2023-12-10 12:16:15 -05:00
cjkcodecs gh-111089: Revert PyUnicode_AsUTF8() changes (#111833) 2023-11-07 22:36:13 +00:00
clinic gh-112730: Use color to highlight error locations (gh-112732) 2023-12-06 23:29:54 +01:00
expat gh-98739: Update libexpat from 2.4.9 to 2.5.0 (#98742) 2022-10-27 13:45:12 -07:00
README
Setup gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
Setup.bootstrap.in gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
Setup.stdlib.in gh-111545: Test PyHash_GetFuncDef() function (#112098) 2023-11-15 03:41:29 +01:00
_abc.c gh-106320: Move private _PySet API to the internal API (#107041) 2023-07-22 17:04:34 +02:00
_asynciomodule.c gh-111789: Use PyDict_GetItemRef() in Modules/_asynciomodule.c (GH-112072) 2023-11-15 04:28:30 +00:00
_bisectmodule.c gh-104922: remove PY_SSIZE_T_CLEAN (#106315) 2023-07-02 15:07:46 +09:00
_bz2module.c gh-108220: Internal header files require Py_BUILD_CORE to be defined (#108221) 2023-08-21 19:15:52 +02:00
_codecsmodule.c gh-104922: remove PY_SSIZE_T_CLEAN (#106315) 2023-07-02 15:07:46 +09:00
_collectionsmodule.c gh-106320: Remove private _PyDict functions (#108449) 2023-08-24 20:01:50 +00:00
_contextvarsmodule.c gh-99113: Add Py_MOD_PER_INTERPRETER_GIL_SUPPORTED (gh-104205) 2023-05-05 21:11:27 +00:00
_csv.c gh-111789: Use PyDict_GetItemRef() in Modules/_csv.c (gh-112073) 2023-11-27 18:35:52 +01:00
_curses_panel.c gh-110964: Remove private _PyArg functions (#110966) 2023-10-17 14:30:31 +02:00
_cursesmodule.c gh-110093: Replace trivial Py_BuildValue() with direct C API call (GH-110094) 2023-10-20 18:08:41 +03:00
_datetimemodule.c Fix undefined behaviour in datetime.time.fromisoformat() (#111982) 2023-11-12 00:56:27 +01:00
_dbmmodule.c Remove redundant check in dbm.open() (GH-111844) 2023-11-08 19:42:41 +02:00
_elementtree.c gh-108511: Add C API functions which do not silently ignore errors (GH-109025) 2023-09-17 14:23:31 +03:00
_functoolsmodule.c gh-111903: Update AC to support "pycore_critical_section.h" header (gh-112251) 2023-11-19 10:13:58 +09:00
_gdbmmodule.c gh-110964: Remove private _PyArg functions (#110966) 2023-10-17 14:30:31 +02:00
_hashopenssl.c gh-111916: Make hashlib related modules thread-safe without the GIL (#111981) 2023-11-15 23:53:38 +00:00
_heapqmodule.c gh-86493: Modernize modules initialization code (GH-106858) 2023-07-25 14:34:49 +03:00
_json.c gh-111928: make "memo" dict local to scan_once call (gh-112005) 2023-11-13 04:58:34 +00:00
_localemodule.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
_lsprof.c gh-108082: Use PyErr_FormatUnraisable() (GH-111580) 2023-11-02 09:16:34 +00:00
_lzmamodule.c gh-108220: Internal header files require Py_BUILD_CORE to be defined (#108221) 2023-08-21 19:15:52 +02:00
_math.h gh-101678: refactor the math module to use special functions from c11 (GH-101679) 2023-02-09 00:40:52 -08:00
_opcode.c gh-107149: make new opcode util functions private rather than public and unstable (#112042) 2023-11-14 00:31:02 +00:00
_operator.c gh-89013: Improve the performance of methodcaller (lazy version) (gh-107201) 2023-08-01 15:45:51 +09:00
_pickle.c bpo-41422: Visit the Pickler's and Unpickler's memo in tp_traverse (GH-21664) 2023-11-27 18:09:41 +00:00
_posixsubprocess.c gh-112334: Restore subprocess's use of `vfork()` & fix `extra_groups=[]` behavior (#112617) 2023-12-04 15:08:19 -08:00
_queuemodule.c gh-84570: Add Timeouts to SendChannel.send() and RecvChannel.recv() (gh-110567) 2023-10-17 23:05:49 +00:00
_randommodule.c gh-112071: Make `_random.Random` methods thread-safe in `--disable-gil` builds (gh-112128) 2023-11-28 03:27:39 +00:00
_scproxy.c gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
_ssl.c gh-112454: Disable TLS-PSK if OpenSSL was built without PSK support (#112491) 2023-11-28 16:15:39 -08:00
_ssl.h GH-103092: isolate `_ssl` (#104725) 2023-05-22 06:14:48 +05:30
_ssl_data.h closes bpo-40266, closes bpo-39953: Use numeric lib code if compiling against old OpenSSL. (GH-19506) 2020-04-13 22:11:40 -05:00
_ssl_data_31.h gh-103142: Upgrade binary builds and CI to OpenSSL 1.1.1u (#105174) 2023-06-01 09:42:18 -07:00
_ssl_data_111.h gh-103142: Upgrade binary builds and CI to OpenSSL 1.1.1u (#105174) 2023-06-01 09:42:18 -07:00
_ssl_data_300.h gh-103142: Upgrade binary builds and CI to OpenSSL 1.1.1u (#105174) 2023-06-01 09:42:18 -07:00
_stat.c gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
_statisticsmodule.c gh-110964: Remove private _PyArg functions (#110966) 2023-10-17 14:30:31 +02:00
_struct.c gh-111789: Use PyDict_GetItemRef() in Modules/_struct.c (gh-112076) 2023-11-27 18:41:47 +01:00
_sysconfig.c gh-111863: Rename term Py_NOGIL to Py_GIL_DISABLED in sysconfig (gh-112307) 2023-11-22 10:32:43 +09:00
_testbuffer.c gh-104922: remove PY_SSIZE_T_CLEAN (#106315) 2023-07-02 15:07:46 +09:00
_testcapi_feature_macros.inc gh-102304: doc: Add links to Stable ABI and Limited C API (#105345) 2023-06-06 08:40:32 +00:00
_testcapimodule.c gh-76785: Add _PyType_GetModuleName() to the Internal C-API (gh-112323) 2023-11-22 15:03:33 -07:00
_testclinic.c gh-110864: Fix _PyArg_UnpackKeywordsWithVararg overwriting vararg with NULL (#110868) 2023-10-16 13:42:44 +02:00
_testclinic_limited.c gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
_testimportmultiple.c gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
_testinternalcapi.c gh-112535: Add test on _Py_ThreadId() (#112709) 2023-12-04 22:40:06 +00:00
_testmultiphase.c gh-110964: Remove private _PyArg functions (#110966) 2023-10-17 14:30:31 +02:00
_testsinglephase.c gh-86493: Use PyModule_Add() instead of PyModule_AddObjectRef() (GH-106860) 2023-07-18 23:59:53 +03:00
_threadmodule.c gh-111789: Use PyDict_GetItemRef() in Modules/_threadmodule.c (gh-112077) 2023-11-27 18:46:43 +01:00
_tkinter.c gh-112678: Declare `Tkapp_CallDeallocArgs()` as `static` (GH-112679) 2023-12-04 08:00:27 +00:00
_tracemalloc.c gh-108494: Argument Clinic: fix support of Limited C API (GH-108536) 2023-08-28 16:04:27 +03:00
_typingmodule.c Improve `_typing.__doc__` (#107908) 2023-08-13 10:24:59 +01:00
_uuidmodule.c gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
_weakref.c gh-112213: Update _weakref module to use new AC feature (gh-112250) 2023-11-19 10:43:51 +09:00
_winapi.c gh-110093: Replace trivial Py_BuildValue() with direct C API call (GH-110094) 2023-10-20 18:08:41 +03:00
_xxinterpchannelsmodule.c gh-76785: Move the Cross-Interpreter Code to Its Own File (gh-111502) 2023-10-30 16:53:10 -06:00
_xxsubinterpretersmodule.c gh-76785: Return an "excinfo" Object From Interpreter.run() (gh-111573) 2023-11-23 00:55:00 +00:00
_zoneinfo.c Simplify trivial calls of PyUnicode_FromFormat() (GH-111605) 2023-11-01 19:54:32 +02:00
addrinfo.h gh-95174: WASI: skip missing sockets functions (GH-95179) 2022-07-27 08:19:23 +02:00
arraymodule.c gh-106320: Re-add some PyLong/PyDict C-API functions (GH-#111162) 2023-10-25 11:33:48 +02:00
atexitmodule.c gh-108082: Remove _PyErr_WriteUnraisableMsg() (GH-111643) 2023-11-03 09:45:53 +02:00
binascii.c gh-105967: Work around a macOS bug, limit zlib C library crc32 API calls to 1gig (#112615) 2023-12-04 12:04:05 -08:00
cmathmodule.c gh-86493: Fix possible leaks in some modules initialization (GH-106768) 2023-07-18 10:50:47 +03:00
config.c.in gh-104169: Fix test_peg_generator after tokenizer refactoring (#110727) 2023-10-12 09:34:35 +02:00
errnomodule.c gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
faulthandler.c gh-110014: Include explicitly <unistd.h> header (#110155) 2023-09-30 20:06:45 +00:00
fcntlmodule.c gh-107913: Fix possible losses of OSError error codes (GH-107930) 2023-08-27 00:35:06 +03:00
gc_weakref.txt Fix links to old SF bugs (#95648) 2022-08-04 18:12:35 +02:00
gcmodule.c gh-112529: Use atomic operations for `gcstate->collecting` (#112533) 2023-12-11 18:33:21 +00:00
getaddrinfo.c gh-108767: Replace ctype.h functions with pyctype.h functions (#108772) 2023-09-01 18:36:53 +02:00
getbuildinfo.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
getnameinfo.c gh-95174: WASI: skip missing sockets functions (GH-95179) 2022-07-27 08:19:23 +02:00
getpath.c gh-59703: restore include of mach-o/dyld.h (gh-112309) 2023-11-22 01:20:57 -05:00
getpath.py gh-106718: Treat PyConfig.stdlib_dir as highest-priority setting for stdlib_dir when calculating paths (GH-108730) 2023-11-01 21:11:18 +00:00
getpath_noop.c bpo-45582: Port getpath[p].c to Python (GH-29041) 2021-12-03 00:08:42 +00:00
grpmodule.c gh-110964: Remove private _PyArg functions (#110966) 2023-10-17 14:30:31 +02:00
hashlib.h gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
itertoolsmodule.c gh-109786: Fix leaks and crash when re-enter itertools.pairwise.__next__() (GH-109788) 2023-12-04 11:47:55 +00:00
ld_so_aix.in Issue #10656: Fix out-of-tree building on AIX 2016-11-20 07:56:37 +00:00
main.c gh-67224: Show source lines in tracebacks when using the -c option when running Python (#111200) 2023-10-26 15:17:28 +09:00
makesetup gh-96269: static and shared ext need different deps (#96316) 2022-11-16 14:03:35 +01:00
makexp_aix bpo-42087: Remove support for AIX 5.3 and below (GH-22830) 2020-11-16 16:16:10 +01:00
mathmodule.c gh-111342: fix typo in math.sumprod (GH-111416) 2023-10-27 23:52:04 -05:00
md5module.c gh-111916: Make hashlib related modules thread-safe without the GIL (#111981) 2023-11-15 23:53:38 +00:00
mmapmodule.c gh-111835: Add seekable method to mmap.mmap (gh-111852) 2023-11-09 20:13:35 +09:00
overlapped.c gh-110093: Replace trivial Py_BuildValue() with direct C API call (GH-110094) 2023-10-20 18:08:41 +03:00
posixmodule.c gh-112730: Use color to highlight error locations (gh-112732) 2023-12-06 23:29:54 +01:00
posixmodule.h gh-107211: No longer export internal _PyLong_FromUid() (#109037) 2023-09-07 02:09:06 +02:00
pwdmodule.c gh-108765: Python.h no longer includes <unistd.h> (#108783) 2023-09-02 16:50:18 +02:00
pyexpat.c gh-111789: Use PyDict_GetItemRef() in Modules/pyexpat.c (gh-112079) 2023-11-27 18:51:31 +01:00
readline.c gh-105323: Remove `WITH_APPLE_EDITLINE` to use the same declaration for all editline (gh-112513) 2023-12-05 23:52:28 +09:00
resource.c gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
rotatingtree.c
rotatingtree.h bpo-32150: Expand tabs to spaces in C files. (#4583) 2017-11-28 17:56:10 +02:00
selectmodule.c gh-110395: invalidate open kqueues after fork (#110517) 2023-11-04 21:45:24 +00:00
sha1module.c gh-111916: Make hashlib related modules thread-safe without the GIL (#111981) 2023-11-15 23:53:38 +00:00
sha2module.c gh-111916: Make hashlib related modules thread-safe without the GIL (#111981) 2023-11-15 23:53:38 +00:00
sha3module.c gh-111916: Make hashlib related modules thread-safe without the GIL (#111981) 2023-11-15 23:53:38 +00:00
signalmodule.c gh-108082: Use PyErr_FormatUnraisable() (GH-111580) 2023-11-02 09:16:34 +00:00
socketmodule.c bpo-37013: Fix the error handling in socket.if_indextoname() (GH-13503) 2023-12-01 15:16:49 +00:00
socketmodule.h GH-107812: extend `socket`'s netlink support to FreeBSD (gh-107813) 2023-08-10 00:47:46 +00:00
symtablemodule.c gh-110045: Update symtable module for PEP 695 (#110066) 2023-09-29 02:08:04 +00:00
syslogmodule.c gh-110964: Remove private _PyArg functions (#110966) 2023-10-17 14:30:31 +02:00
termios.c gh-51944: Add missing macOS constants to termios (#112823) 2023-12-07 11:27:30 +01:00
timemodule.c gh-112567: Add _PyTimeFraction C API (#112568) 2023-12-01 19:50:10 +01:00
tkappinit.c gh-103538: Remove unused TK_AQUA code (GH-103539) 2023-05-10 18:53:13 +00:00
tkinter.h gh-103532: Remove TKINTER_PROTECT_LOADTK code (GH-103535) 2023-04-14 09:04:16 -05:00
unicodedata.c gh-96954: use a directed acyclic word graph for storing the unicodedata codepoint names (#97906) 2023-11-04 15:56:58 +01:00
unicodedata_db.h gh-96954: Fix `make regen-unicodedata` in out-of-tree builds (#112118) 2023-11-15 16:42:17 +00:00
unicodename_db.h gh-96954: Fix `make regen-unicodedata` in out-of-tree builds (#112118) 2023-11-15 16:42:17 +00:00
winreparse.h bpo-31512: Add non-elevated symlink support for Windows (GH-3652) 2019-04-09 11:19:46 -07:00
xxlimited.c gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
xxlimited_35.c gh-111863: Rename `Py_NOGIL` to `Py_GIL_DISABLED` (#111864) 2023-11-20 15:52:00 +02:00
xxmodule.c gh-99113: Add Py_MOD_PER_INTERPRETER_GIL_SUPPORTED (gh-104205) 2023-05-05 21:11:27 +00:00
xxsubtype.c gh-108765: Python.h no longer includes <sys/time.h> (#108775) 2023-09-02 17:51:19 +02:00
zlibmodule.c gh-105967: Work around a macOS bug, limit zlib C library crc32 API calls to 1gig (#112615) 2023-12-04 12:04:05 -08:00

README

Source files for standard library extension modules,
and former extension modules that are now builtin modules.