cpython/Modules
Eddie Elizondo ea2c001650
gh-84436: Implement Immortal Objects (gh-19474)
This is the implementation of PEP683

Motivation:

The PR introduces the ability to immortalize instances in CPython which bypasses reference counting. Tagging objects as immortal allows up to skip certain operations when we know that the object will be around for the entire execution of the runtime.

Note that this by itself will bring a performance regression to the runtime due to the extra reference count checks. However, this brings the ability of having truly immutable objects that are useful in other contexts such as immutable data sharing between sub-interpreters.
2023-04-22 13:39:37 -06:00
..
_blake2 gh-102027: Fix macro name (#102124) 2023-03-22 14:44:28 +01:00
_ctypes gh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives in `_ctypes` (#102477) 2023-03-10 14:32:32 +05:30
_decimal GH-101291: Rearrange the size bits in PyLongObject (GH-102464) 2023-03-22 14:49:51 +00:00
_hacl gh-99108: Import MD5 and SHA1 from HACL* (#102089) 2023-02-22 13:18:43 -08:00
_io gh-103617: Fix compiler warning in _iomodule.c (#103618) 2023-04-18 20:30:54 -06:00
_multiprocessing gh-102255: Improve build support for Windows API partitions (GH-102256) 2023-03-09 21:09:12 +00:00
_sha3 gh-101476: Use _PyType_GetModuleState where applicable (#102188) 2023-02-24 21:16:29 +01:00
_sqlite gh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (in Modules/) (#102196) 2023-02-24 21:43:03 +00:00
_sre gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_ssl gh-102192: remove redundant exception fields from ssl module socket (#102466) 2023-03-16 16:41:10 +00:00
_testcapi Fix typos in faulthandler, testcapi error messages (#103020) 2023-03-25 14:27:02 -07:00
_xxtestfuzz gh-73691: Increase size limits in _xxtestfuzz (#99070) 2022-11-03 14:41:20 -07:00
cjkcodecs gh-103583: Add ref. dependency between multibytecodec modules (#103589) 2023-04-19 10:02:17 -06:00
clinic gh-103092: Isolate `_collections` (#103093) 2023-04-12 18:21:28 +05:30
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-99108: Add missing md5/sha1 defines to Modules/Setup (#102308) 2023-02-28 22:34:06 +01:00
Setup.bootstrap.in bpo-47152: Move sources of the _sre module into a subdirectory (GH-32290) 2022-04-04 10:53:26 +03:00
Setup.stdlib.in GH-94808: Cover `PyOS_mystrnicmp` and `PyOS_mystricmp` (gh-102469) 2023-03-22 20:35:27 +09:00
_abc.c gh-101476: Use _PyType_GetModuleState where applicable (#102188) 2023-02-24 21:16:29 +01:00
_asynciomodule.c GH-103182: use vectorcall in `_asyncio` instead of variadic calling APIs (#103175) 2023-04-03 18:14:32 +05:30
_bisectmodule.c GH-102833: Mention the key function in the docstrings (GH-103009) 2023-03-25 02:19:20 -05:00
_bz2module.c bpo-23224: Fix segfaults and multiple leaks in the lzma and bz2 modules (GH-7822) 2023-02-23 06:00:58 -08:00
_codecsmodule.c bpo-15999: Accept arbitrary values for boolean parameters. (#15609) 2022-12-03 11:52:21 -08:00
_collectionsmodule.c gh-103092: Isolate `_collections` (#103093) 2023-04-12 18:21:28 +05:30
_contextvarsmodule.c bpo-1635741: _contextvars uses PyModule_AddType() (GH-23147) 2020-11-04 16:33:55 +01:00
_cryptmodule.c closes bpo-44751: Move crypt.h include from public header to _cryptmodule (GH-27394) 2021-07-27 15:58:12 -07:00
_csv.c gh-67230: add quoting rules to csv module (GH-29469) 2023-04-12 15:32:30 -07:00
_curses_panel.c gh-98724: Fix warnings on Py_SETREF() usage (#99781) 2022-11-26 00:30:37 +01:00
_cursesmodule.c bpo-15999: Accept arbitrary values for boolean parameters. (#15609) 2022-12-03 11:52:21 -08:00
_datetimemodule.c gh-83861: Fix datetime.astimezone() method (GH-101545) 2023-04-19 14:02:29 -07:00
_dbmmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_elementtree.c gh-92123: Adapt _elementtree to multi-phase init (PEP 489) (#101285) 2023-01-24 17:00:24 +01:00
_functoolsmodule.c gh-99537: Use Py_SETREF() function in C code (#99656) 2022-11-22 14:22:22 +01:00
_gdbmmodule.c gh-99426: Use PyUnicode_FromFormat() and PyErr_Format() instead of sprintf (GH-99427) 2022-11-14 15:25:34 +02:00
_hashopenssl.c gh-103256: Fix hmac algorithm to support fallback implementation (gh-103286) 2023-04-07 10:51:29 +09:00
_heapqmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99466) 2022-11-14 13:08:15 +01:00
_json.c gh-99925: Fix inconsistency in `json.dumps()` error messages (GH-99926) 2022-12-20 12:54:56 +02:00
_localemodule.c gh-102255: Improve build support for Windows API partitions (GH-102256) 2023-03-09 21:09:12 +00:00
_lsprof.c gh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (in Modules/) (#102196) 2023-02-24 21:43:03 +00:00
_lzmamodule.c bpo-23224: Fix segfaults and multiple leaks in the lzma and bz2 modules (GH-7822) 2023-02-23 06:00:58 -08: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-94216: add pseudo instructions to the dis/opcodes modules (GH-94241) 2022-07-01 15:33:35 +01:00
_operator.c gh-101476: Use _PyType_GetModuleState where applicable (#102188) 2023-02-24 21:16:29 +01:00
_pickle.c gh-103092: Isolate `_pickle` module (#102982) 2023-04-04 15:38:54 +05:30
_posixsubprocess.c gh-94518: Rename `group*` to `extra_group*` to avoid confusion (#101054) 2023-01-25 22:50:33 -08:00
_queuemodule.c bpo-46613: Add PyType_GetModuleByDef to the public API (GH-31081) 2022-02-11 17:22:11 +01:00
_randommodule.c gh-102255: Improve build support for Windows API partitions (GH-102256) 2023-03-09 21:09:12 +00:00
_scproxy.c gh-99537: Use Py_SETREF(var, NULL) in C code (#99687) 2022-11-23 14:57:50 +01:00
_ssl.c gh-103242: Migrate SSLContext.set_ecdh_curve not to use deprecated APIs (#103378) 2023-04-08 10:56:42 -07:00
_ssl.h gh-100062: Remove error code tables from _ssl and err_names_to_codes (GH-100063) 2023-04-03 23:44:00 +01:00
_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_111.h bpo-43788: Generate version specific _ssl_data.h (GH-25300) 2021-04-09 08:02:00 -07:00
_ssl_data_300.h bpo-43788: Generate version specific _ssl_data.h (GH-25300) 2021-04-09 08:02:00 -07:00
_stat.c bpo-40677: Define IO_REPARSE_TAG_APPEXECLINK explicitly (GH-20206) 2020-05-19 13:22:16 +01:00
_statisticsmodule.c Statistics inv_cdf sync with corresponding random module normal distributions (#95265) 2022-07-26 02:23:33 -05:00
_struct.c gh-98248: Normalizing the error messages in function struct.pack (GH-98252) 2022-12-04 20:24:18 +00:00
_testbuffer.c gh-99300: Replace Py_INCREF() with Py_NewRef() (#99513) 2022-11-16 10:39:47 +01:00
_testcapi_feature_macros.inc gh-91324: List feature macros in the stable ABI manifest, improve tests (GH-32415) 2022-04-28 16:30:28 +02:00
_testcapimodule.c gh-101659: Add _Py_AtExit() (gh-103298) 2023-04-05 18:42:02 -06:00
_testclinic.c gh-64490: Fix bugs in argument clinic varargs processing (#32092) 2022-11-24 20:56:50 +01:00
_testimportmultiple.c
_testinternalcapi.c gh-101758: Add a Test For Single-Phase Init Modules in Multiple Interpreters (gh-101920) 2023-02-15 16:05:07 -07:00
_testmultiphase.c gh-99300: Use Py_NewRef() in Modules/ directory (#99440) 2022-11-13 16:04:33 +01:00
_testsinglephase.c gh-102251: Updates to test_imp Toward Fixing Some Refleaks (gh-102254) 2023-02-27 09:21:18 -07:00
_threadmodule.c gh-59956: Clarify Runtime State Status Expectations (gh-101308) 2023-01-30 12:07:48 -07:00
_tkinter.c gh-103532: Remove TKINTER_PROTECT_LOADTK code (GH-103535) 2023-04-14 09:04:16 -05:00
_tracemalloc.c gh-101430: Update tracemalloc to handle presize properly. (gh-101745) 2023-02-10 08:30:03 +09:00
_typingmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99468) 2022-11-14 13:44:56 +01:00
_uuidmodule.c bpo-45847: Port _uuid to PY_STDLIB_MOD (GH-29741) 2021-11-24 10:20:37 +01:00
_weakref.c bpo-46937: convert remaining functions to AC in _weakref (GH-31705) 2022-03-07 18:57:45 +09:00
_winapi.c GH-75586: Make shutil.which() on Windows more consistent with the OS (GH-103179) 2023-04-04 23:24:13 +01:00
_xxinterpchannelsmodule.c gh-101659: Add _Py_AtExit() (gh-103298) 2023-04-05 18:42:02 -06:00
_xxsubinterpretersmodule.c gh-101659: Add _Py_AtExit() (gh-103298) 2023-04-05 18:42:02 -06:00
_zoneinfo.c gh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (in Modules/) (#102196) 2023-02-24 21:43:03 +00:00
addrinfo.h gh-95174: WASI: skip missing sockets functions (GH-95179) 2022-07-27 08:19:23 +02:00
arraymodule.c gh-102650: Remove duplicate include directives from multiple source files (#102651) 2023-03-13 13:25:17 -06:00
atexitmodule.c gh-101659: Add _Py_AtExit() (gh-103298) 2023-04-05 18:42:02 -06:00
audioop.c gh-99537: Use Py_SETREF() function in C code (#99656) 2022-11-22 14:22:22 +01:00
binascii.c bpo-15999: Accept arbitrary values for boolean parameters. (#15609) 2022-12-03 11:52:21 -08:00
cmathmodule.c Few coverage nitpicks for the cmath module (#102067) 2023-02-22 19:10:01 +00:00
config.c.in Add tests for the C tokenizer and expose it as a private module (GH-27924) 2021-08-24 17:50:05 +01:00
errnomodule.c gh-102255: Improve build support for Windows API partitions (GH-102256) 2023-03-09 21:09:12 +00:00
faulthandler.c Fix typos in faulthandler, testcapi error messages (#103020) 2023-03-25 14:27:02 -07:00
fcntlmodule.c gh-93475: Expose FICLONE and FICLONERANGE constants in fcntl (#93478) 2022-06-06 23:21:58 +02:00
gc_weakref.txt Fix links to old SF bugs (#95648) 2022-08-04 18:12:35 +02:00
gcmodule.c gh-84436: Implement Immortal Objects (gh-19474) 2023-04-22 13:39:37 -06:00
getaddrinfo.c gh-74895: getaddrinfo no longer raises OverflowError (#2435) 2023-02-13 17:37:34 -08:00
getbuildinfo.c gh-81057: Move Globals in Core Code to _PyRuntimeState (gh-99496) 2022-11-15 09:45:11 -07:00
getnameinfo.c gh-95174: WASI: skip missing sockets functions (GH-95179) 2022-07-27 08:19:23 +02:00
getpath.c gh-102281: Fix potential nullptr dereference + use of uninitialized memory (gh-102282) 2023-03-15 21:58:43 +09:00
getpath.py gh-101543: Ensure Windows registry path is only used when stdlib can't be found (GH-101544) 2023-02-06 15:55:32 +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 bpo-1635741: Port grp and pwd to multiphase initialization (GH-23360) 2020-11-18 23:47:32 -08:00
hashlib.h hashlib: Fix old message about unicode objects. (GH-28653) 2021-10-01 14:38:49 +02:00
itertoolsmodule.c gh-101476: Add _PyType_GetModuleState (GH-101477) 2023-02-23 13:42:15 -08:00
ld_so_aix.in
main.c gh-81057: Move More Globals in Core Code to _PyRuntimeState (gh-99516) 2022-11-16 09:37:14 -07: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-101291: Rearrange the size bits in PyLongObject (GH-102464) 2023-03-22 14:49:51 +00:00
md5module.c gh-101476: Use _PyType_GetModuleState where applicable (#102188) 2023-02-24 21:16:29 +01:00
mmapmodule.c gh-102255: Improve build support for Windows API partitions (GH-102256) 2023-03-09 21:09:12 +00:00
nismodule.c gh-99537: Use Py_SETREF(var, NULL) in C code (#99687) 2022-11-23 14:57:50 +01:00
ossaudiodev.c bpo-15999: Accept arbitrary values for boolean parameters. (#15609) 2022-12-03 11:52:21 -08:00
overlapped.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
posixmodule.c gh-103167: Fix `-Wstrict-prototypes` warnings by using `(void)` for functions with no args (GH-103168) 2023-04-05 09:22:33 +02:00
posixmodule.h bpo-41498: Fix build on platforms without sigset_t (GH-29770) 2021-11-25 12:28:41 +01:00
pwdmodule.c bpo-46670: Remove unused macros in the Modules directory (GH-31194) 2022-02-07 16:21:31 +01:00
pyexpat.c GH-101797: allocate `PyExpat_CAPI` capsule on heap (#101798) 2023-02-11 14:07:39 +05:30
readline.c gh-99300: Use Py_NewRef() in Modules/ directory (#99469) 2022-11-14 16:21:23 +01:00
resource.c gh-94512: Fix forced arg format in AC-processed resource (GH-94515) 2022-07-29 12:48:11 +01: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-102255: Improve build support for Windows API partitions (GH-102256) 2023-03-09 21:09:12 +00:00
sha1module.c gh-101476: Use _PyType_GetModuleState where applicable (#102188) 2023-02-24 21:16:29 +01:00
sha2module.c gh-101476: Use _PyType_GetModuleState where applicable (#102188) 2023-02-24 21:16:29 +01:00
signalmodule.c gh-102650: Remove duplicate include directives from multiple source files (#102651) 2023-03-13 13:25:17 -06:00
socketmodule.c gh-103092: Isolate `socket` module (#103094) 2023-04-09 06:33:52 +05:30
socketmodule.h gh-103092: Isolate `socket` module (#103094) 2023-04-09 06:33:52 +05:30
spwdmodule.c gh-91217: deprecate spwd (#91846) 2022-04-23 14:48:17 -07:00
symtablemodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
syslogmodule.c gh-99127: Allow some features of syslog to the main interpreter only (gh-99128) 2022-11-30 07:58:20 +09:00
termios.c GH-97001: Release GIL in termios extension (#99503) 2022-11-22 11:14:23 +01:00
timemodule.c gh-102255: Improve build support for Windows API partitions (GH-102256) 2023-03-09 21:09:12 +00:00
tkappinit.c gh-103532: Remove TKINTER_PROTECT_LOADTK code (GH-103535) 2023-04-14 09:04:16 -05:00
tkinter.h gh-103532: Remove TKINTER_PROTECT_LOADTK code (GH-103535) 2023-04-14 09:04:16 -05:00
unicodedata.c gh-101372: Fix unicodedata.is_normalized to properly handle the UCD 3… (gh-101388) 2023-02-06 13:58:00 +09:00
unicodedata_db.h closes gh-96734: Update to Unicode 15.0.0. (GH-96809) 2022-09-13 15:45:12 -07:00
unicodename_db.h closes gh-96734: Update to Unicode 15.0.0. (GH-96809) 2022-09-13 15:45:12 -07: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-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
xxlimited_35.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
xxmodule.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
xxsubtype.c gh-99300: Use Py_NewRef() in Modules/ directory (#99473) 2022-11-14 16:21:40 +01:00
zlibmodule.c gh-101322: Ensure test_zlib.ZlibDecompressorTest runs, fix errors in ZlibDecompressor (#101323) 2023-02-04 12:07:30 -08:00

README

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