./lang/python315, Interpreted, interactive, object-oriented programming language

[ Image CVSweb ] [ Image Homepage ] [ Image RSS ] [ Image Required by ]


Branch: CURRENT, Version: 3.15.2, Package name: python315-3.15.2, Maintainer: pkgsrc-users

Python is an interpreted, interactive, object-oriented
programming language that combines remarkable power with
very clear syntax. For an introduction to programming in
Python you are referred to the Python Tutorial. The
Python Library Reference documents built-in and standard
types, constants, functions and modules. Finally, the
Python Reference Manual describes the syntax and semantics
of the core language in (perhaps too) much detail.

Python's basic power can be extended with your own modules
written in C or C++. On most systems such modules may be
dynamically loaded. Python is also adaptable as an exten-
sion language for existing applications. See the internal
documentation for hints.

This package provides Python version 3.14.x.



Package options: readline, x11

Master sites:

Filesize: 27305.074 KB

Version history: (Expand)


CVS history: (Expand)


   2026-10-26 06:37:44 by Adam Ciarcinski | Files touched by this commit (7) | Package updated
Log message:
python315 py315-html-docs: updated to 3.15.2

Python 3.15.2

Security

gh-160300: Fix http.cookiejar.DefaultCookiePolicy accepting and returning \ 
cookies with a negative Version attribute without checking their domain against \ 
the request host. Such cookies are now ignored.
CVE 2026-114583, gh-160097: tarfile.tar_filter() now rejects link members whose \ 
path resolves to the destination directory itself, as tarfile.data_filter() \ 
already did.
CVE 2026-115557, gh-160040: ssl now rejects TLS certificate chains that contain \ 
any of a set of compromised eMudhra intermediate CA keys. This is an \ 
extraordinary measure and a last line of defense: removing trust is primarily \ 
the job of the platform root store, and the built-in denylist only blocks \ 
connections while that update has not yet reached the OS, a container image, or \ 
a bundled trust store in various Python packages. Entries are added to the \ 
denylist only under a very high threshold. The denylist matches on the public \ 
key (the SHA-256 digest of the RFC 5280 SubjectPublicKeyInfo), so it also covers \ 
the cross-signed certificates that reuse one of the distrusted keys.

Core and Builtins

gh-160491: Fix the location reported for invalid escape sequences in f-strings \ 
and t-strings. The SyntaxError now points at the literal part that contains the \ 
escape, instead of at the closing quote.
gh-160268: Fix a crash in tokenize when a mismatched closing bracket follows the \ 
opening brace of an f-string or t-string replacement field, as in \ 
f'{]a'. It now raises the same “unmatched” error as the parser.
gh-106045: Fix venv path discovery when the base executable resolves to a \ 
location outside the installation pointed to by the home key in pyvenv.cfg. The \ 
standard library is now found from home, and extension modules from the resolved \ 
executable’s installation, instead of falling back to the compiled-in prefix.
gh-160162: Fix a crash on 32-bit platforms when left shifting an int by a count \ 
close to sys.maxsize * sys.int_info.bits_per_digit. OverflowError is now raised, \ 
as for other too large counts.
gh-160179: Fix bytearray.__init__() leaving uninitialized memory in the object \ 
when it fails on a list or tuple containing an integer not in range(256). The \ 
object is now empty after the failed call.
gh-159739: Fix a possible crash when assigning metadata to classmethod or \ 
staticmethod objects.
gh-159739: Fix a race in list.__sizeof__() when a list is concurrently resized \ 
on a free-threaded build.
gh-159739: Fix a reference leak when the value of a type alias is evaluated \ 
recursively or concurrently.
gh-159739: Fix a crash in free-threaded builds when codecs.unregister() is \ 
called concurrently.
gh-159963: Fix a regression in Python 3.15.0 where threads importing submodules \ 
of packages for the first time could raise _DeadlockError or a spurious \ 
“partially initialized module” ImportError, or block one another, with no \ 
circular import involved. importlib.import_module() now returns the partially \ 
initialized module in a cross-thread circular import, as the import statement \ 
does, instead of raising _DeadlockError.
gh-159739: Fix reference leaks when free-threaded garbage collection aborts \ 
early because of an allocation error.
gh-159739: Prevent free-threaded builds from interning and immortalizing complex \ 
subclasses in code object constants.
gh-159739: Fix a reference leak in binary, ternary, and comparison operations on \ 
weak reference proxies when another operand is a dead proxy.
gh-159739: Fix a crash when constructing an error for invalid generic alias \ 
arguments.
gh-159739: Allow the garbage collector to break reference cycles involving \ 
property accessors or names.
gh-159739: Fix a crash in warnings.warn() when skip_file_prefixes is an empty \ 
tuple subclass. Propagate allocation errors when creating the fallback filename.
gh-159431: Fix an assertion failure, or an immortal object becoming mortal, on \ 
the free threaded build when an object passed to the internal delayed decref \ 
mechanism is immortal or becomes immortal before the delayed decref is processed \ 
by the garbage collector.
gh-159294: Fix a crash in a debug build when creating an ExceptionGroup or \ 
BaseExceptionGroup fails with MemoryError. Patch by Christian Aurich Zanettini \ 
Martins.
gh-159244: Fix a crash in dict and dict.update() in the free-threaded build when \ 
another thread concurrently mutates a list used as a key/value pair. Patch by \ 
Christian Aurich Zanettini Martins.
gh-159111: Update mimalloc version from 2.1.2 to 2.5.2. Patch by Donghee Na.
gh-154318: Fix a crash when hashing a deeply nested tuple or frozendict. A \ 
RecursionError is now raised instead of overflowing the C stack.
gh-151818: Fix a double-free crash in list.append() (the specialized \ 
CALL_LIST_APPEND instruction) when growing the list fails with MemoryError.
Library
gh-160549: Fix a crash when a compression.zstd.ZstdCompressor that uses worker \ 
threads and a ZstdDict is deallocated, or the interpreter exits, while data \ 
passed to compress() is still being compressed.
gh-160535: Fix a crash in compression.zstd when the garbage collector frees a \ 
ZstdCompressor that uses worker threads together with its ZstdDict before the \ 
compression of already submitted data has finished.
gh-160520: Fix asyncio SSL transports not applying ssl_shutdown_timeout when the \ 
peer has sent EOF but does not read the data still queued for it. Closing such a \ 
connection could wait indefinitely; it is now aborted with TimeoutError once the \ 
timeout expires.
gh-160326: Raise ValueError for a NaN timeout in threading.Condition.wait() and \ 
the blocking calls built on it, such as threading.Event.wait(), \ 
threading.Semaphore.acquire() and queue.Queue.get(), instead of returning at \ 
once or looping without ever timing out.
gh-159739: Fix crashes in profiling.tracing when a custom timer reinitializes \ 
the profiler or its result clears or disables the profiler during conversion or \ 
cleanup.
gh-159739: Fix crashes in xml.parsers.expat when a character data callback \ 
disables buffering or clears another handler during a flush, or when interning \ 
an attribute name changes ordered_attributes.
gh-160299: Fix symtable.Symbol.is_referenced() for local and nonlocal symbols in \ 
function scopes when their only uses are in inlined comprehensions.
gh-159739: Fix a crash when a ctypes structure subclass cannot be created due to \ 
an allocation failure.
gh-159739: Fix clearing a pickle.Unpickler memo so that the unpickler can be \ 
reused for independent records.
gh-160171: On the server side, ssl.SSLSocket.get_unverified_chain() now returns \ 
the client’s certificate when the session was resumed from a session ticket, \ 
instead of an empty list, and returns an empty list instead of raising \ 
AttributeError when the client sent no certificate.
gh-159739: Fix a possible crash in abc.ABCMeta instance checks when a \ 
subclass-checking callback changes the instance’s class.
gh-159739: Fix the truncate method on io.BytesIO when converting its size \ 
argument closes the stream or exports its buffer.
gh-159739: Fix contextvars.ContextVar returning a stale value after a reentrant \ 
finalizer changes it during reset().
gh-159739: Detect recursive _as_parameter_ chains for ctypes calls without \ 
argument types.
gh-159739: Fix a possible crash when a list of sqlite3 parameters is modified \ 
concurrently on a free-threaded build.
gh-159739: Avoid a crash when a threading.local subclass finalizer accesses \ 
attributes after construction fails.
gh-159739: Avoid a crash when a queue.SimpleQueue subclass finalizer adds an \ 
item after construction fails.
gh-100609: str() of a zipfile.Path whose underlying zipfile has no filename, \ 
such as one constructed from an io.BytesIO, now renders that filename as \ 
:zipfile: instead of raising TypeError. The root of a zipfile is also no longer \ 
rendered with a trailing slash. Synchronized with zipp 3.23.1.
gh-159690: Fix logging.handlers.TimedRotatingFileHandler permanently stopping \ 
rollover after a rollover failed or its backup file already existed, for example \ 
at a DST change.
gh-159739: Avoid undefined behavior when struct.pack_into() copies a bytearray \ 
into overlapping output.
gh-159739: Fix allocation error handling in the fallback implementation of \ 
getaddrinfo().
gh-159739: Fix a double free if remote unwinder initialization runs out of memory.
gh-159739: Fix io.IOBase.readline() returning more bytes than requested when a \ 
stream supports peek() and returns short reads.
gh-159739: Fix multibyte encoders silently consuming a non-BMP character when \ 
looking up a two-character mapping.
gh-159739: Fix off-by-one output buffer checks in the fallback implementation of \ 
getnameinfo().
gh-159739: Fix reference cycles involving the types of grapheme iterators and \ 
segments created by unicodedata.iter_graphemes().
gh-159706: Fix the pure-Python zoneinfo.ZoneInfo setting fold=0 in fromutc() for \ 
times in the fold created by the only transition of a zone with a single \ 
transition.
gh-159714: Fix zoneinfo.ZoneInfo interpreting the Julian day rule J59 as \ 
February 29 in leap years instead of February 28.
gh-159304: Fix AttributeError in email.message.EmailMessage.get_body() when a \ 
nested multipart part is malformed and its payload is a string.
gh-158287: Fix a bug in asyncio where stopping a child process (such as with \ 
SIGSTOP) on macOS caused the event loop to block indefinitely.
gh-130698: Fix PyREPL to convert sys.ps1 and sys.ps2 to strings before use, and \ 
fall back to the default prompts if the conversion raises.
gh-158126: Speed up pickle.dumps() and creating a pickle.Pickler by avoiding the \ 
creation of an AttributeError when looking up the optional reducer_override and \ 
dispatch_table attributes.
gh-157880: Fix mailbox.Babyl to write the visible headers of a \ 
mailbox.BabylMessage to the mailbox file.
gh-156784: asyncio.ProactorEventLoop no longer silently ignores \ 
ConnectionResetError on UDP sockets, matching asyncio.SelectorEventLoop.
gh-156078: zipfile.ZipFile.mkdir() now raises ValueError when the archive is \ 
closed or when a writable member handle is open.
gh-155833: Ensure that MD5 and SHA* objects are properly GC-untracked before \ 
freeing their internal HACL* state. Patch by Bénédikt Tran.
gh-155428: Ensure that hmac.digest() and hmac.HMAC.digest() output identical \ 
values when using a digest’s block size smaller than 16. Patch by Bénédikt \ 
Tran.
gh-155152: Improve performance of some zipimport archives that use Zstandard \ 
compression.
gh-153679: zipimport.zipimporter now raises zipimport.ZipImportError instead of \ 
UnicodeDecodeError for a UTF-8-flagged file name that is not valid UTF-8. Patch \ 
by tonghuaroot.
gh-153319: The turtledemo viewer now reads each demo script as UTF-8 instead of \ 
the locale encoding.
gh-127636: Fix tarfile.TarFile.extract() to accept archive member names with a \ 
trailing forward slash, including those returned by tarfile.TarFile.getnames(). \ 
Contributed by Xiao Yuan.
gh-149527: multiprocessing: fix creation of temporary socket files following \ 
gh-1373358.
gh-146169: xml.parsers.expat: raise RuntimeError when an Expat handler calls \ 
parser.Parse or parser.ParseFile on the parser that called the handler. Patch by \ 
Bénédikt Tran.
gh-140036: Avoid hanging in floor division of pure Python decimal.Decimal \ 
instances when the context precision is very large. Patch by Bénédikt Tran.

Build

gh-128883: Fix crashes with -X perf and -X perf_jit in BOLT builds. The ELF perf \ 
trampoline templates now use read-only data sections.
gh-160004: Fix the paths in the PEP 739 build-details.json file generated by \ 
Tools/build/generate-build-details.py with both --relative-paths and \ 
--config-file-path. Previously, every path except base_prefix was wrong and \ 
depended on the directory the script was run from.
gh-159998: Fix libpython.dynamic in the PEP 739 build-details.json file for \ 
macOS and iOS framework builds. It now points at the framework’s library \ 
instead of a nonexistent path under lib/.
gh-144942: Fix the macOS shared library and framework builds not linking the \ 
libraries required by built-in modules, such as the HACL* objects needed by \ 
_blake2 when it is built in via Modules/Setup.local.
gh-159819: Fix the shell version of python3-config (used on all POSIX platforms \ 
except macOS) when the installation prefix contains spaces or other characters \ 
special to the shell or sed: it printed an empty --prefix and wrong \ 
--includes/--ldflags paths while exiting successfully. The script now also exits \ 
with status 1 if it cannot determine its installation prefix.
gh-157354: Fix the --with-name-sanitizer=no and --without-name-sanitizer \ 
configure options enabling the sanitizer instead of disabling it.
gh-155813: On macOS, LIBFFI_CFLAGS and LIBFFI_LIBS are no longer ignored when \ 
the SDK provides libffi, so ctypes can again be built against a different \ 
libffi. Patch by Advit Arora.

C API

gh-159739: Avoid a crash if a context watcher is cleared while other context \ 
watchers are being notified.
   2026-10-22 10:08:54 by Adam Ciarcinski | Files touched by this commit (6) | Package updated
Log message:
python315 py315-html-docs: updated to 3.15.1

Python 3.15.1

Security
gh-159894: Bump the version of pip bundled in ensurepip to version 26.2.2.
gh-159428: mimetypes no longer reads the files listed in mimetypes.knownfiles by \ 
default on Windows, and uses only the registry.
gh-157953: Update bundled libexpat to version 2.9.0.
Core and Builtins
gh-159739: Avoid a crash if allocation fails while creating a \ 
string.templatelib.Template iterator.
gh-159739: Propagate errors during generic class construction and avoid a crash \ 
after failed generic alias substitution.
gh-159739: Raise OverflowError when the absolute value of a dynamic printf-style \ 
formatting width is too large.
gh-159739: Fix a reference leak in gc.get_objects() and gc.get_referrers() when \ 
an internal allocation fails in the free-threaded build.
gh-159739: Fix memory leaks during interpreter startup when a path configuration \ 
file is empty or too large, or when an audit hook rejects a command.
gh-159739: Avoid a crash when an interpreter configuration string cannot be \ 
encoded as UTF-8.
gh-159739: Preserve the original SyntaxError if allocating optional error \ 
metadata fails.
gh-159739: Avoid a crash if formatting an integer with the c presentation type \ 
runs out of memory.
gh-159739: Avoid a crash when a module filename cannot be encoded as UTF-8.
gh-159603: On FreeBSD, call pthread_attr_get_np() to get the stack size (and \ 
guard size) of the current thread. Patch by Victor Stinner.
gh-130279: Fix bug where compiler did not set the right exception handler for \ 
some jump instructions.
gh-159430: Report the correct exception if looking up __bytes__() raises an \ 
exception while performing %-formatting of bytes.
gh-159320: Add dynamic detection of stack sizes on Android, allowing safer deep \ 
recursion.
gh-159288: Fix a crash when walking a very long chain of lazy import \ 
placeholders, as created by an aliased dotted import such as lazy import a.b.c \ 
as d. RecursionError is now raised instead.
gh-159285: Fix a crash in a debug build when copying an empty dict fails with \ 
MemoryError. Patch by Christian Aurich Zanettini Martins.
gh-159041: Fix a use-after-free in asyncio task bookkeeping when a finalizer \ 
creates a task during thread shutdown.
gh-158973: Reset the warnings lock in the child after os.fork(), before clearing \ 
other threads’ states, to avoid deadlocks when their finalizers issue \ 
warnings. Preserve the lock’s recursion depth if the forking thread owns it.
gh-158918: Reduce C stack usage of _PyModule_IsPossiblyShadowing, which could \ 
potentially cause stack overflows during module attribute access while deeply \ 
recursing in agressively optimized builds.
gh-158803: Fix a crash in bytes.join() and bytearray.join() in the free-threaded \ 
build when another thread concurrently mutates the list being joined. Patch by \ 
Christian Aurich Zanettini Martins.
gh-158824: Fix module-level __getattr__() being called before a module’s own \ 
lazy imports were resolved, which allowed it to shadow them.
gh-158820: Fix a crash when a lazy import is declared or resolved by a finalizer \ 
running during interpreter shutdown.
gh-158592: Skip the array reallocation when shrinking a small list. Patch by \ 
Donghee Na.
gh-158583: bytes.fromhex() and bytearray.fromhex(): Fix uninitialized memory \ 
read. Patch by Victor Stinner.
gh-158197: Fix crashes and debug-build assertion failures in the free-threaded \ 
build when iterating over a split dictionary while another thread deletes \ 
entries or clears it. Publish insertion-order updates atomically so readers \ 
cannot observe an increased size before the corresponding order entry is \ 
initialized.
gh-158592: del list[index] now triggers shrinking the list’s internal array.
gh-158486: Fix the PowerSort mask calculation in list.sort() for very large lists.
gh-158121: Fix missing sys.monitoring INSTRUCTION events when a LINE callback \ 
returns sys.monitoring.DISABLE.
gh-158219: Fix bytearray constructor: do not use a bytes object if its hash \ 
value is already computed. Patch by Cody Maloney and Victor Stinner.
gh-158072: Fix a JIT crash when a class is instantiated with their default arguments
gh-157468: Fix the JIT optimizer folding a builtin name to a constant taken from \ 
the interpreter’s builtins dictionary even when the running function uses a \ 
different __builtins__ mapping, such as one created with vars(builtins).copy(). \ 
The optimizer now only folds when the function’s builtins is the \ 
interpreter’s, and the folded constant is guarded at runtime so that another \ 
function sharing the same code object but a different builtins mapping does not \ 
use it.
gh-157242: If bytearray.resize() or bytearray.take_bytes() fails, leave the \ 
bytearray unchanged, instead of clearing it. Patch by Victor Stinner.
gh-156091: Fix a crash when compiling deeply nested inlined list, set, or dict \ 
comprehensions. A SyntaxError is now raised when the nesting exceeds the \ 
compiler’s static block limit.
gh-106045: Fix standard library discovery in virtual environments created from a \ 
Python executable symlink located outside its base installation.
gh-156459: Fix cleanup on error in compiler_set_qualname. Previously it was \ 
called in _PyCompile_EnterScope, after the scope had been entered, and this was \ 
not reversed in case of an error.
gh-156371: Fix missing PyRefTracer_DESTROY events for trashcan deferred objects. \ 
Patch by Donghee Na.
gh-156204: Fix a crash in PyErr_GivenExceptionMatches() when evaluating deeply \ 
nested exception tuples. The recursion is now bounded, and exceeding the limit \ 
is reported as an unraisable exception.
gh-155823: Fix a JIT bug where the side exit taken when a virtual iterator is \ 
exhausted left a stale value on the stack, so the tier one interpreter resumed \ 
with corrupted state and yield from raised AttributeError instead of finishing \ 
normally.
gh-155504: Fix a crash when thread state creation fails before the thread state \ 
is fully initialized.
gh-155315: Fix marshal so that a frozendict referenced more than once in the \ 
serialized data round-trips correctly, instead of failing to load with \ 
ValueError. Patch by tonghuaroot.
gh-154937: Fix a data race on thread handle identifiers when _thread._shutdown() \ 
runs concurrently with the startup of non-daemon threads in the free-threaded \ 
build.
gh-152075: Reduced lock contention during LOAD_GLOBAL bytecode specialization \ 
under free threading.
gh-153578: Fix an out-of-bounds write in bytearray.extend() when the bytearray \ 
is resized while the argument’s __buffer__() is being acquired, for example by \ 
another thread. Patch by tonghuaroot.
gh-151895: Fixed a crash in marshal.loads() when an allocation failed while \ 
loading a reference-tracked dictionary; it now raises MemoryError.
gh-151518: Fix a free-threaded stop-the-world fairness issue that could starve a \ 
thread reattaching after being suspended while detached.
gh-149816: Fix a Use-After-Free race condition in subtype_getweakref() during \ 
concurrent weakref creation and destruction in the free-threading build.
gh-149816: Fix race conditions in invoke_gc_callback iterating gc.callbacks in \ 
free-threading mode.
gh-69605: Fix REPL completions inserted incorrectly when there was spaces in \ 
import statements.
Library
gh-138641: Ignore pdb.set_trace() when called directly at the pdb prompt.
gh-159864: Fix a crash in syslog.openlog() under the free-threaded build when \ 
sys.argv is modified concurrently.
gh-159811: Fix a crash in hashlib when the OpenSSL routine used by hash.update() \ 
or by hash object constructors fails on data larger than 2048 bytes. Patch by \ 
Bénédikt Tran.
gh-159811: Fix a crash in hmac when the OpenSSL routine used by \ 
hmac.HMAC.update() or by hmac.new() fails on data larger than 2048 bytes. Patch \ 
by Bénédikt Tran.
gh-159786: Fix the error handling of the HACL* routine used by hmac.new() and \ 
hmac.HMAC.update(). If the maximum input length of the underlying hash function \ 
is exceeded, an OverflowError is now raised on all builds, instead of crashing \ 
on DEBUG builds and being silently ignored otherwise. Code correctness. \ 
Realistically this can only happen at implausible sizes. Patch by Bénédikt \ 
Tran.
gh-159739: Fix copying collections.deque subclasses with a large maximum length.
gh-159739: Allow cyclic garbage collection to reclaim group records returned by grp.
gh-159739: Fix io.BytesIO reads into overlapping views of the same buffer.
gh-159739: Avoid a crash when memory allocation fails while creating a \ 
collections.OrderedDict items iterator.
gh-159739: Avoid reading past the end of an encoding name when the surrogatepass \ 
error handler receives a truncated UTF-16 or UTF-32 name.
gh-159739: Fix incorrect ctypes scalar values after ctypes.resize() enlarges the \ 
object.
gh-159739: Fix a memory leak when Unicode normalization cannot grow its \ 
temporary buffer.
gh-159739: Fix resource leaks in ssl when certificate conversion or key log \ 
setup fails.
gh-149015: Fix bdb.Bdb.clear_all_file_breaks() leaving breakpoints behind when \ 
multiple breakpoints are set on the same line.
gh-159620: Fix python -m asyncio ps, pstree and async-aware profiling.sampling \ 
stacks stopping at asynchronous generators. Patch by Timofei Ivankov.
gh-159458: Fix a ThreadSanitizer data race on the static cache in \ 
normalize_century() of the datetime module under the free-threaded build.
gh-159430: Report the correct exception if looking up __name__ raises an \ 
exception when calling repr() on a weakref.ref.
gh-159225: Prevent input calls in PyREPL from modifying readline history.
gh-159044: Restore the previous behaviour of \ 
http.client.HTTPConnection.set_tunnel() where header values that are not strings \ 
(such as None, int or other objects) are converted with str instead of raising \ 
AttributeError when the request is sent.
gh-159184: Fix marshal.dumps() raising MemoryError for a set or frozenset \ 
containing several complex NaNs, which also made it impossible to write a .pyc \ 
file for source code containing such a constant.
gh-159185: Fix a crash in marshal.dumps() and marshal.dump() when a set is \ 
modified while its elements are serialized, for example by the __buffer__() \ 
method of one of its elements. RuntimeError is now raised.
gh-159049: Fix reference cycles in asyncio.loop.create_connection() and \ 
asyncio.loop.start_tls() after a failed TLS handshake. Patch by Timofei Ivankov.
gh-87720: Fixed error in email new policies where header folding failed to \ 
detect the need to re-quote text obtained from encoded words in certain cases.
gh-158929: Fix crash when calling syslog.syslog() while a subinterpreter in \ 
another thread calls syslog.openlog() or syslog.closelog().
gh-158936: dataclass() no longer fails when a string annotation names a lazy \ 
import that cannot be resolved, matching the behavior for non-string \ 
annotations.
gh-158893: Make os.strerror() thread-safe: use the reentrant strerror_r() \ 
function if available. Patch by Victor Stinner.
gh-158539: Fix macOS runtime section lookup for remote debugging when virtual \ 
memory region sizes differ from Mach-O segment file sizes.
gh-156545: Fix deep flamegraph exports on platforms with small C stacks by \ 
falling back to the Python JSON encoder when the C encoder runs out of stack \ 
space.
gh-158552: Wait for Windows threads to finish suspending before reading target \ 
memory in the sampling profiler’s blocking mode. Resume the target if waiting \ 
for suspension fails.
gh-156321: Fix asyncio.shield() reporting an exception from the inner future \ 
through the loop exception handler as soon as it completes after the shield was \ 
cancelled, even when the exception is retrieved afterwards. The exception is now \ 
reported only if it is never retrieved, as with any other future.
gh-158539: Fix profiling.sampling exception mode discarding samples for code \ 
running inside an except block in a generator or coroutine. The remote debugger \ 
now follows tstate->exc_info and its previous_item chain instead of only \ 
reading the embedded exc_state, matching the exception that sys.exception() \ 
reports.
gh-158563: Fix turtle.undo() after turtle.teleport() and after an exception in \ 
turtle.circle(), turtle.dot() or turtle.write(). Fix turtle.stamp(), \ 
turtle.clearstamp(), turtle.clear() and turtle.reset() when the undo buffer is \ 
disabled.
gh-158540: Fix profiling.sampling not adding the directory containing the \ 
profiled script to sys.path, which prevented the script from importing modules \ 
placed next to it. The script’s directory is now added, matching the behavior \ 
of python script.py.
gh-158522: Fix profiling.sampling showing a single frame for a task whose \ 
coroutine recurses. Patch by Timofei Ivankov.
gh-158169: Fix zlib.Decompress.unconsumed_tail duplicating unused_data after end \ 
of stream when max_length was used.
gh-158004: Fix asyncio.as_completed() to continue yielding every awaitable after \ 
a pending iteration step is cancelled.
gh-153888: Fix unittest.mock.patch() with autospec, spec, or spec_set when used \ 
with lazy-imported objects.
gh-157672: Fix tkinter on macOS: creating a Tk instance no longer replaces the \ 
Python handlers of SIGINT, SIGHUP and SIGTERM with Tk’s handler which exits \ 
the process, so Ctrl-C raises KeyboardInterrupt again.
gh-157621: Fix a crash when a weak-reference callback is attached to a \ 
typing.ParamSpecArgs or typing.ParamSpecKwargs instance.
gh-69919: code.InteractiveInterpreter.runsource() and the REPL now report any \ 
exception raised by compiling the source, such as MemoryError or RecursionError \ 
for too deeply nested source, instead of propagating it or printing a traceback \ 
of the REPL internals.
gh-157451: Fix gettext plural form selection when the Plural-Forms expression \ 
combines the unary ! operator with a binary operator, for example !n + 1 or 2 * \ 
!n. The latter raised SyntaxError.
gh-157406: Fix the Python implementation of xml.etree.ElementTree.XMLParser: the \ 
doctype() method of the target is now called for a document type declaration \ 
without an external identifier, like <!DOCTYPE html>, as in the C \ 
implementation.
gh-157364: Fix a use-after-free in io.TextIOWrapper when a call to the \ 
underlying buffer reentrantly detaches it. Patched by Shamil Abdulaev.
gh-157242: io.BytesIO is no longer closed on write() and truncate() failure \ 
(MemoryError). Patch by Victor Stinner.
gh-157325: Fix an out-of-bounds read in the hz incremental decoder when the \ 
input ends with ~.
gh-123018: Fix readline.write_history_file() and readline.append_history_file() \ 
producing a history file that readline.read_history_file() could not load when a \ 
limit was set with readline.set_history_length() and Python was built against \ 
libedit. This works around NetBSD PR 60322.
gh-157146: linecache can now read the source of a module that was imported from \ 
a zip archive on sys.path when given only the file name, as pdb, warnings and \ 
doctest do.
gh-157048: Preserve the position and contents of io.BytesIO when \ 
BytesIO.__init__() fails because a buffer is exported.
gh-156961: Fix tkinter.font.nametofont() and the tkinter.font.Font constructor \ 
for a font name returned by Tk as a Tcl object, for example by \ 
ttk.Style.lookup().
gh-156946: Fix a crash in curses.panel when the finalizer of a panel’s user \ 
pointer runs while the panel is being deallocated. The panel is now taken off \ 
the panel stack before its user pointer is dropped.
gh-156920: Fix asyncio on Windows: closing a DatagramTransport under \ 
ProactorEventLoop while datagrams were still queued, or while an in-flight write \ 
failed right as close() was draining the buffer, could strand the queued data \ 
and never call connection_lost(), hanging the close indefinitely.
gh-156810: Fix a UnicodeEncodeError crash in the sampling profiler’s \ 
collapsed-stack export (--collapsed) when a sampled frame’s function or file \ 
name contains non-ASCII or surrogate-escaped characters. The output file is now \ 
written as UTF-8.
gh-156797: Fix xml.sax.saxutils.XMLGenerator: the namespace URI is now escaped \ 
in the namespace declaration. Previously a URI containing &, < or a quote \ 
character produced a document which cannot be parsed.
gh-83895: xml.etree.ElementTree now accepts input larger than 2 GiB in the C \ 
implementation. The data is fed to Expat in chunks, as xml.parsers.expat already \ 
did, instead of raising OverflowError.
gh-99064: Fix xml.etree.ElementTree.parse() with a text file or other source of \ 
str data in the C implementation. The encoding declared in the document was \ 
applied to the already decoded text, which produced mojibake. It is now ignored, \ 
as when parsing with XMLParser.feed() or fromstring().
gh-156713: Fix nturl2path.pathname2url() and nturl2path.url2pathname(): the \ 
filesystem encoding and error handler are now used for percent-encoding and \ 
decoding, as in urllib.request. Previously paths containing surrogate characters \ 
raised UnicodeEncodeError.
gh-156698: Fix asyncio.ProactorEventLoop UDP transports so that a write error no \ 
longer strands a paused protocol: the write loop is now rescheduled when data \ 
remains buffered, and the protocol is resumed when the buffer has drained.
gh-156658: xml.dom and xml.etree.ElementTree no longer treat characters which \ 
are not white space in XML (such as U+00A0) as white space. Previously they \ 
could be lost in indent(), canonicalize() with strip_text=True, and when parsing \ 
with the whitespace-in-element-content feature turned off.
gh-156568: zipapp.create_archive() now correctly sets the executable bit on the \ 
target archive when copying a zipapp where the target is a path-like object.
gh-156545: Fix the sampling profiler’s flamegraph export so that profiling a \ 
deeply recursive program no longer fails with RecursionError instead of \ 
producing a flamegraph. Patch by tonghuaroot.
gh-156476: The pure Python implementation of queue.SimpleQueue.get() now ignores \ 
timeout when block is false, matching the documented behavior and the C \ 
implementation. It previously raised ValueError.
gh-156444: Fix matching of a negated character set in a bytes pattern compiled \ 
with both re.IGNORECASE and re.LOCALE. The case closure is now applied to the \ 
members of the set, so that [^bc] no longer matches b'B'.
gh-156180: zlib.adler32_combine() and zlib.crc32_combine() now raise ValueError \ 
if the len2 argument is negative, instead of returning rubbish or hanging \ 
indefinitely, respectively.
gh-156166: ssl: A failed assignment or deletion of the _msg_callback attribute \ 
of ssl.SSLContext no longer removes the current callback. Deleting it now raises \ 
AttributeError instead of TypeError.
gh-156173: Calling zlib.Decompress.flush() on invalid compressed data now raises \ 
zlib.error instead of being silently ignored.
gh-152817: sqlite3: Disallow removing the row_factory attribute of a cursor to \ 
prevent a crash on a query.
gh-156124: Fix a crash in the free-threaded build when deleting the contents \ 
attribute of a ctypes pointer.
gh-156101: Fix sqlite3.Cursor.arraysize being set to 0 if the assigned value is \ 
too large. The attribute is now left unchanged if the assignment fails.
gh-156100: Fix crashes in sqlite3.Connection when deleting the autocommit \ 
attribute or setting it to an integer which does not fit in C long. Both now \ 
raise an exception.
gh-156099: Fix a crash when deleting the keylog_filename attribute of \ 
ssl.SSLContext. It now raises AttributeError.
gh-156067: Fix error handling in the zoneinfo accelerator module when a \ 
transition index is -1 or a TZ string’s __bool__ raises.
gh-155997: Fix concurrent.interpreters.list_all(). It failed if an interpreter \ 
was destroyed during the call, in particular by a garbage collection which \ 
finalized the object owning the last reference to it.
gh-155941: Fix asyncio.start_server() when a plain-function client_connected_cb \ 
raises: the error is now reported like the coroutine case and the transport is \ 
closed, instead of leaving the connection open forever (which also made \ 
asyncio.Server.wait_closed() hang).
gh-155843: hmac: ensure that HMAC objects are properly initialized to prevent \ 
rare crashes on allocation failures. Patch by Bénédikt Tran.
gh-155835: hashlib: Fix data races when accessing digest_size and block_size on \ 
SHA-3 objects. Patch by Bénédikt Tran.
gh-155830: _blake2: Ensure that BLAKE-2 objects are correctly initialized before \ 
being tracked by the garbage collector. Patch by Bénédikt Tran.
gh-155782: ssl: prevent a crash in group() for session-less objects on OpenSSL \ 
3.2 and later. Patch by Bénédikt Tran.
gh-155811: Add a sequence counter to GC statistics to prevent _remote_debugging \ 
returning inconsistent snapshots caused by non-atomic reads. Patch by Maurycy \ 
Pawłowski-Wieroński.
gh-155717: multiprocessing’s default start method is now “spawn” instead \ 
of "forkserver" when there is no writable temporary directory, such as \ 
on a read-only file system. Previously starting a process failed with an OSError \ 
there. Patch by Bénédikt Tran.
gh-155775: Fix a regression in imaplib introduced in the fix for gh-63121: \ 
refreshing the capabilities after a successful login() or authenticate() \ 
consumed the CAPABILITY response, so it could no longer be read with response().
gh-113318: Fix crashes when deleting an attribute whose setter is generated by \ 
Argument Clinic and is not prepared for deletion, among them \ 
frame.f_trace_opcodes and the context, owner and session attributes of \ 
_ssl._SSLSocket. Deleting such attribute now raises AttributeError.
gh-150449: Fix sqlite3.Blob slices with a negative step. Reading or writing such \ 
a slice raised SystemError. It now raises ValueError.
gh-155336: Fix error handling in socket.gethostbyaddr() and \ 
socket.gethostbyname_ex() when hostname resolution fails.
gh-155426: Make sure that the pure Python fallback of hmac.digest() rejects keys \ 
that are neither bytes or bytearray. Previously, an AttributeError was raised \ 
instead of TypeError. Patch by Bénédikt Tran.
gh-102475: Fix os.path.realpath() on Windows: the unresolved part of the path is \ 
now appended, not joined, so a file name which looks like a drive (e.g. \ 
spam:eggs) no longer discards the resolved part. A path relative to another \ 
drive is now resolved against the root directory of that drive.
gh-89760: Fix os.path.realpath() on Windows: the \\?\ prefix is no longer \ 
stripped from a volume GUID path, which made the result invalid.
gh-84419: Fix os.stat() on Windows: trailing dots and spaces, which are ignored \ 
by the operating system, are no longer taken into account when the execute \ 
permissions are guessed from the file extension.
gh-155319: warnings.warn_explicit() now displays the source line taken from the \ 
loader of the module whose globals are passed as module_globals. It also no \ 
longer raises IndexError if lineno is out of the range of the module source.
gh-123011: warnings.warn_explicit() no longer emits a spurious \ 
DeprecationWarning or raises ImportError when it is called with the globals of \ 
the __main__ module.
gh-69370: python -m inspect --details no longer fails with UnicodeEncodeError if \ 
the path of the module contains characters unencodable in the encoding of \ 
sys.stdout. Such characters are now escaped with backslashes.
gh-69371: Fix pydoc for modules whose path contains undecodable bytes. \ 
pydoc.writedoc() and the pydoc HTTP server no longer fail with \ 
UnicodeEncodeError: the file URL is now percent-encoded using the filesystem \ 
encoding, and characters unencodable in the generated HTML page are escaped with \ 
backslashes.
gh-154855: Fix curses.window.instr() returning one character too few when the \ 
curses module is built against a curses library that counts the terminator in \ 
the requested length, such as the NetBSD one.
gh-154594: Fix copy.deepcopy() so that an object whose deep copy is None is \ 
still memoized. Patch by tonghuaroot.
gh-154523: Fixed data-race when calling io.TextIOBase.detach() in free-threaded \ 
build.
gh-135683: logging.FileHandler and logging.handlers.WatchedFileHandler now honor \ 
logging.raiseExceptions for errors that occur while opening the file, like for \ 
other errors during logging.
gh-82535: logging.handlers.SysLogHandler no longer fails if the address cannot \ 
be resolved when the handler is created. The address is resolved again when a \ 
record is emitted.
gh-153970: Calling str() on a subprocess.CalledProcessError no longer raises \ 
TypeError when its returncode is not an integer, such as None.
gh-154194: Fix the sampling profiler dropping entire samples when a non-fatal \ 
read fails; frames now keep any readable metadata, and long funcnames and \ 
filenames are truncated instead. Patch by Maurycy Pawłowski-Wieroński.
gh-153005: concurrent.interpreters.Queue.get() and \ 
concurrent.interpreters.Queue.put() now compute their timeout deadline from \ 
time.monotonic() instead of the wall clock, so adjusting the system clock during \ 
the call no longer makes them over- or under-wait.
gh-154062: Stop normalizing differential flamegraph baselines to the duration of \ 
the current profile.
gh-81241: Fix OSError when importing ctypes from a statically linked interpreter.
gh-153838: Skip non-regular files in the profiling.sampling heatmap exporter \ 
instead of reading them unconditionally. Patch by tonghuaroot.
gh-141276: Fix duplicate SyntaxWarning messages when importing source modules \ 
from ZIP archives. zipimport.zipimporter.get_filename(), and therefore \ 
find_spec(), no longer compile source modules. A SyntaxError in a zipped source \ 
module is now raised when the module is executed rather than when it is found, \ 
matching the behavior of filesystem-based loaders.
gh-153603: Fix a crash in the ISO-2022 decoders when decoding a byte after an \ 
unknown charset designation is set via the decoder’s setstate method. Patch by \ 
tonghuaroot.
gh-153539: Fix a crash in the C implementation of io.TextIOWrapper.tell() when \ 
the decoder’s getstate method triggers a reentrant seek, or when another \ 
thread seeks the same stream concurrently. Patch by tonghuaroot.
gh-152754: Fix a crash when the same os.scandir() iterator is used concurrently \ 
from multiple threads. It no longer releases the directory handle while another \ 
thread is reading from it. Sharing an iterator between threads remains subject \ 
to race conditions: which entries each thread receives is unspecified.
gh-153364: Make frame, coroutine and task-waiter walks iterative and bounded, \ 
avoiding potential hangs and stack overflows. Fix asyncio task inspection when \ 
awaited-by sets contain removed entries. Patch by Maurycy Pawłowski-Wieroński.
gh-149816: hashlib: fix a crash arising from a race condition when looking up an \ 
OpenSSL hash algorithm by name the first time. Patch by Bénédikt Tran.
gh-151292: Fix profiling.sampling --binary leaving unreadable profile files when \ 
the binary format reaches a size limit. Preserve collected samples when the \ 
writer can still finalize safely. Patch by Maurycy Pawłowski-Wieroński.
gh-152721: Fix quadratic replay time in the profiling.sampling binary reader \ 
when a profile’s run-length-encoded samples alternate thread status.
gh-151126: Fix a crash caused by failing to set MemoryError on allocation \ 
failure when passing ctypes.Structure or ctypes.Union instances by value to \ 
ctypes foreign functions.
gh-152692: Fix annotationlib.type_repr() returning a string such as \ 
None.list.append for bound built-in methods, whose __module__ is None. It now \ 
returns the qualified name, as it already did for other builtins.
gh-152490: Fix TypeError when formatting a SyntaxError raised with \ 
NotImplemented as its argument, which caused unexpected REPL exit and IDLE Shell \ 
restart.
gh-152373: Fix the pdb until command not stepping over a list comprehension when \ 
a breakpoint is set on it. Patch by tonghuaroot.
gh-152204: Fix the pure-Python implementations of datetime.date.fromisoformat(), \ 
datetime.time.fromisoformat() and datetime.datetime.fromisoformat() silently \ 
accepting some malformed ISO 8601 strings, such as non-ASCII digits or a sign in \ 
a fixed-width field (for example '2020+12' or \ 
'20201212T0102٣٤'). Each field is now required to be exactly N ASCII \ 
digits, matching the C implementation.
gh-133998: Fix tarfile.open() in streaming write mode (w|gz) raising \ 
struct.error when given an mtime outside the range of the gzip header’s 32-bit \ 
timestamp field. Out-of-range values are now stored as 0, matching gzip.
gh-117807: Fix mimetypes initialization from MIME map files containing invalid \ 
UTF-8 bytes.
gh-143008: Fix race conditions when re-initializing a io.TextIOWrapper object.
gh-145856: Fix plistlib.dumps() and plistlib.dump() so that skipkeys=True \ 
together with sort_keys=True correctly drops non-string keys when the dictionary \ 
contains a mix of string and non-string keys. Previously the sort ran before the \ 
filter and raised TypeError.
gh-143376: concurrent.interpreters: fix a crash when internal cross-interpreter \ 
channel ends have incorrect channel IDs. Patch by Bénédikt Tran.
gh-146065: Fix a crash in asyncio.Future iterator when send() is called after \ 
throw() or close().
gh-143008: Fix crash in io.TextIOWrapper when reentrant io.TextIOBase.detach() \ 
is called reentrantly from the underlying buffer.
gh-129605: Improve exception handling when computing suggestions in \ 
traceback.py. This fixes a bug that could cause PyREPL to exit unexpectedly.
gh-102967: A bug in doctest._SpoofOut.truncate() was causing None to be passed \ 
to StringIO.seek() when no size was given. A simple fix skips the seek call when \ 
no size is given so the buffer can be truncated from the current position.
gh-82039: http.cookiejar.FileCookieJar.load() now checks the first, format \ 
signature line in a case-insensitive manner. Patch by Ashley Harvey.
gh-70758: Creating a new turtle screen after the previous one was closed no \ 
longer raises turtle.Terminator on the first turtle command.
bpo-44012: The exploded attribute of ipaddress.IPv6Address and \ 
ipaddress.IPv6Interface now supports addresses with a scope ID (link-local \ 
addresses). Previously the former raised AddressValueError and the latter \ 
omitted the scope ID.
gh-83869: Fix tarfile reading an archive with a GNU sparse 1.0 member whose size \ 
is set in the pax extended header. The offset of the next header was computed \ 
from the offset of the data, which is already past the sparse map, and from the \ 
size of the member, which can be the apparent size of the sparse file. All \ 
following members were unreachable.
gh-61366: http.cookiejar.MozillaCookieJar now reads session cookies written by \ 
curl and Wget, which use 0 in the expiration time field. Contributed by \ 
Jérémie Detrey.
Documentation
gh-142083: Document the 'w' type code in the array.array docstring, so \ 
that it lists the same type codes as array.typecodes and the array module \ 
documentation.
gh-107689: Added docstrings to abstract ctypes.
Tests
gh-159293: Restore the recursion limit after the free-threading recursion-limit \ 
race test to avoid failures in subsequent tests run in the same process.
gh-159211: The iOS testbed no longer gathers simulator diagnostics when a test \ 
run fails.
gh-157628: In regrtest, only consider that a test leaks if all test runs leak at \ 
least one file descriptor. For example, ignore “[0, 1, -1] file descriptors, \ 
sum=0” deltas, instead of reporting a leak. Patch by Victor Stinner.
gh-140550: Enable limited C API tests on Free Threading in test_cext and \ 
test_cppext: test the Py_TARGET_ABI3T macro. Patch by Victor Stinner.
gh-75876: A test decorated with bigmemtest() now runs in a subprocess if it \ 
really allocates the memory it asks for (that is, if the -M option is used), so \ 
that the memory it uses and the address space it fragments are released when it \ 
ends. A dummy run stays in the process. The separate memory watchdog process is \ 
no longer needed: the parent process watches the memory usage of the subprocess.
gh-155411: Fix test.support.subTests() for asynchronous test methods. They were \ 
wrapped in a synchronous function, which discarded the coroutine without \ 
awaiting it, so the test silently did not run at all.
gh-132581: The list of tests which altered the execution environment now \ 
includes the reasons why the environment was considered altered, for example an \ 
unraisable exception or a modified sys.path. The final result no longer repeats \ 
the same state twice (like ENV CHANGED then ENV CHANGED).
gh-155109: Add test.support.run_with_limited_c_stack() and use it in tests that \ 
exhaust the C stack with a fixed number of recursive calls, so that their \ 
outcome no longer depends on the C stack size.
Build
gh-143632: Fix the check that disables PR_SET_VMA_ANON_NAME on musl libc: it \ 
tested an unset variable, so it never had any effect and the build could fail \ 
with a redefinition of struct prctl_mm_map.
gh-159759: Fix the libpython.static path in PEP 739 build-details.json, which \ 
pointed to a file that is not installed when building with --enable-shared, and \ 
no longer list a static library for framework builds, which do not install one.
gh-159440: The version string reported by sys.version no longer carries a \ 
spurious -dirty suffix when CPython is built out-of-tree from a clean git \ 
checkout: the build stamp now checks the source tree instead of the build \ 
directory.
gh-158683: Fix the Modules/Setup entry for the _zstd module by adding missing \ 
source files.
gh-157142: Fix the link of Programs/_freeze_module when extension modules are \ 
built in (MODULE_BUILDTYPE=static) and the test modules are enabled: \ 
Modules/getpath_noop.c now defines _Py_Get_Getpath_CodeObject(), which \ 
_testinternalcapi uses.
gh-155911: Fix curses detection when a curses library is already in LIBS. Patch \ 
by Shamil Abdulaev.
Windows
gh-159880: Fix a key handle leak in winreg.CreateKey(), winreg.CreateKeyEx() and \ 
winreg.OpenKey() when the winreg.OpenKey/result audit hook fails.
gh-157906: Fix an incorrect architecture macro check that prevented CPU \ 
prefetching in the free-threaded garbage collector on 32-bit Windows builds.
gh-157789: Use compiler option -Og in case of clang-cl debug builds on Windows \ 
to reduce stack usage. Patch by Chris Eibl.
gh-72353: Reading from the console on Windows now continues if the read was \ 
cancelled by Ctrl+C, but the SIGINT handler did not raise an exception. \ 
Previously the read ended as if at end of file.
gh-86427: Fix the encoding of the standard streams in the legacy Windows stdio \ 
mode (PYTHONLEGACYWINDOWSSTDIO). It is now the code page of the console, as in \ 
Python 3.7, not the ANSI code page.
gh-87587: os.device_encoding() on Windows now returns the code page of any \ 
console file descriptor, not only 0, 1 and 2, and returns None for other \ 
character devices like NUL. The UTF-8 code page is now reported as \ 
"utf-8" instead of "cp65001".
macOS
gh-159739: Propagate errors that occur while converting macOS system proxy settings.
IDLE
gh-159517: Fix the completion list and the call tip grabbing the focus on macOS \ 
with Tcl/Tk 9.1.
gh-56596: Make IDLE keyboard shortcuts with ascii letters work when Caps Lock is \ 
on even when only one of the upper and lowercase versions are defined.
gh-64007: IDLE no longer applies syntax coloring to the text entered for input() \ 
in the Shell.
gh-85560: Fix IDLE failing to find the opening parenthesis when a continuation \ 
line inside the parentheses starts with else of a conditional expression or with \ 
yield.
gh-75487: Fix saving a truncated number when an integer entry in the IDLE \ 
Settings dialog is blanked with the Backspace key.
gh-74112: Ctrl-C in the IDLE Shell now interrupts blocking calls such as \ 
time.sleep() and socket.recv.
gh-151471: Colorize the soft keyword type in IDLE.
gh-103089: IDLE no longer hangs when opening a file with very long lines. Only \ 
the first 2,000 characters of a line are colorized.
gh-70331: IDLE no longer fails to start with python -m idlelib, and its user \ 
process no longer fails to start, when the current directory contains user files \ 
with the same names as standard library modules that IDLE imports, such as \ 
random.py or tkinter.py.
gh-93016: Fix parsing of command line arguments in the IDLE “Run… \ 
Customized” dialog on Windows: backslashes are no longer treated as escape \ 
characters. Fix also display of the previous arguments in the dialog.
gh-69365: The IDLE search dialogs now show a regular expression error below the \ 
entry instead of in a message box.
gh-105689: Fix calltips, parenthesis matching and auto-indent in the IDLE Shell \ 
after output containing unbalanced quotes or parentheses.
gh-60402: In IDLE, Tab in a string that is not the start of a file name inserts \ 
a tab instead of opening the completion list.
gh-68453: Fix running IDLE with the -s option together with -c, -r or -: the \ 
command or script now runs after the startup file, without an error dialog and \ 
without restarting the shell.
gh-69919: IDLE now reports any exception raised by compiling the source, such as \ 
MemoryError for too deeply nested source, instead of hanging the Shell.
gh-91398: Remove the border around the IDLE Shell sidebar, which was drawn in \ 
the window background color and stood out with dark themes.
gh-71136: Fix a hang of the IDLE Shell when code run under the debugger raises \ 
KeyboardInterrupt.
gh-154511: Consolidate IDLE’s mouse wheel handling in idlelib.util. \ 
wheel_event moves there from idlelib.tree and joins x11_buttons, which tells \ 
whether Tk reports wheel rotations to a widget as \ 
<Button-4>/<Button-5> events, and bind_wheel, which binds whichever \ 
events Tk sends.
gh-156896: Stop deleting tkinter submodules when idlelib.run is imported.
gh-153480: Fix IDLE failing to start when opening a file which does not exist \ 
yet. Fix a traceback when a file open in the IDLE editor is deleted by another \ 
program; IDLE now asks whether to close the window, save the file elsewhere, or \ 
ignore it.
gh-66172: IDLE no longer fails to start when a user configuration file is \ 
corrupt. The unparsable file is renamed with a “.bad” suffix, default \ 
settings are used instead, and a warning lists the affected files.
gh-90304: Prevent IDLE from failing to start when a font reports a zero width \ 
for the '0' character. Such a broken font caused a ZeroDivisionError; \ 
the editor now falls back to the configured width.
gh-135511: Fix display of NameError and AttributeError with multi-line message.
Tools/Demos
gh-158451: python-gdb.py is now able to format an invalid Unicode string: render \ 
invalid characters as \Uhhhhhhhh instead of raising an exception. Patch by \ 
Victor Stinner.
gh-156219: Fix Argument Clinic generating code which reads an optional \ 
positional argument which was not passed, if the function has a **kwds \ 
parameter.
gh-113318: Fix Argument Clinic for @getter and @setter in a preprocessor \ 
conditional block. It failed with an internal error. Argument Clinic now also \ 
rejects the accessors of the same attribute with different C basenames, and the \ 
same accessor defined twice, which silently generated invalid or duplicated \ 
entries of PyGetSetDef.
gh-155218: Fix Argument Clinic generating the flags of the optional groups in \ 
different order on 32-bit and 64-bit platforms.
gh-155207: Argument Clinic now supports the --dry-run and --diff options. They \ 
list the files which would be changed, or write a unified diff of the changes to \ 
the standard output, without modifying any file.
gh-64502: Fix Argument Clinic support of parameters with a default value used \ 
together with optional groups. Such parameters were always required in the \ 
generated parsing code.
C API
gh-159739: Fix a crash in _PyTuple_Resize() when resizing a non-empty tuple to a \ 
negative or too large size. It now raises SystemError or MemoryError \ 
respectively.
gh-159739: PyInitConfig_SetStr() now releases a previously configured value and \ 
preserves it if conversion of the replacement fails.
gh-159739: Fix a reference leak when _PyTuple_Resize() fails.
gh-149044: Fix the PySlot_END macro for C++: initialize all members to avoid \ 
compiler warnings. Patch by Victor Stinner.
gh-158810: Fix Py_ARRAY_LENGTH() macro on C++: do not use \ 
__builtin_types_compatible_p() on C++. Patch by Victor Stinner.
gh-158451: Fix _PyUnicodeWriter_WriteLatin1String() when the writer buffer kind \ 
is UCS-2 or UCS-4. Patch by Victor Stinner.
gh-157649: Fix Py_CLEAR and Py_SETREF macros on C++: implement them using auto \ 
instead of decltype(). Using decltype() produced invalid code when \ 
clearing/setting an array item. Patch by Victor Stinner.
gh-142217: Add tests on the undocumented and deprecated _Py_Identifier C API. \ 
Patch by Victor Stinner.
gh-157384: PyImport_CreateModuleFromInitfunc() now sets the package context \ 
while calling initfunc, so that a single-phase init submodule created with only \ 
the last component of its name gets the full name from the spec.
gh-157242: Fix PyBytesWriter_Resize() to handle properly memory allocation \ 
failure. Leave the writer unchanged on error, instead of leaving it in an \ 
inconsistent state. Patch by Victor Stinner.
gh-156101: Don’t set the result in error in PyLong_AsInt32(), \ 
PyLong_AsUInt32(), PyLong_AsInt64() and PyLong_AsUInt64(). Leave the result \ 
unchanged in this case. Patch by Victor Stinner.
   2026-10-10 12:34:20 by Adam Ciarcinski | Files touched by this commit (24)
Log message:
python315 py315-html-docs: added version 3.15.0

Python 3.15 is the latest stable release of the Python programming language,
with a mix of changes to the language, the implementation, and the standard
library. The biggest changes include lazy imports, frozendict and sentinel
builtins, UTF-8 as the default encoding, unpacking in comprehensions, and a
stable ABI for free-threaded builds.

The library changes include a new profiling package with Tachyon, a
high-frequency statistical sampling profiler, more color in command-line
output, as well as the usual deprecations and removals, and improvements in
user-friendliness and correctness.