mirror of
https://github.com/python/cpython.git
synced 2026-02-06 01:45:25 +00:00
Python 3.14.3
This commit is contained in:
parent
07d080a608
commit
323c59a5e3
124 changed files with 1433 additions and 277 deletions
|
|
@ -19,12 +19,12 @@
|
|||
/*--start constants--*/
|
||||
#define PY_MAJOR_VERSION 3
|
||||
#define PY_MINOR_VERSION 14
|
||||
#define PY_MICRO_VERSION 2
|
||||
#define PY_MICRO_VERSION 3
|
||||
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL
|
||||
#define PY_RELEASE_SERIAL 0
|
||||
|
||||
/* Version as a string */
|
||||
#define PY_VERSION "3.14.2+"
|
||||
#define PY_VERSION "3.14.3"
|
||||
/*--end constants--*/
|
||||
|
||||
|
||||
|
|
|
|||
3
Lib/pydoc_data/module_docs.py
generated
3
Lib/pydoc_data/module_docs.py
generated
|
|
@ -1,4 +1,4 @@
|
|||
# Autogenerated by Sphinx on Sun Oct 12 12:02:22 2025
|
||||
# Autogenerated by Sphinx on Tue Feb 3 17:32:13 2026
|
||||
# as part of the release process.
|
||||
|
||||
module_docs = {
|
||||
|
|
@ -183,7 +183,6 @@ module_docs = {
|
|||
'posix': 'posix#module-posix',
|
||||
'pprint': 'pprint#module-pprint',
|
||||
'profile': 'profile#module-profile',
|
||||
'profiling.sampling': 'profile#module-profiling.sampling',
|
||||
'pstats': 'profile#module-pstats',
|
||||
'pty': 'pty#module-pty',
|
||||
'pwd': 'pwd#module-pwd',
|
||||
|
|
|
|||
213
Lib/pydoc_data/topics.py
generated
213
Lib/pydoc_data/topics.py
generated
|
|
@ -1,4 +1,4 @@
|
|||
# Autogenerated by Sphinx on Fri Dec 5 18:49:09 2025
|
||||
# Autogenerated by Sphinx on Tue Feb 3 17:32:13 2026
|
||||
# as part of the release process.
|
||||
|
||||
topics = {
|
||||
|
|
@ -2000,7 +2000,7 @@ ensures that the type of the target "e" is consistently
|
|||
... except* BlockingIOError as e:
|
||||
... print(repr(e))
|
||||
...
|
||||
ExceptionGroup('', (BlockingIOError()))
|
||||
ExceptionGroup('', (BlockingIOError(),))
|
||||
|
||||
"break", "continue" and "return" cannot appear in an "except*" clause.
|
||||
|
||||
|
|
@ -5796,7 +5796,9 @@ The available presentation types for "float" and "Decimal" values are:
|
|||
| | With no precision given, uses a precision of "6" digits |
|
||||
| | after the decimal point for "float", and shows all |
|
||||
| | coefficient digits for "Decimal". If "p=0", the decimal |
|
||||
| | point is omitted unless the "#" option is used. |
|
||||
| | point is omitted unless the "#" option is used. For |
|
||||
| | "float", the exponent always contains at least two digits, |
|
||||
| | and is zero if the value is zero. |
|
||||
+-----------+------------------------------------------------------------+
|
||||
| "'E'" | Scientific notation. Same as "'e'" except it uses an upper |
|
||||
| | case ‘E’ as the separator character. |
|
||||
|
|
@ -9830,7 +9832,12 @@ str.casefold()
|
|||
it is intended to remove all case distinctions in a string. For
|
||||
example, the German lowercase letter "'ß'" is equivalent to ""ss"".
|
||||
Since it is already lowercase, "lower()" would do nothing to "'ß'";
|
||||
"casefold()" converts it to ""ss"".
|
||||
"casefold()" converts it to ""ss"". For example:
|
||||
|
||||
>>> 'straße'.lower()
|
||||
'straße'
|
||||
>>> 'straße'.casefold()
|
||||
'strasse'
|
||||
|
||||
The casefolding algorithm is described in section 3.13 ‘Default
|
||||
Case Folding’ of the Unicode Standard.
|
||||
|
|
@ -10019,7 +10026,18 @@ str.format_map(mapping, /)
|
|||
str.index(sub[, start[, end]])
|
||||
|
||||
Like "find()", but raise "ValueError" when the substring is not
|
||||
found.
|
||||
found. For example:
|
||||
|
||||
>>> 'spam, spam, spam'.index('spam')
|
||||
0
|
||||
>>> 'spam, spam, spam'.index('eggs')
|
||||
Traceback (most recent call last):
|
||||
File "<python-input-0>", line 1, in <module>
|
||||
'spam, spam, spam'.index('eggs')
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
|
||||
ValueError: substring not found
|
||||
|
||||
See also "rindex()".
|
||||
|
||||
str.isalnum()
|
||||
|
||||
|
|
@ -10118,7 +10136,19 @@ str.isnumeric()
|
|||
that have the Unicode numeric value property, e.g. U+2155, VULGAR
|
||||
FRACTION ONE FIFTH. Formally, numeric characters are those with
|
||||
the property value Numeric_Type=Digit, Numeric_Type=Decimal or
|
||||
Numeric_Type=Numeric.
|
||||
Numeric_Type=Numeric. For example:
|
||||
|
||||
>>> '0123456789'.isnumeric()
|
||||
True
|
||||
>>> '٠١٢٣٤٥٦٧٨٩'.isnumeric() # Arabic-indic digit zero to nine
|
||||
True
|
||||
>>> '⅕'.isnumeric() # Vulgar fraction one fifth
|
||||
True
|
||||
>>> '²'.isdecimal(), '²'.isdigit(), '²'.isnumeric()
|
||||
(False, True, True)
|
||||
|
||||
See also "isdecimal()" and "isdigit()". Numeric characters are a
|
||||
superset of decimal numbers.
|
||||
|
||||
str.isprintable()
|
||||
|
||||
|
|
@ -10136,6 +10166,13 @@ str.isprintable()
|
|||
plus the ASCII space 0x20. Nonprintable characters are those in
|
||||
group Separator or Other (Z or C), except the ASCII space.
|
||||
|
||||
For example:
|
||||
|
||||
>>> ''.isprintable(), ' '.isprintable()
|
||||
(True, True)
|
||||
>>> '\t'.isprintable(), '\n'.isprintable()
|
||||
(False, False)
|
||||
|
||||
str.isspace()
|
||||
|
||||
Return "True" if there are only whitespace characters in the string
|
||||
|
|
@ -10201,10 +10238,24 @@ str.ljust(width, fillchar=' ', /)
|
|||
space). The original string is returned if *width* is less than or
|
||||
equal to "len(s)".
|
||||
|
||||
For example:
|
||||
|
||||
>>> 'Python'.ljust(10)
|
||||
'Python '
|
||||
>>> 'Python'.ljust(10, '.')
|
||||
'Python....'
|
||||
>>> 'Monty Python'.ljust(10, '.')
|
||||
'Monty Python'
|
||||
|
||||
See also "rjust()".
|
||||
|
||||
str.lower()
|
||||
|
||||
Return a copy of the string with all the cased characters [4]
|
||||
converted to lowercase.
|
||||
converted to lowercase. For example:
|
||||
|
||||
>>> 'Lower Method Example'.lower()
|
||||
'lower method example'
|
||||
|
||||
The lowercasing algorithm used is described in section 3.13
|
||||
‘Default Case Folding’ of the Unicode Standard.
|
||||
|
|
@ -10268,6 +10319,8 @@ str.removeprefix(prefix, /)
|
|||
|
||||
Added in version 3.9.
|
||||
|
||||
See also "removesuffix()" and "startswith()".
|
||||
|
||||
str.removesuffix(suffix, /)
|
||||
|
||||
If the string ends with the *suffix* string and that *suffix* is
|
||||
|
|
@ -10281,12 +10334,19 @@ str.removesuffix(suffix, /)
|
|||
|
||||
Added in version 3.9.
|
||||
|
||||
See also "removeprefix()" and "endswith()".
|
||||
|
||||
str.replace(old, new, /, count=-1)
|
||||
|
||||
Return a copy of the string with all occurrences of substring *old*
|
||||
replaced by *new*. If *count* is given, only the first *count*
|
||||
occurrences are replaced. If *count* is not specified or "-1", then
|
||||
all occurrences are replaced.
|
||||
all occurrences are replaced. For example:
|
||||
|
||||
>>> 'spam, spam, spam'.replace('spam', 'eggs')
|
||||
'eggs, eggs, eggs'
|
||||
>>> 'spam, spam, spam'.replace('spam', 'eggs', 1)
|
||||
'eggs, spam, spam'
|
||||
|
||||
Changed in version 3.13: *count* is now supported as a keyword
|
||||
argument.
|
||||
|
|
@ -10296,12 +10356,30 @@ str.rfind(sub[, start[, end]])
|
|||
Return the highest index in the string where substring *sub* is
|
||||
found, such that *sub* is contained within "s[start:end]".
|
||||
Optional arguments *start* and *end* are interpreted as in slice
|
||||
notation. Return "-1" on failure.
|
||||
notation. Return "-1" on failure. For example:
|
||||
|
||||
>>> 'spam, spam, spam'.rfind('sp')
|
||||
12
|
||||
>>> 'spam, spam, spam'.rfind('sp', 0, 10)
|
||||
6
|
||||
|
||||
See also "find()" and "rindex()".
|
||||
|
||||
str.rindex(sub[, start[, end]])
|
||||
|
||||
Like "rfind()" but raises "ValueError" when the substring *sub* is
|
||||
not found.
|
||||
not found. For example:
|
||||
|
||||
>>> 'spam, spam, spam'.rindex('spam')
|
||||
12
|
||||
>>> 'spam, spam, spam'.rindex('eggs')
|
||||
Traceback (most recent call last):
|
||||
File "<stdin-0>", line 1, in <module>
|
||||
'spam, spam, spam'.rindex('eggs')
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
|
||||
ValueError: substring not found
|
||||
|
||||
See also "index()" and "find()".
|
||||
|
||||
str.rjust(width, fillchar=' ', /)
|
||||
|
||||
|
|
@ -10318,6 +10396,17 @@ str.rpartition(sep, /)
|
|||
found, return a 3-tuple containing two empty strings, followed by
|
||||
the string itself.
|
||||
|
||||
For example:
|
||||
|
||||
>>> 'Monty Python'.rpartition(' ')
|
||||
('Monty', ' ', 'Python')
|
||||
>>> "Monty Python's Flying Circus".rpartition(' ')
|
||||
("Monty Python's Flying", ' ', 'Circus')
|
||||
>>> 'Monty Python'.rpartition('-')
|
||||
('', '', 'Monty Python')
|
||||
|
||||
See also "partition()".
|
||||
|
||||
str.rsplit(sep=None, maxsplit=-1)
|
||||
|
||||
Return a list of the words in the string, using *sep* as the
|
||||
|
|
@ -11088,7 +11177,7 @@ Whitespace is significant in these situations:
|
|||
|
||||
* In "fstring_replacement_field", if "f_debug_specifier" is present,
|
||||
all whitespace after the opening brace until the
|
||||
"f_debug_specifier", as well as whitespace immediatelly following
|
||||
"f_debug_specifier", as well as whitespace immediately following
|
||||
"f_debug_specifier", is retained as part of the expression.
|
||||
|
||||
**CPython implementation detail:** The expression is not handled in
|
||||
|
|
@ -11211,8 +11300,11 @@ Any object can be tested for truth value, for use in an "if" or
|
|||
|
||||
By default, an object is considered true unless its class defines
|
||||
either a "__bool__()" method that returns "False" or a "__len__()"
|
||||
method that returns zero, when called with the object. [1] Here are
|
||||
most of the built-in objects considered false:
|
||||
method that returns zero, when called with the object. [1] If one of
|
||||
the methods raises an exception when called, the exception is
|
||||
propagated and the object does not have a truth value (for example,
|
||||
"NotImplemented"). Here are most of the built-in objects considered
|
||||
false:
|
||||
|
||||
* constants defined to be false: "None" and "False"
|
||||
|
||||
|
|
@ -11393,7 +11485,7 @@ ensures that the type of the target "e" is consistently
|
|||
... except* BlockingIOError as e:
|
||||
... print(repr(e))
|
||||
...
|
||||
ExceptionGroup('', (BlockingIOError()))
|
||||
ExceptionGroup('', (BlockingIOError(),))
|
||||
|
||||
"break", "continue" and "return" cannot appear in an "except*" clause.
|
||||
|
||||
|
|
@ -11777,6 +11869,10 @@ Special read-only attributes
|
|||
+----------------------------------------------------+----------------------------------------------------+
|
||||
| Attribute | Meaning |
|
||||
|====================================================|====================================================|
|
||||
| function.__builtins__ | A reference to the "dictionary" that holds the |
|
||||
| | function’s builtins namespace. Added in version |
|
||||
| | 3.10. |
|
||||
+----------------------------------------------------+----------------------------------------------------+
|
||||
| function.__globals__ | A reference to the "dictionary" that holds the |
|
||||
| | function’s global variables – the global namespace |
|
||||
| | of the module in which the function was defined. |
|
||||
|
|
@ -12871,10 +12967,6 @@ class dict(iterable, /, **kwargs)
|
|||
the keyword argument replaces the value from the positional
|
||||
argument.
|
||||
|
||||
Providing keyword arguments as in the first example only works for
|
||||
keys that are valid Python identifiers. Otherwise, any valid keys
|
||||
can be used.
|
||||
|
||||
Dictionaries compare equal if and only if they have the same "(key,
|
||||
value)" pairs (regardless of ordering). Order comparisons (‘<’,
|
||||
‘<=’, ‘>=’, ‘>’) raise "TypeError". To illustrate dictionary
|
||||
|
|
@ -13387,10 +13479,17 @@ Notes:
|
|||
note that "-0" is still "0".
|
||||
|
||||
4. The slice of *s* from *i* to *j* is defined as the sequence of
|
||||
items with index *k* such that "i <= k < j". If *i* or *j* is
|
||||
greater than "len(s)", use "len(s)". If *i* is omitted or "None",
|
||||
use "0". If *j* is omitted or "None", use "len(s)". If *i* is
|
||||
greater than or equal to *j*, the slice is empty.
|
||||
items with index *k* such that "i <= k < j".
|
||||
|
||||
* If *i* is omitted or "None", use "0".
|
||||
|
||||
* If *j* is omitted or "None", use "len(s)".
|
||||
|
||||
* If *i* or *j* is less than "-len(s)", use "0".
|
||||
|
||||
* If *i* or *j* is greater than "len(s)", use "len(s)".
|
||||
|
||||
* If *i* is greater than or equal to *j*, the slice is empty.
|
||||
|
||||
5. The slice of *s* from *i* to *j* with step *k* is defined as the
|
||||
sequence of items with index "x = i + n*k" such that "0 <= n <
|
||||
|
|
@ -13655,6 +13754,76 @@ class list(iterable=(), /)
|
|||
empty for the duration, and raises "ValueError" if it can detect
|
||||
that the list has been mutated during a sort.
|
||||
|
||||
Thread safety: Reading a single element from a "list" is *atomic*:
|
||||
|
||||
lst[i] # list.__getitem__
|
||||
|
||||
The following methods traverse the list and use *atomic* reads of each
|
||||
item to perform their function. That means that they may return
|
||||
results affected by concurrent modifications:
|
||||
|
||||
item in lst
|
||||
lst.index(item)
|
||||
lst.count(item)
|
||||
|
||||
All of the above methods/operations are also lock-free. They do not
|
||||
block concurrent modifications. Other operations that hold a lock will
|
||||
not block these from observing intermediate states.All other
|
||||
operations from here on block using the per-object lock.Writing a
|
||||
single item via "lst[i] = x" is safe to call from multiple threads and
|
||||
will not corrupt the list.The following operations return new objects
|
||||
and appear *atomic* to other threads:
|
||||
|
||||
lst1 + lst2 # concatenates two lists into a new list
|
||||
x * lst # repeats lst x times into a new list
|
||||
lst.copy() # returns a shallow copy of the list
|
||||
|
||||
Methods that only operate on a single elements with no shifting
|
||||
required are *atomic*:
|
||||
|
||||
lst.append(x) # append to the end of the list, no shifting required
|
||||
lst.pop() # pop element from the end of the list, no shifting required
|
||||
|
||||
The "clear()" method is also *atomic*. Other threads cannot observe
|
||||
elements being removed.The "sort()" method is not *atomic*. Other
|
||||
threads cannot observe intermediate states during sorting, but the
|
||||
list appears empty for the duration of the sort.The following
|
||||
operations may allow lock-free operations to observe intermediate
|
||||
states since they modify multiple elements in place:
|
||||
|
||||
lst.insert(idx, item) # shifts elements
|
||||
lst.pop(idx) # idx not at the end of the list, shifts elements
|
||||
lst *= x # copies elements in place
|
||||
|
||||
The "remove()" method may allow concurrent modifications since element
|
||||
comparison may execute arbitrary Python code (via
|
||||
"__eq__()")."extend()" is safe to call from multiple threads.
|
||||
However, its guarantees depend on the iterable passed to it. If it is
|
||||
a "list", a "tuple", a "set", a "frozenset", a "dict" or a dictionary
|
||||
view object (but not their subclasses), the "extend" operation is safe
|
||||
from concurrent modifications to the iterable. Otherwise, an iterator
|
||||
is created which can be concurrently modified by another thread. The
|
||||
same applies to inplace concatenation of a list with other iterables
|
||||
when using "lst += iterable".Similarly, assigning to a list slice with
|
||||
"lst[i:j] = iterable" is safe to call from multiple threads, but
|
||||
"iterable" is only locked when it is also a "list" (but not its
|
||||
subclasses).Operations that involve multiple accesses, as well as
|
||||
iteration, are never atomic. For example:
|
||||
|
||||
# NOT atomic: read-modify-write
|
||||
lst[i] = lst[i] + 1
|
||||
|
||||
# NOT atomic: check-then-act
|
||||
if lst:
|
||||
item = lst.pop()
|
||||
|
||||
# NOT thread-safe: iteration while modifying
|
||||
for item in lst:
|
||||
process(item) # another thread may modify lst
|
||||
|
||||
Consider external synchronization when sharing "list" instances across
|
||||
threads. See Python support for free threading for more information.
|
||||
|
||||
|
||||
Tuples
|
||||
======
|
||||
|
|
|
|||
1238
Misc/NEWS.d/3.14.3.rst
Normal file
1238
Misc/NEWS.d/3.14.3.rst
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1 +0,0 @@
|
|||
Ensure reproducible builds by making JIT stencil header generation deterministic.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
When running ``make clean-retain-profile``, keep the
|
||||
generated JIT stencils. That way, the stencils are not generated twice when
|
||||
Profile-guided optimization (PGO) is used. It also allows distributors to
|
||||
supply their own pre-built JIT stencils.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
When calculating the digest of the JIT stencils input, sort the hashed files
|
||||
by filenames before adding their content to the hasher. This ensures
|
||||
deterministic hash input and hence deterministic hash, independent on
|
||||
filesystem order.
|
||||
|
|
@ -1 +0,0 @@
|
|||
:c:func:`!PyUnstable_CopyPerfMapFile` now checks that opening the file succeeded before flushing.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix :c:func:`PyUnstable_Object_IsUniqueReferencedTemporary()` handling of
|
||||
tagged ints on the interpreter stack.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix a bug during JIT compilation failure which caused garbage collection debug assertions to fail.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Adjusted the built-in :func:`help` function so that empty inputs are ignored in
|
||||
interactive mode.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix edge-cases around already imported modules in the :term:`REPL`
|
||||
auto-completion of imports.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix reference cycle in exhausted generator frames. Patch by Savannah Ostrowski.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix SIGILL crash on m68k due to incorrect assembly constraint.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix crash in the free threading build when clearing frames that hold tagged
|
||||
integers.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix reference counting when adjacent literal parts are merged while constructing
|
||||
:class:`string.templatelib.Template`, preventing the displaced string object
|
||||
from leaking.
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
Fix a free-threaded GC performance regression. If there are many untracked
|
||||
tuples, the GC will run too often, resulting in poor performance. The fix
|
||||
is to include untracked tuples in the "long lived" object count. The number
|
||||
of frozen objects is also now included since the free-threaded GC must
|
||||
scan those too.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix use-after-free in :class:`bytearray` search-like methods (:meth:`~bytearray.find`, :meth:`~bytearray.count`, :meth:`~bytearray.index`, :meth:`~bytearray.rindex`, and :meth:`~bytearray.rfind`) by marking the storage as exported which causes reallocation attempts to raise :exc:`BufferError`. For :func:`~operator.contains`, :meth:`~bytearray.split`, and :meth:`~bytearray.rsplit` the :ref:`buffer protocol <bufferobjects>` is used for this.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix a crash in :func:`divmod` when :func:`!_pylong.int_divmod` does not
|
||||
return a tuple of length two exactly. Patch by Bénédikt Tran.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Tracebacks will be displayed in fallback mode even if :func:`io.open` is lost.
|
||||
Previously, this would crash the interpreter.
|
||||
Patch by Bartosz Sławecki.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Clear the frame of a generator when :meth:`generator.close` is called.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix a use-after-free crash in :class:`contextvars.Context` comparison when a
|
||||
custom ``__eq__`` method modifies the context via
|
||||
:meth:`~contextvars.ContextVar.set`.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix a file descriptor leak in import.c
|
||||
|
|
@ -1 +0,0 @@
|
|||
Avoid locking in :c:func:`PyTraceMalloc_Track` and :c:func:`PyTraceMalloc_Untrack` when :mod:`tracemalloc` is not enabled.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix a possible assertion error when comparing negative non-integer ``float``
|
||||
and ``int`` with the same number of bits in the integer part.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix an overflow of the shared empty buffer in :meth:`bytearray.extend` when
|
||||
``__length_hint__()`` returns 0 for non-empty iterator.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Set :data:`sys.flags.inspect` to ``1`` when :envvar:`PYTHONINSPECT` is ``0``.
|
||||
Previously, it was set to ``0`` in this case.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix crash after unfreezing all objects tracked by the garbage collector on
|
||||
the :term:`free threaded <free threading>` build.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix use-after-free crashes in :meth:`bytearray.hex` and :meth:`memoryview.hex`
|
||||
when the separator's :meth:`~object.__len__` mutates the original object.
|
||||
Patch by Bénédikt Tran.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix a use-after-free crash in :ref:`bytearray.__mod__ <bytes-formatting>` when
|
||||
the :class:`!bytearray` is mutated while formatting the ``%``-style arguments.
|
||||
Patch by Bénédikt Tran.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix a use-after-free crash in :meth:`memoryview.__hash__ <object.__hash__>`
|
||||
when the ``__hash__`` method of the referenced object mutates that object or
|
||||
the view. Patch by Bénédikt Tran.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
Fix use-after-free in perf trampoline when toggling profiling while
|
||||
threads are running or during interpreter finalization with daemon threads
|
||||
active. The fix uses reference counting to ensure trampolines are not freed
|
||||
while any code object could still reference them. Pach by Pablo Galindo
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix crash when inserting a non-:class:`str` key into a split table
|
||||
dictionary when the key matches an existing key in the split table
|
||||
but has no corresponding value in the dict.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The interactive help mode in the :term:`REPL` no longer incorrectly syntax
|
||||
highlights text input as Python code. Contributed by Olga Matoula.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix a crash in :func:`!_interpreters.capture_exception` when
|
||||
the exception is incorrectly formatted. Patch by Bénédikt Tran.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fixes a crash in ``ga_repr_items_list`` function.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix crash in :class:`set` when objects with the same hash are concurrently
|
||||
added to the set after removing an element with the same hash while the set
|
||||
still contains elements with the same hash.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Check if the result is ``NULL`` in ``BINARY_OP_EXTENT`` opcode.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix error handling in perf jitdump initialization on memory allocation failure.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Prevent a reference leak in module teardown at interpreter finalization.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Add documentation for :func:`enum.bin`.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Better explain the operation of Format / Format Paragraph.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Skip writing objects during marshalling once a failure has occurred.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix thread-safety issues in :mod:`linecache`.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Starting a process from spawn context in :mod:`multiprocessing` no longer
|
||||
sets the start method globally.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Add support for :const:`~configparser.UNNAMED_SECTION` when creating a
|
||||
section via the mapping protocol access
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Add parsing for ``References`` and ``In-Reply-To`` headers to the :mod:`email`
|
||||
library that parses the header content as lists of message id tokens. This
|
||||
prevents them from being folded incorrectly.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Improved :data:`license`/:data:`copyright`/:data:`credits` display in the
|
||||
:term:`REPL`: now uses a pager.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Some keystrokes can be swallowed in the new ``PyREPL`` on Windows,
|
||||
especially when used together with the ALT key. Fix by Chris Eibl.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
:mod:`pydoc`: Ensure that the link to the online documentation of a
|
||||
:term:`stdlib` module is correct.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix :meth:`asyncio.run_coroutine_threadsafe` leaving underlying cancelled
|
||||
asyncio task running.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix a bug in the :mod:`email.policy.default` folding algorithm which incorrectly resulted in a doubled newline when a line ending at exactly max_line_length was followed by an unfoldable token.
|
||||
|
|
@ -1 +0,0 @@
|
|||
``MisplacedEnvelopeHeaderDefect`` and ``Missing header name`` defects are now correctly passed to the ``handle_defect`` method of ``policy`` in :class:`~email.parser.FeedParser`.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Improve :mod:`argparse` performance by caching the formatter used for argument validation.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix :mod:`argparse` to preserve ``|`` separators in mutually exclusive groups when the usage line wraps due to length.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix :func:`winreg.QueryValueEx` to not accidentally read garbage buffer under race condition.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix usage formatting for positional arguments in mutually exclusive groups in :mod:`argparse`.
|
||||
in :mod:`argparse`.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Pdb can now run scripts from anonymous pipes used in process substitution.
|
||||
Patch by Bartosz Sławecki.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix usage formatting for mutually exclusive groups in :mod:`argparse`
|
||||
when they are preceded by positional arguments or followed or intermixed
|
||||
with other optional arguments.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The help text for required options in :mod:`argparse` no
|
||||
longer extended with " (default: None)".
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
The non-``compat32`` :mod:`email` policies now correctly handle refolding
|
||||
encoded words that contain bytes that can not be decoded in their specified
|
||||
character set. Previously this resulted in an encoding exception during
|
||||
folding.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Avoid reference count operations in garbage collection of :mod:`ctypes`
|
||||
objects.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix crash when a task gets re-registered during finalization in :mod:`asyncio`. Patch by Kumar Aditya.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Added type check during initialization of the :mod:`decimal` module to
|
||||
prevent a crash in case of broken stdlib. Patch by Sergey B Kirpichev.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
:mod:`unittest.mock`: fix a thread safety issue where :attr:`Mock.call_count
|
||||
<unittest.mock.Mock.call_count>` may return inaccurate values when the mock
|
||||
is called concurrently from multiple threads.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
:class:`collections.defaultdict` now prioritizes :meth:`~object.__setitem__`
|
||||
when inserting default values from ``default_factory``. This prevents race
|
||||
conditions where a default value would overwrite a value set before
|
||||
``default_factory`` returns.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
:mod:`hmac`: Ensure that the :attr:`HMAC.block_size <hmac.HMAC.block_size>`
|
||||
attribute is correctly copied by :meth:`HMAC.copy <hmac.HMAC.copy>`. Patch
|
||||
by Bénédikt Tran.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix crash in ``TextIOWrapper.close()`` when the underlying buffer's
|
||||
``closed`` property calls :meth:`~io.TextIOBase.detach`.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
:mod:`array`: fix a crash in ``a[i] = v`` when converting *i* to
|
||||
an index via :meth:`i.__index__ <object.__index__>` or :meth:`i.__float__
|
||||
<object.__float__>` mutates the array.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
The :mod:`asyncio` REPL now properly closes the loop upon the end of interactive session.
|
||||
Previously, it could cause surprising warnings.
|
||||
Contributed by Bartosz Sławecki.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
Add the *ownerDocument* attribute to :mod:`xml.dom.minidom` elements and attributes
|
||||
created by directly instantiating the ``Element`` or ``Attr`` class. Note that
|
||||
this way of creating nodes is not supported; creator functions like
|
||||
:py:meth:`xml.dom.Document.documentElement` should be used instead.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix zoneinfo use-after-free with descriptor _weak_cache. a descriptor as _weak_cache could cause crashes during object creation. The fix ensures proper reference counting for descriptor-provided objects.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix possible use-after-free in :func:`atexit.unregister` when the callback
|
||||
is unregistered during comparison.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix concurrent and reentrant call of :func:`atexit.unregister`.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fixed a bug in :mod:`mailbox` where the precise timing of an external event could result in the library opening an existing file instead of a file it expected to create.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fixed socket operations such as recvfrom() and sendto() for FreeBSD
|
||||
divert(4) socket.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
The :mod:`asyncio` REPL now respects the :option:`-I` flag (isolated mode).
|
||||
Previously, it would load and execute :envvar:`PYTHONSTARTUP` even if the
|
||||
flag was set. Contributed by Bartosz Sławecki.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
The :mod:`asyncio` REPL no longer prints copyright and version messages in
|
||||
the quiet mode (:option:`-q`). Patch by Bartosz Sławecki.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix a potential use-after-free in :meth:`collections.Counter.update` when user code
|
||||
mutates the Counter during an update.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Corrected the error message in :func:`readline.append_history_file` to state that ``nelements`` must be non-negative instead of positive.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fixed a possible reference leak in ctypes when constructing results with multiple output parameters on error.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix the ctypes bitfield overflow error message to report the correct offset and size calculation.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Updated timeout evaluation logic in :mod:`subprocess` to be compatible with deterministic environments like Shadow where time moves exactly as requested.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
:mod:`xml.etree.ElementTree`: fix use-after-free crashes in
|
||||
:meth:`~object.__getitem__` and :meth:`~object.__setitem__` methods of
|
||||
:class:`~xml.etree.ElementTree.Element` when the element is concurrently
|
||||
mutated. Patch by Bénédikt Tran.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
:mod:`sqlite3`: fix use-after-free crashes when the connection's callbacks
|
||||
are mutated during a callback execution. Patch by Bénédikt Tran.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
:mod:`zoneinfo`: fix infinite loop in :meth:`ZoneInfo.from_file
|
||||
<zoneinfo.ZoneInfo.from_file>` when parsing a malformed TZif file. Patch by Fatih Celik.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix possible buffer leaks in Windows overlapped I/O on error handling.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix support of named pipes in the rotating :mod:`logging` handlers.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
:mod:`pickle`: fix use-after-free crashes when a :class:`~pickle.PickleBuffer`
|
||||
is concurrently mutated by a custom buffer callback during pickling.
|
||||
Patch by Bénédikt Tran and Aaron Wieczorek.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix a crash in :func:`os.execve` on non-Windows platforms when
|
||||
given a custom environment mapping which is then mutated during
|
||||
parsing. Patch by Bénédikt Tran.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
:mod:`tkinter`: fix a crash when a Python :class:`list` is mutated during
|
||||
the conversion to a Tcl object (e.g., when setting a Tcl variable).
|
||||
Patch by Bénédikt Tran.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix incorrect wrapping of the Base64 data in :class:`!plistlib._PlistWriter`
|
||||
when the indent contains a mix of tabs and spaces.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Fix use-after-free crashes when a :class:`~io.BytesIO` object is concurrently mutated during :meth:`~io.RawIOBase.write` or :meth:`~io.IOBase.writelines`.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
:func:`annotationlib.get_annotations` no longer raises a :exc:`SyntaxError`
|
||||
when evaluating a stringified starred annotation that starts with one
|
||||
or more whitespace characters followed by a ``*``.
|
||||
Patch by Bartosz Sławecki.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix :func:`sys.unraisablehook` when the hook raises an exception and changes
|
||||
:func:`sys.unraisablehook`: hold a strong reference to the old hook. Patch
|
||||
by Victor Stinner.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Fix a inconsistency issue in :meth:`~io.RawIOBase.write` that leads to
|
||||
unexpected buffer overwrite by deduplicating the buffer exports.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
:func:`_thread.stack_size` now raises :exc:`ValueError` if the stack size is
|
||||
too small. Patch by Victor Stinner.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Fix crash when the internal encoder object returned by undocumented function
|
||||
:func:`!json.encoder.c_make_encoder` was called with non-zero second
|
||||
(*_current_indent_level*) argument.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Raise :exc:`RuntimeError`'s when user attempts to call methods on
|
||||
half-initialized :class:`~struct.Struct` objects, For example, created by
|
||||
``Struct.__new__(Struct)``. Patch by Sergey B Kirpichev.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
Forbid reentrant calls of the :class:`pickle.Pickler` and
|
||||
:class:`pickle.Unpickler` methods for the C implementation. Previously, this
|
||||
could cause crash or data corruption, now concurrent calls of methods of the
|
||||
same object raise :exc:`RuntimeError`.
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue