cpython/Lib
Michael Droettboom 8614f86b71
gh-131525: Cache the result of tuple_hash (#131529)
* gh-131525: Cache the result of tuple_hash

* Fix debug builds

* Add blurb

* Fix formatting

* Pre-compute empty tuple singleton

* Mostly set the cache within tuple_alloc

* Fixes for TSAN

* Pre-compute empty tuple singleton

* Fix for 32-bit platforms

* Assert that op != NULL in _PyTuple_RESET_HASH_CACHE

* Use FT_ATOMIC_STORE_SSIZE_RELAXED macro

* Update Include/internal/pycore_tuple.h

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>

* Fix alignment

* atomic load

* Update Objects/tupleobject.c

Co-authored-by: Chris Eibl <138194463+chris-eibl@users.noreply.github.com>

---------

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Co-authored-by: Chris Eibl <138194463+chris-eibl@users.noreply.github.com>
2025-03-27 09:57:06 -04:00
..
__phello__
_pyrepl gh-131507: Refactor screen and cursor position calculations (GH-131547) 2025-03-21 18:27:35 +01:00
asyncio gh-131325: fix sendfile fallback implementation to drain data after writing to transport (#131376) 2025-03-18 00:52:57 +05:30
collections Fix outdated reference link in collections module (gh-130349) 2025-02-20 23:58:58 +00:00
concurrent gh-74028: add `buffersize` parameter to `concurrent.futures.Executor.map` for lazier behavior (#125663) 2025-03-13 11:57:53 +01:00
ctypes gh-128715: Expose ctypes.CField, with info attributes (GH-128950) 2025-03-24 14:18:34 +01:00
curses gh-120417: Add #noqa to used imports in the stdlib (#120421) 2024-06-13 16:14:50 +02:00
dbm gh-120417: Remove unused imports in the stdlib (#120420) 2024-06-12 20:56:42 +02:00
email gh-121284: Fix email address header folding with parsed encoded-word (GH-122754) 2025-03-18 12:07:17 +01:00
encodings GH-131358: Add encoding alias cseuckr for euc_kr (#131370) 2025-03-19 18:29:20 +09:00
ensurepip gh-129583: update bundled pip to 25.0.1 (#129909) 2025-02-10 12:21:04 +02:00
html
http gh-128982: Revert "#128982: Substitute regular expression in http.cookiejar.join_header_words for an efficient alternative (GH-128983)" and add tests (GH-130584) 2025-02-26 15:42:39 +01:00
idlelib gh-69001: Convert links to more usable buttons (#129591) 2025-02-20 08:30:57 +00:00
importlib gh-130094: Fix race conditions in `importlib` (gh-130101) 2025-02-18 18:02:42 -05:00
json gh-125660: Reject invalid unicode escapes for Python implementation of JSON decoder (GH-125683) 2024-10-18 15:29:47 +03:00
logging gh-127712: Fix `secure` argument of `logging.handlers.SMTPHandler` (GH-127726) 2025-02-10 12:34:27 +00:00
multiprocessing gh-131233: remove return-in-finally in multiprocessing/connection.py (#131416) 2025-03-21 18:05:47 +00:00
pathlib GH-128520: pathlib ABCs: tighten up argument types (#131621) 2025-03-24 15:39:08 +00:00
pydoc_data gh-127833: Use `productionlist` nodes to implement the `grammar-snippet` directive (#130376) 2025-03-20 15:35:20 +00:00
re gh-126505: Fix bugs in compiling case-insensitive character classes (GH-126557) 2024-11-11 18:27:26 +02:00
site-packages
sqlite3 gh-130893: Fix typo in SqliteInteractiveConsole.runsource docstring (#130894) 2025-03-06 22:10:37 -08:00
sysconfig GH-107956: install build-details.json (PEP 739) (#130069) 2025-02-13 13:58:00 +00:00
test gh-131525: Cache the result of tuple_hash (#131529) 2025-03-27 09:57:06 -04:00
tkinter gh-128562: Fix generation of the tkinter widget names (GH-128604) 2025-01-13 15:54:46 +00:00
tomllib gh-118761: Improve import time of `tomllib` (#128907) 2025-01-16 18:48:42 -08:00
turtledemo gh-128062: Fix the font size and shortcut display of the turtledemo menu (#128063) 2024-12-19 15:24:47 -05:00
unittest gh-128595: Default to stdout isatty for colour detection instead of stderr (#128498) 2025-01-20 12:52:42 +02:00
urllib GH-125866: Deprecate `nturl2path` module (#131432) 2025-03-19 19:33:01 +00:00
venv GH-127724: don't use sysconfig to calculate the venv local include path (#127731) 2024-12-12 21:41:46 +00:00
wsgiref gh-126133: Only use start year in PSF copyright, remove end years (#126236) 2024-11-12 15:59:19 +02:00
xml gh-128302: Fix bugs in xml.dom.xmlbuilder (GH-128284) 2025-01-07 12:40:41 +02:00
xmlrpc gh-120485: Add an override of `allow_reuse_port` on classes subclassing `socketserver.TCPServer` (GH-120488) 2024-06-16 13:15:03 +01:00
zipfile gh-118761: Improve import time for `pstats` and `zipfile` (#128981) 2025-01-23 14:49:36 +00:00
zoneinfo
__future__.py
__hello__.py
_aix_support.py
_android_support.py Fix typo in `Lib/_android_support.py` (#127699) 2024-12-06 19:50:58 +02:00
_apple_support.py gh-126925: Modify how iOS test results are gathered (#127592) 2024-12-09 13:28:57 +08:00
_collections_abc.py gh-116938: Clarify documentation of `dict` and `dict.update` regarding the positional argument they accept (#125213) 2024-10-11 23:05:13 +00:00
_colorize.py gh-131507: Clean up tests and type checking for `_pyrepl` (#131509) 2025-03-21 15:48:10 +01:00
_compat_pickle.py
_compression.py
_ios_support.py gh-119253: use ImportError in _ios_support (#119254) 2024-05-20 16:39:30 -04:00
_markupbase.py _markupbase.py: Use a permalink for the analysis of MS-Word extensions (GH-129017) 2025-02-06 11:40:43 +01:00
_opcode_metadata.py GH-128534: Fix behavior of branch monitoring for `async for` (GH-130847) 2025-03-07 14:30:31 +00:00
_osx_support.py
_py_abc.py
_pydatetime.py gh-70647: Raise a more informative error for when date is out of range (GH-131335) 2025-03-20 20:47:09 -07:00
_pydecimal.py Fix typos in `Lib/_pydecimal.py` (#127700) 2024-12-12 22:27:29 +02:00
_pyio.py gh-117151: IO performance improvement, increase io.DEFAULT_BUFFER_SIZE to 128k (GH-118144) 2025-03-07 11:36:12 -08:00
_pylong.py Fix typos in comments and test code (#122846) 2024-08-11 21:16:41 -07:00
_sitebuiltins.py
_strptime.py gh-127552: Remove comment questioning 4-digit restriction for ‘Y’ in datetime.strptime patterns (#127590) 2024-12-04 10:30:51 -08:00
_threading_local.py
_weakrefset.py gh-89967: make WeakKeyDictionary and WeakValueDictionary thread safe (#125325) 2024-10-13 21:05:05 +05:30
abc.py
annotationlib.py gh-119180: Add VALUE_WITH_FAKE_GLOBALS format to annotationlib (#124415) 2024-11-26 15:40:13 +00:00
antigravity.py
argparse.py GH-127133: Remove ability to nest argument groups & mutually exclusive groups (#127186) 2024-11-24 15:20:37 +00:00
ast.py gh-129598: ast: allow multi stmts for ast single with ';' (#129620) 2025-03-19 15:29:40 -07:00
base64.py gh-118761: substitute `re` import in `base64.b16decode` for a more efficient alternative (#128736) 2025-01-14 13:25:33 +00:00
bdb.py gh-120144: Disable the CALL event when possible to achieve zero overhead pdb (#131390) 2025-03-20 20:31:55 -04:00
bisect.py
bz2.py gh-115961: Add name and mode attributes for compressed file-like objects (GH-116036) 2024-04-21 11:46:39 +03:00
cProfile.py gh-118673: Remove shebang and executable bits from stdlib modules. (#119658) 2024-05-29 12:43:19 -04:00
calendar.py gh-130665: Only apply locale to calendar CLI via `--locale` and not `LANG` env var (#130676) 2025-02-28 16:24:05 +02:00
cmd.py gh-118761: Improve import time of `cmd` module (#130056) 2025-02-17 20:06:08 +00:00
code.py gh-130660: Restore sys.ps1 and sys.ps2 after code.interact (#130661) 2025-02-28 13:15:55 -05:00
codecs.py gh-121785: Remove unused code from codecs.py (GH-121787) 2024-07-15 17:18:37 +00:00
codeop.py gh-124960: Fixed `barry_as_FLUFL` future flag does not work in new REPL (#124999) 2024-10-14 15:53:50 +02:00
colorsys.py gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) 2024-07-19 08:06:02 +00:00
compileall.py gh-117205: Increase chunksize when compiling pyc in parallel (#117206) 2024-04-03 15:24:24 -07:00
configparser.py gh-128641: Fix ConfigParser.read Perfomance Regression (#129596) 2025-02-24 00:20:37 +00:00
contextlib.py
contextvars.py gh-126451: Register contextvars.Context to collections.abc.Mapping (#126452) 2024-11-07 01:12:45 +03:00
copy.py gh-128118: Speed up copy.copy with fast lookup for atomic and container types (#128119) 2024-12-30 18:18:42 +01:00
copyreg.py gh-125767: Fix pickling and copying of super objects (GH-125781) 2024-10-21 21:30:45 +03:00
csv.py gh-118761: Improve import time for `csv` (#128858) 2025-01-18 11:45:18 +01:00
dataclasses.py gh-128184: Fix display of signatures with ForwardRefs (#130815) 2025-03-04 06:58:37 -08:00
datetime.py gh-123843: Remove broken links to the Zope DateTimeWiki (#123846) 2024-09-08 22:39:23 -04:00
decimal.py gh-123339: Fix cases of inconsistency of __module__ and __firstlineno__ in classes (GH-123613) 2024-09-28 20:51:49 +03:00
difflib.py gh-131204: Fix `difflib.HtmlDiff` may not use monospaced font (#131221) 2025-03-14 10:45:33 +00:00
dis.py GH-128534: Fix behavior of branch monitoring for `async for` (GH-130847) 2025-03-07 14:30:31 +00:00
doctest.py gh-128595: Default to stdout isatty for colour detection instead of stderr (#128498) 2025-01-20 12:52:42 +02:00
enum.py gh-131045: [Enum] fix flag containment checks when using values (GH-131053) 2025-03-12 12:10:47 -07:00
filecmp.py gh-122400: Handle ValueError in filecmp (GH-122401) 2024-07-30 08:50:30 +00:00
fileinput.py
fnmatch.py gh-122288: Improve performances of `fnmatch.translate` (#122289) 2024-11-27 16:42:45 +00:00
fractions.py gh-121797: Add class method Fraction.from_number() (GH-121800) 2024-10-14 07:54:59 +00:00
ftplib.py Remove almost all unpaired backticks in docstrings (#119231) 2024-05-22 12:35:18 -04:00
functools.py gh-127750: Improve repr of functools.singledispatchmethod (GH-130220) 2025-03-05 13:10:05 +02:00
genericpath.py gh-117114: Make os.path.isdevdrive available on all platforms (GH-117115) 2024-03-25 22:55:11 +00:00
getopt.py gh-126946: Improve error message in getopt.do_longs based on existing comment (GH-126871) 2024-11-26 10:54:02 +02:00
getpass.py
gettext.py gettext: Remove outdated "TODO" comment (#130890) 2025-03-06 23:41:03 +00:00
glob.py GH-130614: pathlib ABCs: support alternate separator in `full_match()` (#130991) 2025-03-09 16:36:59 +00:00
graphlib.py gh-130914: Make graphlib.TopologicalSorter.prepare() idempotent (#131317) 2025-03-18 16:28:00 -05:00
gzip.py gh-131492, gh-131461: handle exceptions in GzipFile constructor while owning resources (#131462) 2025-03-20 17:06:21 +00:00
hashlib.py Fix typos in warnings, docstrings, comments and text files (#123597) 2024-09-03 02:20:40 +02:00
heapq.py gh-119721: Integrate documentation fixes into heapq module docstring. (gh-119722) 2024-05-29 11:39:34 -05:00
hmac.py gh-130149: cleanup refactorization of `test_hmac.py` (#131318) 2025-03-17 11:10:03 +01:00
imaplib.py gh-55454: Add IMAP4 IDLE support to imaplib (#122542) 2025-02-06 19:15:11 -08:00
inspect.py gh-117174: Add a new route in linecache to fetch interactive source code (#117500) 2025-03-10 21:54:05 +00:00
io.py gh-127647: Add typing.Reader and Writer protocols (#127648) 2025-03-06 07:36:19 -08:00
ipaddress.py gh-124217, ipaddress: Add RFC 9637 reserved IPv6 block `3fff::/20` (#124240) 2024-09-20 11:01:28 +00:00
keyword.py
linecache.py gh-117174: Fix reference leak and gdb tests (#131095) 2025-03-11 23:17:58 +00:00
locale.py gh-118761: Always lazy import `re` in `locale` (#129860) 2025-03-27 15:47:08 +02:00
lzma.py gh-120417: Add #noqa to used imports in the stdlib (#120421) 2024-06-13 16:14:50 +02:00
mailbox.py gh-117467: Add preserving of mailbox owner on flush (GH-117510) 2024-04-04 13:32:53 +03:00
mimetypes.py gh-93096: Make `mimetypes` CLI tool public (#93097) 2025-03-13 13:19:22 +02:00
modulefinder.py
netrc.py
ntpath.py gh-119826: Improved fallback for ntpath.abspath() on Windows (GH-119938) 2024-11-12 21:18:03 +00:00
nturl2path.py GH-125866: Deprecate `nturl2path` module (#131432) 2025-03-19 19:33:01 +00:00
numbers.py
opcode.py gh-131306: Remove unused code related to `BINARY_SUBSCR` (#131307) 2025-03-16 16:37:29 +00:00
operator.py gh-115808: Add ``is_none`` and ``is_not_none`` to ``operator`` (#115814) 2024-08-10 20:16:34 +01:00
optparse.py gh-118761: Redudce the import time of ``optparse`` (#128899) 2025-01-20 00:03:19 +00:00
os.py gh-120057: Add os.reload_environ() function (#126268) 2024-11-05 08:43:34 +01:00
pdb.py gh-120144: Make it possible to use `sys.monitoring` for bdb and make it default for pdb (#124533) 2025-03-17 18:34:37 -04:00
pickle.py gh-93096: Update and document `pickle` CLI (#131097) 2025-03-14 14:15:35 +01:00
pickletools.py gh-93096: Update and document `pickletools` CLI (#131273) 2025-03-17 09:36:30 +00:00
pkgutil.py gh-131152, pkgutil: Remove unused imports (#131149) 2025-03-12 15:03:36 +01:00
platform.py gh-90548: Make musl test skips smarter (fixes Alpine errors) (#131313) 2025-03-19 13:05:09 -04:00
plistlib.py
poplib.py gh-130637: Add validation for numeric response data in `stat()` method (#130646) 2025-03-02 08:05:40 -05:00
posixpath.py GH-118289: Fix handling of non-directories in `posixpath.realpath()` (#120127) 2024-11-13 22:59:32 +00:00
pprint.py gh-118761: Improve import time of `pprint` (#122725) 2024-08-07 22:46:54 +03:00
profile.py gh-118673: Remove shebang and executable bits from stdlib modules. (#119658) 2024-05-29 12:43:19 -04:00
pstats.py gh-118761: Improve import time for `pstats` and `zipfile` (#128981) 2025-01-23 14:49:36 +00:00
pty.py gh-124405: Fix `NameError` in `openpty` (#124406) 2024-09-24 20:06:39 +02:00
py_compile.py
pyclbr.py
pydoc.py gh-128772: Fix pydoc for methods with __module__ is None (GH-129177) 2025-02-04 16:25:49 +02:00
queue.py gh-117531: Unblock getters after non-immediate queue shutdown (#117532) 2024-04-10 08:01:42 -07:00
quopri.py gh-118673: Remove shebang and executable bits from stdlib modules. (#119658) 2024-05-29 12:43:19 -04:00
random.py gh-131269: Minor optimization in random.py (#131270) 2025-03-20 17:10:33 -05:00
reprlib.py gh-113570: reprlib.repr does not use builtin __repr__ for reshadowed builtins (GH-113577) 2024-10-17 16:34:37 +00:00
rlcompleter.py gh-113978: Ignore warnings on text completion inside REPL (#113979) 2024-05-21 18:28:21 +02:00
runpy.py
sched.py gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) 2024-07-19 08:06:02 +00:00
secrets.py
selectors.py
shelve.py
shlex.py
shutil.py gh-81340: Use copy_file_range in shutil.copyfile copy functions (GH-93152) 2025-02-03 10:23:27 +00:00
signal.py
site.py gh-128779: Fix site venv() for system site-packages (#129184) 2025-01-30 00:02:31 +00:00
smtplib.py gh-118673: Remove shebang and executable bits from stdlib modules. (#119658) 2024-05-29 12:43:19 -04:00
socket.py gh-128916: Do not set `SO_REUSEPORT` on non-`AF_INET*` sockets (GH-128933) 2025-01-17 16:49:16 -08:00
socketserver.py gh-128916: Do not set `SO_REUSEPORT` on non-`AF_INET*` sockets (GH-128933) 2025-01-17 16:49:16 -08:00
sre_compile.py
sre_constants.py
sre_parse.py
ssl.py gh-128035: Add ssl.HAS_PHA to detect libssl PHA support (GH-128036) 2024-12-24 18:29:27 +00:00
stat.py gh-120417: Remove unused imports in the stdlib (#120420) 2024-06-12 20:56:42 +02:00
statistics.py Minor code beautifications in statistics.py (gh-124866) 2024-10-01 15:55:36 -05:00
string.py gh-71494: string.Formatter: support keys/attributes in unnumbered fields (GH-21767) 2025-01-31 13:16:24 +01:00
stringprep.py
struct.py gh-120417: Add #noqa to used imports in the stdlib (#120421) 2024-06-13 16:14:50 +02:00
subprocess.py gh-118761: Revert "Improve import time of `subprocess` (GH-129427)" (#130201) 2025-02-16 18:40:08 +00:00
symtable.py gh-119698: deprecate ``symtable.Class.get_methods`` (#121902) 2024-07-22 07:04:17 -07:00
tabnanny.py gh-120495: Fix incorrect exception handling in Tab Nanny (#120498) 2024-06-15 05:04:14 -06:00
tarfile.py gh-121267: Improve performance of tarfile (#121267) (#121269) 2024-10-30 15:08:30 -07:00
tempfile.py gh-127371 Avoid unbounded growth SpooledTempfile.writelines (GH-127372) 2025-03-05 00:06:07 +02:00
textwrap.py gh-126133: Only use start year in PSF copyright, remove end years (#126236) 2024-11-12 15:59:19 +02:00
this.py
threading.py gh-129403: Fix `ValueError` messages in `asyncio.Barrier` and `threading.Barrier` (#129419) 2025-01-30 11:11:12 +03:00
timeit.py gh-118673: Remove shebang and executable bits from stdlib modules. (#119658) 2024-05-29 12:43:19 -04:00
token.py gh-127303: Add docs for token.EXACT_TOKEN_TYPES (#127304) 2024-11-29 04:00:50 -05:00
tokenize.py gh-125553: Fix backslash continuation in `untokenize` (#126010) 2025-01-21 19:58:44 +00:00
trace.py gh-112192: Increase the trace module coverage precision to one decimal (#126972) 2024-12-03 23:33:13 +01:00
traceback.py gh-117174: Add a new route in linecache to fetch interactive source code (#117500) 2025-03-10 21:54:05 +00:00
tracemalloc.py
tty.py
turtle.py gh-126349: Add 'fill', 'poly', and 'no_animation' context managers to turtle (#126350) 2025-01-18 11:27:22 +01:00
types.py
typing.py gh-127647: Add typing.Reader and Writer protocols (#127648) 2025-03-06 07:36:19 -08:00
uuid.py gh-131236: allow to generate multiple UUIDs at once via CLI (#131218) 2025-03-26 22:49:28 +02:00
warnings.py gh-129843: fix pure Python implementation of `warnings.warn_explicit` (#129848) 2025-03-17 10:49:53 +00:00
wave.py
weakref.py gh-89967: make WeakKeyDictionary and WeakValueDictionary thread safe (#125325) 2024-10-13 21:05:05 +05:30
webbrowser.py gh-128540: lookup default webbrowser on macOS (#130535) 2025-03-14 02:51:15 -04:00
zipapp.py gh-130379: Fix incorrect zipapp logic to avoid including the target in itself (gh-130509) 2025-02-26 11:25:30 +00:00
zipimport.py gh-125746: Delay deprecated `zipimport.zipimporter.load_module` removal time to 3.15 (#125748) 2025-02-11 23:59:09 +00:00