cpython/Python
Kirill Podoprigora 27486c3365
gh-115999: Add free-threaded specialization for UNPACK_SEQUENCE (#126600)
Add free-threaded specialization for `UNPACK_SEQUENCE` opcode.
`UNPACK_SEQUENCE_TUPLE/UNPACK_SEQUENCE_TWO_TUPLE` are already thread safe since tuples are immutable.
`UNPACK_SEQUENCE_LIST` is not thread safe because of nature of lists (there is nothing preventing another thread from adding items to or removing them the list while the instruction is executing). To achieve thread safety we add a critical section to the implementation of `UNPACK_SEQUENCE_LIST`, especially around the parts where we check the size of the list and push items onto the stack.


---------

Co-authored-by: Matt Page <mpage@meta.com>
Co-authored-by: mpage <mpage@cs.stanford.edu>
2024-11-22 19:00:35 +02:00
..
clinic gh-126579: Adapt sys.audit() to Argument Clinic (GH-126580) 2024-11-08 13:11:44 +00:00
frozen_modules
_warnings.c gh-126209: Fix inconsistency of skip_file_prefixes in warnings.warn's C and Python implementations (GH-126329) 2024-11-12 13:01:56 +01:00
asdl.c
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-121040: Use __attribute__((fallthrough)) (#121044) 2024-06-27 09:58:44 +00:00
ast.c gh-122313: Clean up deep recursion guarding code in the compiler (GH-122640) 2024-08-03 12:45:45 +03:00
ast_opt.c gh-123497: New limit for Python integers on 64-bit platforms (GH-123724) 2024-09-29 10:40:20 +03:00
ast_unparse.c gh-125268: Use static string for "1e309" in AST (#125272) 2024-10-10 16:21:29 -04:00
bltinmodule.c gh-126757: fix minor typo (GH-126758) 2024-11-12 13:23:40 -08:00
bootstrap_hash.c gh-121199: Use _Py__has_attribute() in timemodule.c (#121203) 2024-07-01 08:49:33 +00:00
brc.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
bytecodes.c gh-115999: Add free-threaded specialization for UNPACK_SEQUENCE (#126600) 2024-11-22 19:00:35 +02:00
ceval.c gh-114940: Add _Py_FOR_EACH_TSTATE_UNLOCKED(), and Friends (gh-127077) 2024-11-21 11:08:38 -07:00
ceval_gil.c gh-114940: Add _Py_FOR_EACH_TSTATE_UNLOCKED(), and Friends (gh-127077) 2024-11-21 11:08:38 -07:00
ceval_macros.h gh-120619: Strength reduce function guards, support 2-operand uop forms (GH-124846) 2024-11-09 11:35:33 +08:00
codecs.c gh-115754: Use Py_GetConstant(Py_CONSTANT_EMPTY_STR) (#125194) 2024-10-09 17:15:23 +02:00
codegen.c gh-126072: Set docstring attribute for module and class (#126231) 2024-11-08 15:13:18 +00:00
compile.c gh-120017: use 'do-while(0)' in some {codegen,compile}.c multi-line macros (#120018) 2024-11-07 23:03:11 +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-124872: Replace enter/exit events with "switched" (#125532) 2024-10-16 13:53:21 +02:00
critical_section.c gh-119344: Make critical section API public (#119353) 2024-06-21 15:50:18 -04:00
crossinterp.c gh-126986: Drop _PyInterpreterState_FailIfNotRunning() (gh-126988) 2024-11-19 00:11:12 +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-121040: Use __attribute__((fallthrough)) (#121044) 2024-06-27 09:58:44 +00:00
dup2.c
dynamic_annotations.c
dynload_hpux.c
dynload_shlib.c
dynload_stub.c
dynload_win.c
emscripten_signal.c
emscripten_trampoline.c gh-121698 Emscripten: Use updated WebAssembly type reflection proposal (GH-121699) 2024-07-14 11:25:09 +02:00
errors.c gh-125604: Move _Py_AuditHookEntry, etc. Out of pycore_runtime.h (gh-125605) 2024-10-18 09:26:08 -06:00
executor_cases.c.h gh-115999: Add free-threaded specialization for UNPACK_SEQUENCE (#126600) 2024-11-22 19:00:35 +02:00
fileutils.c gh-126780: Fix ntpath.normpath() for drive-relative paths (GH-126801) 2024-11-21 14:43:36 +00:00
flowgraph.c GH-125837: Split LOAD_CONST into three. (GH-125972) 2024-10-29 11:15:42 +00:00
formatter_unicode.c gh-115754: Use Py_GetConstant(Py_CONSTANT_EMPTY_STR) (#125194) 2024-10-09 17:15:23 +02:00
frame.c gh-115999: Implement thread-local bytecode and enable specialization for BINARY_OP (#123926) 2024-11-04 11:13:32 -08:00
frozen.c gh-108716: Cleanup remaining deepfreeze infrastructure (#116919) 2024-03-18 11:13:11 -07: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-127010: Don't lazily track and untrack dicts (GH-127027) 2024-11-20 16:41:20 +00:00
gc_free_threading.c gh-114940: Add _Py_FOR_EACH_TSTATE_UNLOCKED(), and Friends (gh-127077) 2024-11-21 11:08:38 -07: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-115999: Add free-threaded specialization for UNPACK_SEQUENCE (#126600) 2024-11-22 19:00:35 +02:00
getargs.c gh-122943: Add the varpos parameter in _PyArg_UnpackKeywords (GH-126564) 2024-11-08 14:23:50 +02:00
getcompiler.c
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
getplatform.c
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-125196: Use PyUnicodeWriter in HAMT (#125458) 2024-10-15 09:47:36 +00:00
hashtable.c gh-111545: Add Py_HashPointer() function (#112096) 2023-12-06 15:09:22 +01:00
import.c gh-126688: Reinit import lock after fork (#126692) 2024-11-12 15:53:58 -05:00
importdl.c gh-122907: Fix Builds Without HAVE_DYNAMIC_LOADING Set (gh-122952) 2024-08-13 14:44:57 -06:00
index_pool.c gh-115999: Implement thread-local bytecode and enable specialization for BINARY_OP (#123926) 2024-11-04 11:13:32 -08:00
initconfig.c gh-115999: Implement thread-local bytecode and enable specialization for BINARY_OP (#123926) 2024-11-04 11:13:32 -08:00
instruction_sequence.c gh-117680: Fix msvc warning in instruction_sequence.c (#118326) 2024-04-26 17:20:30 +01:00
instrumentation.c gh-114940: Add _Py_FOR_EACH_TSTATE_UNLOCKED(), and Friends (gh-127077) 2024-11-21 11:08:38 -07:00
interpconfig.c gh-76785: Fix a Refleak in _interpreters.new_config() (gh-117491) 2024-04-03 01:10:26 +00:00
intrinsics.c gh-74929: Implement PEP 667 (GH-115153) 2024-05-04 12:12:10 +01:00
jit.c GH-126195: Use M1 JIT memory protection APIs (GH-126196) 2024-11-11 17:20:10 -08:00
legacy_tracing.c gh-125604: Move _Py_AuditHookEntry, etc. Out of pycore_runtime.h (gh-125605) 2024-10-18 09:26:08 -06:00
lock.c gh-125139: use _PyRecursiveMutex in _thread.RLock (#125144) 2024-10-14 14:06:31 +05:30
marshal.c gh-125063: marshal: Add version 5, improve documentation (GH-126829) 2024-11-15 13:48:57 +01:00
modsupport.c gh-121040: Use __attribute__((fallthrough)) (#121044) 2024-06-27 09:58:44 +00:00
mysnprintf.c
mystrtoul.c
object_stack.c gh-100240: Use a consistent implementation for freelists (#121934) 2024-07-22 12:08:27 -04:00
opcode_targets.h GH-125837: Split LOAD_CONST into three. (GH-125972) 2024-10-29 11:15:42 +00:00
optimizer.c gh-115999: Specialize LOAD_GLOBAL in free-threaded builds (#126607) 2024-11-21 11:22:21 -08:00
optimizer_analysis.c gh-120619: Strength reduce function guards, support 2-operand uop forms (GH-124846) 2024-11-09 11:35:33 +08:00
optimizer_bytecodes.c gh-120619: Strength reduce function guards, support 2-operand uop forms (GH-124846) 2024-11-09 11:35:33 +08:00
optimizer_cases.c.h gh-120619: Strength reduce function guards, support 2-operand uop forms (GH-124846) 2024-11-09 11:35:33 +08:00
optimizer_symbols.c gh-120642: Move private PyCode APIs to the internal C API (#120643) 2024-06-26 13:54:03 +02: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-117987: Restore several functions removed in Python 3.13 alpha 1 (GH-117993) 2024-04-18 15:20:38 +02:00
perf_jit_trampoline.c GH-118844: Fix build failures when combining --disable-gil with --enable-experimental-jit (GH-118935) 2024-05-11 16:19:31 -07:00
perf_trampoline.c gh-118518: Allow perf to work without frame pointers (#112254) 2024-05-05 03:07:29 +02:00
preconfig.c
pyarena.c Chore: Fix typo in pyarena.c (#126527) 2024-11-07 16:37:41 +01:00
pyctype.c
pyfpe.c
pyhash.c gh-122854: Add Py_HashBuffer() function (#122855) 2024-08-30 15:42:27 +00:00
pylifecycle.c gh-126255: Ignore warning about JIT being deactivated when perf support is active in test_embed.InitConfigTests.test_initconfig_api (#126302) 2024-11-01 23:10:58 +00:00
pymath.c
pystate.c gh-114940: Add _Py_FOR_EACH_TSTATE_UNLOCKED(), and Friends (gh-127077) 2024-11-21 11:08:38 -07:00
pystrcmp.c
pystrhex.c
pystrtod.c gh-120026: soft deprecate Py_HUGE_VAL macro (#120027) 2024-11-01 22:04:31 +00:00
Python-ast.c gh-126105: Fix crash in ast module, when ._fields is deleted (#126115) 2024-10-29 17:42:48 +02:00
Python-tokenize.c gh-115754: Use Py_GetConstant(Py_CONSTANT_EMPTY_STR) (#125194) 2024-10-09 17:15:23 +02:00
pythonrun.c gh-125842: Fix sys.exit(0xffff_ffff) on Windows (#125896) 2024-10-24 12:03:50 -04:00
pytime.c gh-111513: Improve datetime.fromtimestamp's error message (#124249) 2024-09-20 14:42:43 +02:00
qsbr.c Fix typos in comments (#120481) 2024-06-19 23:16:14 -04:00
README
specialize.c gh-115999: Add free-threaded specialization for UNPACK_SEQUENCE (#126600) 2024-11-22 19:00:35 +02:00
stdlib_module_names.h gh-123892: Add "_wmi" to sys.stdlib_module_names (#123893) 2024-09-10 09:54:17 +00:00
structmember.c gh-117657: Fix __slots__ thread safety in free-threaded build (#119368) 2024-06-17 18:44:54 +00:00
suggestions.c Fixes loop variables to be the same types as their limit (GH-120958) 2024-06-24 17:11:47 +01:00
symtable.c gh-126072: Set docstring attribute for module and class (#126231) 2024-11-08 15:13:18 +00:00
sysmodule.c gh-126579: Adapt sys.audit() to Argument Clinic (GH-126580) 2024-11-08 13:11:44 +00:00
thread.c gh-110850: Cleanup PyTime API: PyTime_t are nanoseconds (#115753) 2024-02-21 11:46:00 +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-117764: Fix and add signatures for many builtins (GH-117769) 2024-04-12 13:56:41 +03:00
tracemalloc.c gh-123923: Defer refcounting for f_executable in _PyInterpreterFrame (#123924) 2024-09-12 12:37:06 -04:00
uniqueid.c gh-124218: Use per-thread reference counting for globals and builtins (#125713) 2024-10-21 12:51:29 -04:00
vm-state.md Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00

Miscellaneous source files for the main Python shared library