Python 3.14.3

This commit is contained in:
Hugo van Kemenade 2026-02-03 17:31:53 +02:00
parent 07d080a608
commit 323c59a5e3
124 changed files with 1433 additions and 277 deletions

View file

@ -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--*/

View file

@ -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
View file

@ -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 |
| | functions builtins namespace. Added in version |
| | 3.10. |
+----------------------------------------------------+----------------------------------------------------+
| function.__globals__ | A reference to the "dictionary" that holds the |
| | functions 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

File diff suppressed because it is too large Load diff

View file

@ -1 +0,0 @@
Ensure reproducible builds by making JIT stencil header generation deterministic.

View file

@ -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.

View file

@ -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.

View file

@ -1 +0,0 @@
:c:func:`!PyUnstable_CopyPerfMapFile` now checks that opening the file succeeded before flushing.

View file

@ -1,2 +0,0 @@
Fix :c:func:`PyUnstable_Object_IsUniqueReferencedTemporary()` handling of
tagged ints on the interpreter stack.

View file

@ -1 +0,0 @@
Fix a bug during JIT compilation failure which caused garbage collection debug assertions to fail.

View file

@ -1,2 +0,0 @@
Adjusted the built-in :func:`help` function so that empty inputs are ignored in
interactive mode.

View file

@ -1,2 +0,0 @@
Fix edge-cases around already imported modules in the :term:`REPL`
auto-completion of imports.

View file

@ -1 +0,0 @@
Fix reference cycle in exhausted generator frames. Patch by Savannah Ostrowski.

View file

@ -1 +0,0 @@
Fix SIGILL crash on m68k due to incorrect assembly constraint.

View file

@ -1,2 +0,0 @@
Fix crash in the free threading build when clearing frames that hold tagged
integers.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -1 +0,0 @@
Clear the frame of a generator when :meth:`generator.close` is called.

View file

@ -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`.

View file

@ -1 +0,0 @@
Fix a file descriptor leak in import.c

View file

@ -1 +0,0 @@
Avoid locking in :c:func:`PyTraceMalloc_Track` and :c:func:`PyTraceMalloc_Untrack` when :mod:`tracemalloc` is not enabled.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix crash after unfreezing all objects tracked by the garbage collector on
the :term:`free threaded <free threading>` build.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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

View file

@ -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.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix a crash in :func:`!_interpreters.capture_exception` when
the exception is incorrectly formatted. Patch by Bénédikt Tran.

View file

@ -1 +0,0 @@
Fixes a crash in ``ga_repr_items_list`` function.

View file

@ -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.

View file

@ -1 +0,0 @@
Check if the result is ``NULL`` in ``BINARY_OP_EXTENT`` opcode.

View file

@ -1 +0,0 @@
Fix error handling in perf jitdump initialization on memory allocation failure.

View file

@ -1 +0,0 @@
Prevent a reference leak in module teardown at interpreter finalization.

View file

@ -1 +0,0 @@
Add documentation for :func:`enum.bin`.

View file

@ -1 +0,0 @@
Better explain the operation of Format / Format Paragraph.

View file

@ -1 +0,0 @@
Skip writing objects during marshalling once a failure has occurred.

View file

@ -1 +0,0 @@
Fix thread-safety issues in :mod:`linecache`.

View file

@ -1,2 +0,0 @@
Starting a process from spawn context in :mod:`multiprocessing` no longer
sets the start method globally.

View file

@ -1,2 +0,0 @@
Add support for :const:`~configparser.UNNAMED_SECTION` when creating a
section via the mapping protocol access

View file

@ -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.

View file

@ -1,2 +0,0 @@
Improved :data:`license`/:data:`copyright`/:data:`credits` display in the
:term:`REPL`: now uses a pager.

View file

@ -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.

View file

@ -1,2 +0,0 @@
:mod:`pydoc`: Ensure that the link to the online documentation of a
:term:`stdlib` module is correct.

View file

@ -1,2 +0,0 @@
Fix :meth:`asyncio.run_coroutine_threadsafe` leaving underlying cancelled
asyncio task running.

View file

@ -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.

View file

@ -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`.

View file

@ -1 +0,0 @@
Improve :mod:`argparse` performance by caching the formatter used for argument validation.

View file

@ -1 +0,0 @@
Fix :mod:`argparse` to preserve ``|`` separators in mutually exclusive groups when the usage line wraps due to length.

View file

@ -1 +0,0 @@
Fix :func:`winreg.QueryValueEx` to not accidentally read garbage buffer under race condition.

View file

@ -1,2 +0,0 @@
Fix usage formatting for positional arguments in mutually exclusive groups in :mod:`argparse`.
in :mod:`argparse`.

View file

@ -1,2 +0,0 @@
Pdb can now run scripts from anonymous pipes used in process substitution.
Patch by Bartosz Sławecki.

View file

@ -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.

View file

@ -1,2 +0,0 @@
The help text for required options in :mod:`argparse` no
longer extended with " (default: None)".

View file

@ -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.

View file

@ -1,2 +0,0 @@
Avoid reference count operations in garbage collection of :mod:`ctypes`
objects.

View file

@ -1 +0,0 @@
Fix crash when a task gets re-registered during finalization in :mod:`asyncio`. Patch by Kumar Aditya.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix crash in ``TextIOWrapper.close()`` when the underlying buffer's
``closed`` property calls :meth:`~io.TextIOBase.detach`.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix possible use-after-free in :func:`atexit.unregister` when the callback
is unregistered during comparison.

View file

@ -1 +0,0 @@
Fix concurrent and reentrant call of :func:`atexit.unregister`.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fixed socket operations such as recvfrom() and sendto() for FreeBSD
divert(4) socket.

View file

@ -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.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix a potential use-after-free in :meth:`collections.Counter.update` when user code
mutates the Counter during an update.

View file

@ -1 +0,0 @@
Corrected the error message in :func:`readline.append_history_file` to state that ``nelements`` must be non-negative instead of positive.

View file

@ -1 +0,0 @@
Fixed a possible reference leak in ctypes when constructing results with multiple output parameters on error.

View file

@ -1 +0,0 @@
Fix the ctypes bitfield overflow error message to report the correct offset and size calculation.

View file

@ -1 +0,0 @@
Updated timeout evaluation logic in :mod:`subprocess` to be compatible with deterministic environments like Shadow where time moves exactly as requested.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -1 +0,0 @@
Fix possible buffer leaks in Windows overlapped I/O on error handling.

View file

@ -1 +0,0 @@
Fix support of named pipes in the rotating :mod:`logging` handlers.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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`.

View file

@ -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.

View file

@ -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.

View file

@ -1,2 +0,0 @@
Fix a inconsistency issue in :meth:`~io.RawIOBase.write` that leads to
unexpected buffer overwrite by deduplicating the buffer exports.

View file

@ -1,2 +0,0 @@
:func:`_thread.stack_size` now raises :exc:`ValueError` if the stack size is
too small. Patch by Victor Stinner.

View file

@ -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.

View file

@ -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.

View file

@ -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