What python/cpython shipped
Written by FoxPlug from the repository's own releases; not affiliated with Python. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/python/cpython; Python did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of October 5, 2026
What shipped
- Fixed marshalling a set modified while its elements are marshalled, raising RuntimeError instead of corrupting the buffer. Pull request #159195
- Stopped marshal from comparing set elements when ordering them, so sets of distinct NaNs and complex numbers no longer fail. Pull request #159196
- Added a fast path in GC finalization that reuses the first reachability result when no weakref callback, finalizer or debug writer ran. Pull request #159138
- Reworked GC survivor handling to untrack tuples and count survivors during move_unreachable(), removing two extra walks over the survivors. Pull request #159154
- Avoided compiling source in zipimport.get_filename(), so resolving a module filename no longer compiles zip source. Pull request #153799
- Let linecache read sources from zip archives on sys.path without callers needing to pass
module_globals. Pull request #157269 - Fixed tarfile error on out-of-range mtime in streaming gzip mode by clamping and coercing the value as gzip does. Pull request #151828
- Fixed subinterpreter thread safety issues in syslog, including a crash from cross-interpreter deallocation and non-atomic reads and writes. Pull request #159000
- Kept the libedit history file header when truncating the history file. Pull request #157172
Why it matters
This week brought a mix of correctness and safety fixes to core modules people rely on every day, including marshal, tarfile, syslog, zipimport and linecache. The GC changes cut redundant work during finalization, which can reduce pause times for programs that allocate heavily. Documentation was also expanded for PyBytesWriter, turtle, PyMarshal file writers and platform GUI guides.
Changelog entry
- Marshal no longer compares set elements when ordering them, fixing sets of distinct NaNs and complex numbers. Pull request #159196
- Marshal now raises RuntimeError if a set is modified while its elements are marshalled. Pull request #159195
- GC skips redundant resurrection analysis when no weakref callback, finalizer or debug writer ran. Pull request #159138
- GC untracks tuples and counts survivors during move_unreachable(), removing two extra walks. Pull request #159154
- Zipimport.get_filename no longer compiles source while resolving a module filename. Pull request #153799
- Linecache can read sources from zip archives on sys.path without
module_globals. Pull request #157269 - Tarfile streaming gzip mode clamps out-of-range mtime values instead of raising struct.error. Pull request #151828
- Syslog no longer crashes when a subinterpreter deallocates an object from another interpreter. Pull request #159000
- Os.strerror is now thread-safe. Pull request #159120
- Libedit history truncation keeps the history file header. Pull request #157172
- Documented that PyMarshal file writers can silently truncate before 3.16. Pull request #159201
- Tests no longer depend on the layout of unmapped text widgets. Pull request #159128
This week in CPython: marshal no longer compares set elements when ordering them, GC avoids redundant resurrection analysis, syslog gets subinterpreter thread-safety fixes, zipimport and linecache handle zip sources better, and tarfile streaming gzip mtime is clamped.
Recent CPython changes cover several core areas. marshal no longer sorts set elements by comparing them, which fixes sets of distinct NaNs and complex numbers, and it now raises RuntimeError if a set is modified while its elements are marshalled. The garbage collector gained a fast path that skips redundant resurrection analysis and now untracks tuples and counts survivors during move_unreachable(). syslog had two subinterpreter thread-safety issues fixed, including a crash from cross-interpreter deallocation. zipimport no longer compiles source in get_filename, and linecache can read sources from zip archives on sys.path without extra arguments. tarfile streaming gzip mode now clamps out-of-range mtimes, os.strerror is thread-safe, and libedit history truncation keeps the header line. Doc
Week of September 28, 2026
What shipped
- Python 3.15.0rc3 released. Release
- Frame, coroutine, and task-waiter chain walks made iterative and bounded to prevent cycles and limit resource consumption. Pull request #153365
- Fixed stack exhaustion vulnerability in PyErr_GivenExceptionMatches when processing deeply nested exception tuples. Pull request #156205
- Fixed asyncio.gather performance regression. Pull request #158240
- Lazy imports of sibling submodules now resolve independently without importing unrelated modules. Pull request #158521
- Inspect.signature() for Python functions now faster by avoiding redundant validation in Parameter construction. Pull request #157463
- BytesIO.readlines() sped up using reference-stealing append to avoid unnecessary refcount operations. Pull request #155171
- Fixed uninitialized memory read in bytes.fromhex(). Pull request #158584
- Documentation clarified that Py_EnterRecursiveCall uses C stack comparison, not a call counter. Pull request #158644
- Test_free_threading split into per-module tests to prevent timeout issues. Pull request #158620
Why it matters
Python 3.15.0rc3 brings security fixes for stack exhaustion vulnerabilities, performance improvements across bytes handling and function inspection, and refinements to lazy import behavior. These changes address both stability concerns and common use case performance.
Changelog entry
- Python 3.15.0rc3 released Release
- Frame, coroutine, and task-waiter chain walks now iterative and bounded Pull request #153365
- Fixed recursion vulnerability in PyErr_GivenExceptionMatches with nested exception tuples Pull request #156205
- Fixed asyncio.gather performance regression Pull request #158240
- Lazy imports of sibling submodules resolve independently Pull request #158521
- Inspect.signature() performance improved for Python functions Pull request #157463
- BytesIO.readlines() optimized with reference-stealing append Pull request #155171
- Fixed uninitialized memory read in bytes.fromhex() Pull request #158584
- Documentation updated: Py_EnterRecursiveCall uses C stack, not counter Pull request #158644
- Test_free_threading split into per-module tests to avoid timeouts Pull request #158620
Python 3.15.0rc3 is out. This release includes security hardening, performance improvements in bytes operations and inspect.signature(), and fixes to lazy imports and asyncio.gather.
Python 3.15.0rc3 released with significant improvements: security fixes for deeply nested exception handling, performance gains in BytesIO and inspect.signature, refined lazy import resolution, and asyncio.gather regression fixes. The release hardens frame and coroutine walks while improving core library performance.
Week of September 21, 2026
What shipped
- Fixed lazy import to correctly import a.b when using import a.b as c syntax, resolving a regression where only a was imported. Pull request #158092
- Fixed ctypes callbacks to properly widen narrow integer results to fill machine registers, preventing undefined behavior from high-order bits. Pull request #157045
- Fixed stale TLBC cache issues in free-threaded builds that caused incorrect line numbers and persistent Invalid
tlbc_indexerrors in remote debugging. Pull request #157732 - Optimized Argument Clinic to use _PyArg_NoKwnames() for positional-only methods with a
defining_classparameter instead of creating static parsers. Pull request #157483 - Updated OpenSSL in binaries and CI from 3.0 to 3.5 on Windows, macOS, and Android with corresponding SSL data updates. Pull request #158015
- Fixed building curses with narrow ncurses by using link checks instead of compile checks for function detection. Pull request #158088
- Fixed NameError and AttributeError to display complete exception messages in IDLE instead of truncated text. Pull request #135526
- Fixed IDLE crashing when a file open in the editor is deleted or renamed by another program during focus events. Pull request #153481
Why it matters
This week included important correctness fixes for dict iteration, ctypes callbacks, and lazy imports that affect runtime behavior. Significant refactoring converted more standard library functions to Argument Clinic for better performance and introspection. Infrastructure improvements include OpenSSL updates and curses build fixes.
Changelog entry
- Fixed lazy import to correctly import the full module path a.b when using import a.b as c syntax. Pull request #158092
- Fixed ctypes callbacks to widen narrow integer results to fill machine registers as required by libffi. Pull request #157045
- Fixed reverse dict iterators to detect key changes and prevent yielding more items than existed at iterator creation. Pull request #158255
- Fixed stale TLBC caches in free-threaded remote debugging that caused Invalid
tlbc_indexerrors and incorrect line numbers. Pull request #157732 - Optimized Argument Clinic to use faster calling convention for positional-only methods with
defining_classparameter. Pull request #157483 - Updated OpenSSL from 3.0 to 3.5 in binaries and CI across Windows, macOS, and Android platforms. Pull request #158015
- Fixed curses build with narrow ncurses by using link checks instead of compile checks for function detection. Pull request #158088
- Fixed NameError and AttributeError to display complete messages in IDLE instead of truncated text. Pull request #135526
- Fixed IDLE crash when a file open in the editor is deleted or renamed by another program. Pull request #153481
- Reduced EPUB documentation table of contents depth from 3 to 2, reducing entries from 1,516 to 188. Pull request #158105
- Bumped Python magic number after adding fast path for match class patterns. Pull request #158258
Weekly digest: fixed lazy imports, dict reverse iteration, ctypes callbacks, and IDLE crashes. Converted more functions to Argument Clinic. Updated OpenSSL to 3.5.
This week's Python updates include critical bug fixes for lazy imports (now correctly import a.b), dict reverse iterators (detect key changes), and ctypes callbacks (proper register widening). Performance improvements via Argument Clinic conversion for dir(), vars(), and other stdlib functions. Infrastructure work includes OpenSSL 3.5 updates and curses build fixes.