Victor Stinner
c336f1c312
Revert "gh-124715: Fix method_dealloc(): use PyObject_GC_UnTrack() ( #133199 )" ( #133434 )
...
This reverts commit 662dd29456 .
The root issue was fixed by the
commit f554237b8e .
2025-05-05 17:04:43 +02:00
Mark Shannon
f554237b8e
GH-133261: Make sure that the GC doesn't untrack objects in trashcan (GH-133431)
2025-05-05 13:44:50 +01:00
Ivan Kirpichnikov
a36367520e
gh-132457: make staticmethod and classmethod generic ( #132460 )
...
Co-authored-by: sobolevn <mail@sobolevn.me>
2025-05-04 19:26:38 +03:00
Sergey B Kirpichev
f16f06f336
gh-133304: workaround for RISC-V in PyFloat_Pack4/Unpack4() ( #133328 )
2025-05-03 17:07:52 +02:00
Petr Viktorin
987e45e632
gh-128972: Add _Py_ALIGN_AS and revert PyASCIIObject memory layout. (GH-133085)
...
Add `_Py_ALIGN_AS` as per C API WG vote: https://github.com/capi-workgroup/decisions/issues/61
This patch only adds it to free-threaded builds; the `#ifdef Py_GIL_DISABLED`
can be removed in the future.
Use this to revert `PyASCIIObject` memory layout for non-free-threaded builds.
The long-term plan is to deprecate the entire struct; until that happens
it's better to keep it unchanged, as courtesy to people that rely on it despite
it not being stable ABI.
2025-05-02 18:30:40 +02:00
Sam Gross
f2379535fe
gh-133164: Add PyUnstable_Object_IsUniqueReferencedTemporary C API (gh-133170)
...
After gh-130704, the interpreter replaces some uses of `LOAD_FAST` with
`LOAD_FAST_BORROW` which avoid incref/decrefs by "borrowing" references
on the interpreter stack when the bytecode compiler can determine that
it's safe.
This change broke some checks in C API extensions that relied on
`Py_REFCNT()` of `1` to determine if it's safe to modify an object
in-place. Objects may have a reference count of one, but still be
referenced further up the interpreter stack due to borrowing of
references.
This provides a replacement function for those checks.
`PyUnstable_Object_IsUniqueReferencedTemporary` is more conservative:
it checks that the object has a reference count of one and that it exists as a
unique strong reference in the interpreter's stack of temporary
variables in the top most frame.
See also:
* https://github.com/numpy/numpy/issues/28681
Co-authored-by: Pieter Eendebak <pieter.eendebak@gmail.com>
Co-authored-by: T. Wouters <thomas@python.org>
Co-authored-by: mpage <mpage@cs.stanford.edu>
Co-authored-by: Mark Shannon <mark@hotpy.org>
Co-authored-by: Victor Stinner <vstinner@python.org>
2025-05-02 13:24:57 +00:00
Sergey B Kirpichev
ad2f0884b1
gh-130317: Fix test_pack_unpack_roundtrip() and add docs ( #133204 )
...
* Skip sNaN's testing in 32-bit mode.
* Drop float_set_snan() helper.
* Use memcpy() workaround for sNaN's in PyFloat_Unpack4().
* Document, that sNaN's may not be preserved by PyFloat_Pack/Unpack API.
2025-05-01 16:20:36 +02:00
neonene
fa52f289a3
gh-133166: Fix missing error emission of PyType_GetModuleByDef (GH-133240)
2025-05-01 14:32:57 +02:00
Victor Stinner
662dd29456
gh-124715: Fix method_dealloc(): use PyObject_GC_UnTrack() ( #133199 )
...
Replace _PyObject_GC_UNTRACK() with PyObject_GC_UnTrack() to not fail
if the method was already untracked.
2025-05-01 13:42:42 +02:00
Irit Katriel
5529213d4e
gh-100239: specialize BINARY_OP/SUBSCR for list-slice ( #132626 )
2025-05-01 10:28:52 +00:00
Eric Snow
811edcf9cd
Revert "gh-132775: Add _PyCode_GetVarCounts() (gh-133128)" (gh-133232)
...
The change broke the s390 builds, so I'm reverting it while I investigate.
This reverts commit 94b4fcd806 .
2025-05-01 02:35:20 +00:00
Mae Hood
0119791326
dict: Remove redundant incref of immortal object Py_EMPTY_KEYS (GH-133200)
2025-05-01 08:39:26 +09:00
Eric Snow
94b4fcd806
gh-132775: Add _PyCode_GetVarCounts() (gh-133128)
...
This helper is useful in a variety of ways, including in demonstrating how the different counts relate to one another.
It will be used in a later change to help identify if a function is "stateless", meaning it doesn't have any free vars or globals.
Note that a majority of this change is tests.
2025-04-30 18:19:20 +00:00
Mark Shannon
44e4c479fb
GH-124715: Move trashcan mechanism into Py_Dealloc (GH-132280)
2025-04-30 11:37:53 +01:00
Lysandros Nikolaou
60202609a2
gh-132661: Implement PEP 750 ( #132662 )
...
Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Wingy <git@wingysam.xyz>
Co-authored-by: Koudai Aono <koxudaxi@gmail.com>
Co-authored-by: Dave Peck <davepeck@gmail.com>
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Co-authored-by: Paul Everitt <pauleveritt@me.com>
Co-authored-by: sobolevn <mail@sobolevn.me>
2025-04-30 11:46:41 +02:00
Shantanu
7e8b153fef
gh-116436: Improve error message when TypeError occurs during dict update ( #116443 )
2025-04-29 22:18:06 -07:00
Mark Shannon
ccf1b0b1c1
GH-132508: Use tagged integers on the evaluation stack for the last instruction offset (GH-132545)
2025-04-29 18:00:35 +01:00
Victor Stinner
02cd6d7097
gh-130317: Fix strict aliasing in PyFloat_Pack8() ( #133150 )
...
* Fix strict aliasing in PyFloat_Pack8() and PyFloat_Pack4().
* Fix _testcapi.float_set_snan() on x86 (32-bit).
2025-04-29 14:27:50 +00:00
Neil Schemenauer
eecafc3380
Revert gh-127266: avoid data races when updating type slots (gh-131174) (gh-133129)
...
This is triggering deadlocks in test_opcache. See GH-133130 for stack trace.
2025-04-28 23:38:29 -07:00
Eric Snow
96a7fb93a8
gh-132775: Add _PyCode_ReturnsOnlyNone() (gh-132981)
...
The function indicates whether or not the function has a return statement.
This is used by a later change related treating some functions like scripts.
2025-04-28 20:12:52 -06:00
Donghee Na
75cbb8d89e
gh-132070: Use _PyObject_IsUniquelyReferenced in unicodeobject (gh-133039)
...
---------
Co-authored-by: Kumar Aditya <kumaraditya@python.org>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-04-29 09:48:53 +09:00
Neil Schemenauer
e414a2d81c
gh-127266: avoid data races when updating type slots (gh-131174)
...
In the free-threaded build, avoid data races caused by updating type slots
or type flags after the type was initially created. For those (typically
rare) cases, use the stop-the-world mechanism. Remove the use of atomics
when reading or writing type flags. The use of atomics is not sufficient to
avoid races (since flags are sometimes read without a lock and without
atomics) and are no longer required.
2025-04-28 20:28:44 +00:00
Neil Schemenauer
31d1342de9
gh-132942: Fix races in type lookup cache (gh-133032)
...
Two races related to the type lookup cache, when used in the
free-threaded build. This caused test_opcache to sometimes fail (as
well as other hard to re-produce failures).
2025-04-28 11:52:08 -07:00
Eric Snow
c17238251f
gh-132775: Add _PyModule_GetFilenameObject() and _PyModule_GetFilenameUTF8() (gh-132979)
...
They are derived from the existing `PyModule_GetFilenameObject().
They are used by a later change related to pickle and handling __main__.
2025-04-28 12:41:32 -06:00
Bénédikt Tran
a99bfaa53c
gh-133073: avoid NULL + 0 arithmetic in list_extend_* functions ( #133074 )
2025-04-28 15:59:09 +02:00
Sergey B Kirpichev
6157135a8d
gh-130317: Fix PyFloat_Pack/Unpack[24] for NaN's with payload ( #130452 )
...
Co-authored-by: Victor Stinner <vstinner@python.org>
2025-04-28 15:23:26 +02:00
Jelle Zijlstra
922049b613
gh-130907: Treat all module-level annotations as conditional ( #131550 )
2025-04-28 06:10:28 -07:00
Serhiy Storchaka
6677c2c165
gh-132987: Support __index__() for unsigned integers in Argument Clinic (GH-133011)
2025-04-28 11:02:18 +03:00
Eric Snow
2a28b21a51
gh-132776: Revert Moving memoryview XIData Code to memoryobject.c (gh-132960)
...
This is a partial revert of gh-132821. It resolves the refleak introduced by that PR.
2025-04-25 16:43:50 +00:00
Stan Ulbrych
f6fb498c97
gh-132798: Schedule removal of PyUnicode_AsDecoded/Encoded functions for 3.15 ( #132799 )
...
Co-authored-by: Victor Stinner <vstinner@python.org>
2025-04-25 15:07:41 +02:00
Eric Snow
e54e828852
gh-132776: Cleanup for XIBufferViewType (gh-132821)
...
* add notes
* rename XIBufferViewObject to xibufferview
* move memoryview XIData code to memoryobject.c
2025-04-24 18:25:29 -06:00
Victor Stinner
926ff69f3f
gh-132825: Fix typo in dict_unhashable_type() name ( #132847 )
2025-04-23 18:54:13 +02:00
Victor Stinner
426449d983
gh-132825: Enhance unhashable error messages for dict and set ( #132828 )
2025-04-23 17:10:09 +02:00
Victor Stinner
dc3e9638c2
gh-132713: Fix typing.Union[index] race condition ( #132802 )
...
Add union_init_parameters() helper function. Use a critical section
to initialize the 'parameters' member.
2025-04-23 15:45:42 +02:00
Victor Stinner
de9deb7ca7
gh-132713: Simplify list_repr_impl() ( #132811 )
2025-04-23 08:59:30 +02:00
Victor Stinner
a4ea80d523
gh-132713: Fix repr(list) race condition ( #132801 )
...
Hold a strong reference to the item while calling repr(item).
2025-04-22 22:09:35 +02:00
Pablo Galindo Salgado
bf3a0a1c0f
gh-132449: Improve syntax error messages for keywords with typos ( #132450 )
...
Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2025-04-22 11:01:55 +02:00
Peter Bierma
fa70bf8593
gh-132747: Fix NULL dereference when calling a method's __get__ manually ( #132772 )
2025-04-21 14:09:34 -07:00
Sam Gross
da53660f35
gh-131586: Avoid refcount contention in context managers (gh-131851)
...
This avoid reference count contention in the free threading build
when calling special methods like `__enter__` and `__exit__`.
2025-04-21 15:54:25 -04:00
Sergey B Kirpichev
95800fe6e7
Correct _PyLong_Frexp() description in comments (GH-132716)
...
This amends d08c788822 , now this function always successful.
2025-04-19 07:42:20 +00:00
Kumar Aditya
4c3d187d9f
gh-126366: fix thread safety of dict key iterator ( #132693 )
2025-04-18 21:43:49 +05:30
Pieter Eendebak
e77d6784e7
gh-132657: Avoid locking in frozenset.__contains__ ( #132659 )
2025-04-18 20:20:29 +05:30
Bénédikt Tran
379352620c
gh-132097: use a macro for semantically casting function pointers ( #132406 )
2025-04-18 12:24:34 +02:00
Chris Eibl
80295a8f9b
GH-131296: fix clang-cl warning on Windows in Objects/longobject.c for 32bit builds ( #131604 )
2025-04-18 10:45:30 +02:00
Jon Crall
fc0ec29889
gh-103997: Automatically dedent the argument to "-c" ( #103998 )
...
Co-authored-by: sunmy2019 <59365878+sunmy2019@users.noreply.github.com>
Co-authored-by: Kirill Podoprigora <80244920+Eclips4@users.noreply.github.com>
Co-authored-by: Inada Naoki <songofacandy@gmail.com>
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-04-18 17:39:30 +09:00
Tomasz Pytel
a23ed8b379
gh-132284: Don't wrap base PyCFunction slots on class creation if not overridden ( #132329 )
2025-04-17 18:08:59 +01:00
Sergey Miryanov
e42bda9441
gh-132042: Do not lookup tp_dict each time to speedup class creation ( #132619 )
2025-04-17 12:04:42 +02:00
Serhiy Storchaka
62ff86fa55
gh-130104: Call __rpow__ in ternary pow() if necessary (GH-130251)
...
Previously it was only called in binary pow() and the binary
power operator.
2025-04-16 18:32:41 +03:00
sobolevn
b6c552f9e6
gh-132176: Fix crash on type() when tuple subclass passed as bases ( #132212 )
...
Co-authored-by: Victor Stinner <vstinner@python.org>
2025-04-15 14:13:51 +03:00
Bénédikt Tran
a81232c769
gh-132399: fix invalid function signatures on the free-threaded build ( #132400 )
2025-04-12 07:46:33 +00:00