cpython/Python
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
..
clinic gh-131525: Cache the result of tuple_hash (#131529) 2025-03-27 09:57:06 -04:00
frozen_modules gh-97669: Create Tools/build/ directory (#97963) 2022-10-17 12:01:00 +02:00
Python-ast.c gh-131238: Add explicit includes to pycore headers (#131257) 2025-03-17 12:32:43 +01:00
Python-tokenize.c gh-111178: Fix function signatures for test_types (#131455) 2025-03-19 13:46:17 +00:00
README
_warnings.c gh-131238: Move _Py_VISIT_STACKREF() to pycore_stackref.h (#131560) 2025-03-21 23:24:14 +01:00
asdl.c bpo-43244: Remove ast.h, asdl.h, Python-ast.h headers (GH-24933) 2021-03-23 20:47:40 +01:00
asm_trampoline.S gh-120400 :Support Linux perf profile to see Python calls on RISC-V architecture (#120089) 2024-06-12 14:24:46 +01:00
assemble.c GH-123044: Give the `POP_TOP` after a case test a location in the body, not the pattern. (GH-130627) 2025-03-10 17:31:16 +00:00
ast.c gh-131238: Add explicit includes to pycore headers (#131257) 2025-03-17 12:32:43 +01:00
ast_opt.c gh-130080: do not fold match case constants in unoptimized AST (#131577) 2025-03-23 13:50:14 +00:00
ast_unparse.c gh-119182: Use public PyUnicodeWriter in ast_unparse.c (#129208) 2025-01-23 01:44:43 +01:00
bltinmodule.c gh-131525: Cache the result of tuple_hash (#131529) 2025-03-27 09:57:06 -04:00
bootstrap_hash.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
brc.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
bytecodes.c gh-123358: Use `_PyStackRef` in `LOAD_DEREF` (gh-130064) 2025-03-26 12:08:20 -04:00
ceval.c gh-131238: Remove includes from pycore_interp.h (#131495) 2025-03-20 11:35:23 +00:00
ceval_gil.c gh-131238: Remove includes from pycore_interp.h (#131495) 2025-03-20 11:35:23 +00:00
ceval_macros.h GH-127705: Use `_PyStackRef`s in the default build. (GH-127875) 2025-03-10 14:06:56 +00:00
codecs.c gh-131238: Remove more includes from pycore_interp.h (#131480) 2025-03-19 23:01:32 +01:00
codegen.c gh-130881: Handle conditionally defined annotations (#130935) 2025-03-26 03:48:19 +00:00
compile.c gh-130881: Handle conditionally defined annotations (#130935) 2025-03-26 03:48:19 +00:00
condvar.h gh-104530: Enable native Win32 condition variables by default (GH-104531) 2024-02-02 13:50:51 +00:00
config_common.h gh-76785: Add PyInterpreterConfig Helpers (gh-117170) 2024-04-02 20:35:52 +00:00
context.c gh-111178: Change Argument Clinic signature for METH_O (#130682) 2025-03-11 16:33:36 +01:00
critical_section.c gh-114203: Optimise simple recursive critical sections (#128126) 2024-12-23 13:31:33 +01:00
crossinterp.c gh-131238: Remove includes from pycore_interp.h (#131495) 2025-03-20 11:35:23 +00:00
crossinterp_data_lookup.h gh-76785: Improved Subinterpreters Compatibility with 3.12 (2/2) (gh-126707) 2024-11-12 10:41:51 -07:00
crossinterp_exceptions.h gh-76785: Minor Cleanup of Exception-related Cross-interpreter State (gh-126602) 2024-11-11 14:49:41 -07:00
dtoa.c gh-131238: Add explicit includes to pycore headers (#131257) 2025-03-17 12:32:43 +01:00
dup2.c gh-108765: Python.h no longer includes <unistd.h> (#108783) 2023-09-02 16:50:18 +02:00
dynamic_annotations.c bpo-32241: Add the const qualifire to declarations of umodifiable strings. (#4748) 2017-12-12 13:55:04 +02:00
dynload_hpux.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
dynload_shlib.c gh-131238: Remove more includes from pycore_interp.h (#131480) 2025-03-19 23:01:32 +01:00
dynload_stub.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
dynload_win.c gh-131238: Remove pycore_runtime.h from pycore_pystate.h (#131356) 2025-03-19 17:33:24 +01:00
emscripten_signal.c GH-108614: Unbreak emscripten build (GH-109132) 2023-09-08 17:54:45 +01:00
emscripten_trampoline.c gh-128627: Skip wasm-gc on iOS Safari where it's broken (#130418) 2025-02-24 07:26:04 +08:00
errors.c gh-131401: fix data races in exception handling (#131447) 2025-03-20 12:02:05 +05:30
executor_cases.c.h GH-131729: Consider in-memory state when merging storage and stack (GH-131773) 2025-03-27 08:32:45 +00:00
fileutils.c Fix Windows build warnings (#131487) 2025-03-20 12:03:20 +01:00
flowgraph.c GH-130296: Remove `_PyOpcode_max_stack_effect` as it is no longer used (GH-131493) 2025-03-20 11:42:54 +00:00
formatter_unicode.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
frame.c gh-128421: Avoid TSAN warnings in `sys._current_frames()` (gh-131548) 2025-03-24 09:49:39 -04:00
frozen.c GH-89435: os.path should not be a frozen module (#126924) 2024-11-22 18:50:30 +00:00
frozenmain.c gh-105716: Fix _PyInterpreterState_IsRunningMain() For Embedders (gh-117140) 2024-03-21 18:20:20 -06:00
future.c gh-126139: Improve error message location for future statement with unknown feature (#126140) 2024-10-29 23:57:59 +00:00
gc.c gh-131740: Update PyUnstable_GC_VisitObjects to traverse perm gen (gh-131744) 2025-03-26 09:45:29 +09:00
gc_free_threading.c gh-131586: Avoid refcount contention in some "special" calls (#131588) 2025-03-26 14:38:47 -04:00
gc_gil.c gh-100240: Use a consistent implementation for freelists (#121934) 2024-07-22 12:08:27 -04:00
generated_cases.c.h GH-131729: Consider in-memory state when merging storage and stack (GH-131773) 2025-03-27 08:32:45 +00:00
getargs.c GH-131238: More refactoring of core header files (GH-131351) 2025-03-17 14:41:05 +00:00
getcompiler.c closes bpo-43278: remove unnecessary leading '\n' from COMPILER when build with GCC/Clang (GH-24606) 2021-02-25 20:24:21 -08:00
getcopyright.c gh-126133: Only use start year in PSF copyright, remove end years (#126236) 2024-11-12 15:59:19 +02:00
getopt.c Make the Python CLI error message style more consistent (GH-128129) 2025-01-11 11:17:35 +02:00
getplatform.c bpo-32150: Expand tabs to spaces in C files. (#4583) 2017-11-28 17:56:10 +02:00
getversion.c gh-119132: Update sys.version to identify free-threaded or not. (gh-119134) 2024-05-18 19:44:40 +00:00
hamt.c gh-111178: Fix function signatures for multiple tests (#131496) 2025-03-20 12:27:03 +01:00
hashtable.c gh-111545: Add Py_HashPointer() function (#112096) 2023-12-06 15:09:22 +01:00
import.c gh-131238: Remove more includes from pycore_interp.h (#131480) 2025-03-19 23:01:32 +01:00
importdl.c GH-131238: More refactoring of core header files (GH-131351) 2025-03-17 14:41:05 +00:00
index_pool.c gh-130740: Move some `stdbool.h` includes after `Python.h` (#130738) 2025-03-02 09:56:49 +00:00
initconfig.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
instruction_sequence.c gh-130080: move _Py_EnsureArrayLargeEnough to a separate header so it can be used outside of the compiler (#130930) 2025-03-13 16:02:58 +00:00
instrumentation.c gh-131763: Replace the redundant check with assert in remove_tools (#131765) 2025-03-26 18:36:04 -04:00
interpconfig.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
intrinsics.c gh-131238: Move _Py_VISIT_STACKREF() to pycore_stackref.h (#131560) 2025-03-21 23:24:14 +01:00
jit.c gh-131238: Add missing pycore_function.h includes for JIT compiler (#131571) 2025-03-21 23:37:49 +00:00
legacy_tracing.c gh-111178: fix UBSan failures for `Python/legacy_tracing.c` (#131611) 2025-03-24 11:00:32 +01:00
lock.c gh-111178: Fix function signatures to fix undefined behavior (#131191) 2025-03-14 09:52:15 +00:00
marshal.c gh-131238: Add explicit includes to pycore headers (#131257) 2025-03-17 12:32:43 +01:00
modsupport.c bpo-45325: Add a new 'p' parameter to Py_BuildValue to convert an integer into a Python bool (#28634) 2025-02-18 17:14:11 +00:00
mysnprintf.c Add a warning message about PyOS_snprintf (#95993) 2022-10-07 11:49:53 -07:00
mystrtoul.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
object_stack.c gh-100240: Use a consistent implementation for freelists (#121934) 2024-07-22 12:08:27 -04:00
opcode_targets.h GH-128534: Fix behavior of branch monitoring for `async for` (GH-130847) 2025-03-07 14:30:31 +00:00
optimizer.c gh-111178: fix UBSan failures for `_PyExecutorObject` (#131610) 2025-03-24 10:53:23 +01:00
optimizer_analysis.c GH-131498: Remove conditional stack effects (GH-131499) 2025-03-20 15:39:38 +00:00
optimizer_bytecodes.c GH-131729: Code-gen better liveness analysis (GH-131732) 2025-03-26 15:21:35 +00:00
optimizer_cases.c.h GH-131729: Code-gen better liveness analysis (GH-131732) 2025-03-26 15:21:35 +00:00
optimizer_symbols.c GH-131331: Rename "not" to "invert" (GH-131334) 2025-03-20 16:59:41 -07:00
parking_lot.c gh-76785: Improved Subinterpreters Compatibility with 3.12 (1/2) (gh-126704) 2024-11-11 15:58:46 -07:00
pathconfig.c gh-111924: Fix data races when swapping allocators (gh-130287) 2025-02-20 11:31:15 -05:00
perf_jit_trampoline.c gh-131238: Add explicit includes to pycore headers (#131257) 2025-03-17 12:32:43 +01:00
perf_trampoline.c gh-131238: Remove includes from pycore_interp.h (#131495) 2025-03-20 11:35:23 +00:00
preconfig.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
pyarena.c Chore: Fix typo in `pyarena.c` (#126527) 2024-11-07 16:37:41 +01:00
pyctype.c
pyfpe.c bpo-46315: Add ifdef HAVE_ feature checks for WASI compatibility (GH-30507) 2022-01-13 09:46:04 +01:00
pyhash.c gh-122854: Add Py_HashBuffer() function (#122855) 2024-08-30 15:42:27 +00:00
pylifecycle.c gh-131238: Add pycore_interpframe_structs.h header (#131553) 2025-03-21 17:19:47 +00:00
pymath.c bpo-45440: Remove pymath.c fallbacks (GH-28977) 2021-10-15 19:45:34 +02:00
pystate.c gh-131238: Add pycore_interpframe_structs.h header (#131553) 2025-03-21 17:19:47 +00:00
pystrcmp.c gh-108767: Replace ctype.h functions with pyctype.h functions (#108772) 2023-09-01 18:36:53 +02:00
pystrhex.c gh-108765: pystrhex: Replace stdlib.h abs() with Py_ABS() (#108830) 2023-09-02 23:15:54 +02:00
pystrtod.c gh-120026: soft deprecate Py_HUGE_VAL macro (#120027) 2024-11-01 22:04:31 +00:00
pythonrun.c gh-131238: Remove more includes from pycore_interp.h (#131480) 2025-03-19 23:01:32 +01:00
pytime.c gh-131238: Remove pycore_runtime.h from pycore_pystate.h (#131356) 2025-03-19 17:33:24 +01:00
qsbr.c gh-131238: Add explicit includes to pycore headers (#131257) 2025-03-17 12:32:43 +01:00
specialize.c gh-130931: Add pycore_interpframe.h internal header (#131249) 2025-03-19 18:17:44 +01:00
stackrefs.c GH-127705: Use `_PyStackRef`s in the default build. (GH-127875) 2025-03-10 14:06:56 +00:00
stdlib_module_names.h gh-126925: Modify how iOS test results are gathered (#127592) 2024-12-09 13:28:57 +08:00
structmember.c gh-117657: TSAN Fix races in `PyMember_Get` and `PyMember_Set` for C extensions (GH-123211) 2024-12-03 09:41:53 -05:00
suggestions.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
symtable.c gh-130881: Handle conditionally defined annotations (#130935) 2025-03-26 03:48:19 +00:00
sysmodule.c GH-131296: fix clang-cl warnings in sysmodule.c (#131304) 2025-03-20 16:29:21 +00:00
thread.c gh-131238: Add explicit includes to pycore headers (#131257) 2025-03-17 12:32:43 +01:00
thread_nt.h gh-87135: Hang non-main threads that attempt to acquire the GIL during finalization (GH-105805) 2024-10-02 09:17:49 -07:00
thread_pthread.h gh-87135: Hang non-main threads that attempt to acquire the GIL during finalization (GH-105805) 2024-10-02 09:17:49 -07:00
thread_pthread_stubs.h gh-125161: return non zero value in pthread_self on wasi (#125303) 2024-10-13 20:59:41 +05:30
tier2_engine.md Docs: fix spelling of the word 'transferring' (#116641) 2024-03-13 23:53:32 +01:00
traceback.c gh-131238: Remove includes from pycore_interp.h (#131495) 2025-03-20 11:35:23 +00:00
tracemalloc.c gh-131296: fix clang-cl warning in tracemalloc.c (#131514) 2025-03-22 10:38:47 +01:00
uniqueid.c gh-128923: Use zero to indicate unassigned unique id (#128925) 2025-01-17 16:42:27 +01:00
vm-state.md Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00

README

Miscellaneous source files for the main Python shared library