## python/cpython — v3.15.0b3…v3.15.0b4

_298+ commits._

### Features
- **[3.15] gh-153630: Add `str.remove{prefix,suffix}()` to the `str` method summary (GH-153629) (#153778)** (fd4c7a8)
- **[3.15] gh-144774: Add critical section in `BaseException.__setstate__` (GH-150578) (#153746)** (25eb043)
- **[3.15] gh-71086: Document negative offset support in struct.pack_into() and unpack_from() (GH-153650) (GH-153699)** (29e733a)
- **[3.15] gh-71019: document which objects connect_read_pipe/connect_write_pipe accept and add tests (GH-153660) (#153685)** (9465c84)
- **[3.15] gh-141510: Update `marshal` module comment with `frozendict` support (GH-153655) (#153681)** (3597587)
- **[3.15] gh-152614: Add raises to `QueueShutDown` in `asyncio.Queue.put_no_wait` and `asyncio.Queue.get_nowait` documentation methods (GH-152681) (#153565)** (f237c86)
- **[3.15] Add tests for syntax error messages that had no test coverage (GH-153192) (GH-153196)** (84af8f5)
- **[3.15] Add "new in 3.15" comments to idlelib (GH-153052) (#153054)** (7eb476d)

### Fixes
- **[3.15] gh-150583: Fix zstd compression level with digested ZstdDict (GH-150586) (#153883)** (c642dc8)
- **[3.15] gh-153853: Fix parameter name of calendar.setfirstweekday() in docs (GH-153851) (#153859)** (0be137d)
- **[3.15] gh-85943: Fix BytesWarning in the struct format cache under -bb (GH-153627) (GH-153834)** (21ab8eb)
- **[3.15] gh-151644: Fix data race in sys.setdlopenflags/getdlopenflags under free-threading (gh-151768) (#153790)** (9fcebd3)
- **[3.15] gh-150411: fix `gc_generation.count` race in free-threading (GH-150413) (#153788)** (6d6f526)
- **[3.15] gh-150858: fix data race while changing `__qualname__` of a type object(GH-150859) (#153747)** (5125584)
- **[3.15] gh-149816: Fix UAF in Modules/_pickle.c (GH-150024) (#153718)** (1268235)
- **[3.15] gh-153695: Fix sqlite3.Row.__hash__ with an unhashable value (GH-153696) (#153723)** (f58e582)
- **[3.15] gh-151912: Fix segfault in `type()` with NULL `tp_new` metaclasses (GH-151916) (#153707)** (edbc1fe)
- **[3.15] gh-153658: Fix sqlite3 iterdump() for table names containing a single quote (GH-153659) (#153682)** (3e99c70)
- **[3.15] gh-89696: Fix `loop.sock_connect` docs on address resolution (GH-153651) (#153652)** (9efded4)
- **[3.15] gh-148286: Fix UB in `ZstdDecompressor.unused_data` when a frame is decompressed in one call (GH-153258) (#153644)** (9108488)
- **[3.15] gh-126877: Fix the configure check for Tcl/Tk with optimizing compilers (GH-153543) (GH-153553)** (487ac27)
- **[3.15] gh-86726: Fix and improve tkinter documentation and docstrings (GH-153549) (GH-153551)** (2aa5928)
- **[3.15] gh-88647: Fix tkinter config() docs for synonym options (GH-153544) (GH-153545)** (43e621e)
- **[3.15] gh-151213: Fix asyncio tools permission requirements link (GH-153493) (GH-153518)** (855c4ed)
- **[3.15] gh-153062: Fix a crash iterating itertools.tee on the free-threaded build (gh-153063) (gh-153475)** (dc448f3)
- **[3.15] gh-153444: Fix compile warning in `Modules/_interpchannelsmodule.c` (GH-153445) (#153447)** (b7e6f9b)
- **[3.15] gh-151942: Fix all Sphinx nitpicks in the Python 2.4 What's New (GH-153116) (#153503)** (7e53074)
- **[3.15] gh-151942: Fix all Sphinx nitpicks in the 2.5 What's New (GH-153120) (#153499)** (3cd6168)
- **[3.15] gh-121608: Fix test_samply_profiler: only check samply once (GH-153424) (#153457)** (cb912e1)
- **[3.15] gh-152132: Fix bugs in Py_RunMain() (#153461) (#153466)** (cecafeb)
- **[3.15] gh-152132: Fix Py_RunMain() to return an exit code (GH-153446) (#153454)** (76c28fc)
- **[3.15] gh-153417: Fix BytesWarning in imaplib error messages for bytes arguments (GH-153423) (GH-153430)** (c42d55c)
- **[3.15] gh-47005: fix do_open() to let regular headers override unredirected … (GH-146506) (#153377)** (9fb25cb)
- **[3.15] gh-119592: gh-152967: Fix ProcessPoolExecutor stranding submitted work when a max_tasks_per_child worker exits (GH-152978) (#153363)** (cbbccf3)
- **[3.15] gh-153298: Fix data race in `GenericAlias` parameter initialization on FT (GH-153318) (#153345)** (288e3ce)
- **[3.15] gh-153292: Fix data race in `threading.RLock.__repr__` in FT builds (GH-153299) (#153314)** (8c50080)
- **[3.15] gh-153056: Fix a data race compiling the string.Template pattern in free-threading builds (GH-153057) (#153302)** (e597358)
- **[3.15] gh-153252: Fix error handling in `_PyCompile_CodeGen` (GH-153253) (#153281)** (c30c8a4)
- **[3.15] gh-153210: Fix `array` module import crash under a memory pressure (GH-153238) (#153249)** (fc840db)
- **[3.15] gh-140729: Fix the cProfile module when the executed script contains calls to multiprocessing.Process (GH-144715) (#153243)** (81986cb)
- **[3.15] gh-153200: Fix math.isqrt() for int subclasses with overridden comparison operators (GH-153203) (GH-153223)** (cca9d1c)
- **[3.15] gh-152682: Fix NULL dereference on OOM in `symtable_visit_type_param_bound_or_default` (GH-152684) (#152695)** (ffb5184)
- **[3.15] gh-152849: Fix `OverflowError` message for out-of-range timestamps in the `time` module (GH-152850) (#153209)** (15a21e4)
- **[3.15] gh-148765: Fix description of *include_hidden* parameter in `glob.glob()` docs (GH-148768) (#153173)** (8e7c2ca)
- **[3.15] gh-153141: Fix mutable default argument in _SharedMemoryTracker.__init__ (GH-153142) (#153145)** (5ae6203)
- **[3.15] gh-68147: Fix RFC references in imaplib (GH-153126) (GH-153130)** (1289306)
- **[3.15] Fix minor typos in 'Compound statements' docs (GH-149666) (#153113)** (202e751)
- **[3.15] Fix various typos in the `http.server` docs (GH-153089) (#153096)** (88baea8)
- **[3.15] gh-150459: Fix `SyntaxError` message for `from x lazy import y` (GH-150877) (#153090)** (f7eda8e)
- **[3.15] gh-151945: fix Sphinx reference warnings in `http.server` docs (GH-153084) (#153085)** (9b0a97c)
- **[3.15] gh-153030: Fix quadratic complexity in incremental parsing in HTMLParser (GH-153031) (GH-153038)** (e9f92ac)
- **[3.15] gh-151378: Fix unbounded memory growth when recording binary and the thread is sleeping (GH-152089) (#153047)** (9f82c25)
- **[3.15] gh-151945: Fix all reference warnings and various solecisms in the `http.cookiejar` docs (GH-152816) (#153032)** (960e152)
- **[3.15] gh-135661: Fix abrupt closing of empty comment in HTMLParser (GH-153007) (GH-153024)** (fdc17ca)
- **[3.15] gh-152851: fix a crash when copying a BLAKE-2s/2b object (GH-153008) (#153011)** (e1320ae)
- **[3.15] gh-152951 - Fix double DECREF when `newblock` fails during deque.extend calls (GH-152961) (#152971)** (ce373b8)
- **[3.15] gh-152870: Fix compile error with decimal when EXTRA_FUNCTIONALITY enabled (GH-152871) (#152937)** (2a7eb3d)
- **[3.15] gh-150641: Fix evaluating forward references in STRING format can 'leak' internal names in `typing` (GH-150648) (#152935)** (1b89ad7)
- **[3.15] gh-115634: Fix ProcessPoolExecutor deadlock with max_tasks_per_child (GH-140900) (#152926)** (c8c08cf)
- **[3.15] gh-86165: Fix Time2Internaldate with datetime timetuple (GH-151844) (GH-152895)** (7dd15e4)

### Backend
- **Python 3.15.0b4** (0a6fa62)
- **[3.15] gh-153872: Update macOS installer ReadMe files for 3.15. (GH-153875) (#153876)** (4d74b76)
- **[3.15] gh-124111: Update macOS installer to use Tcl/Tk 9.0.4. (GH-153868) (#153871)** (d87949b)
- **[3.15] gh-152023: Update macOS installer builds to SQLite 3.53.3 (GH-153867) (#153869)** (ec8cfec)
- **[3.15] gh-151669: Normalize symlink targets in tarfile.TarFile.gettarinfo() (GH-151671) (#153517)** (fefc0b4)
- **[3.15] Shut down leaked executors in `test_interpreter_pool` (GH-153780) (#153847)** (9f85842)
- **[3.15] gh-149162: Use _Py_LOCK_DONT_DETACH in intern_common (gh-149164) (gh-153814)** (38c3f11)
- **[3.15] gh-153550: Modernize the older prose sections of the tkinter documentation (GH-153647) (GH-153773)** (04baaae)
- **[3.15] gh-93417: Improve test_mimetypes (GH-150725) (GH-153748)** (22eff88)
- **[3.15] gh-153716: Harden ttk/tkinter GUI tests against display scaling (GH-153717) (GH-153737)** (accfc34)
- **[3.15] Remove duplicate button_ok code in idlelib.textview (GH-153733) (#153734)** (29cb75d)
- **[3.15] gh-153313: Run Emscripten PyRepl test in CI (GH-153701) (#153727)** (28c0653)
- **[3.15] gh-148488: Clarify the company/tag separator in the py -V docs (GH-153427) (GH-153721)** (bec166a)
- **[3.15] gh-153631: Move to `macos-26` runner for iOS (GH-153632) (#153673)** (a442c89)
- **[3.15] gh-152405: Do not expose the internal mapping when rich-comparing `MappingProxyType` objects (GH-152483) (#153670)** (b772f4d)
- **[3.15] gh-153037: Make ZstdFile.__next__ raise io.UnsupportedOperation on non-readable files (GH-153045) (#153638)** (7d8783b)
- **[3.15] gh-90431: Document cancellation behavior of asyncio.wait() and asyncio.as_completed() (GH-153616) (#153617)** (d419b02)
- **[3.15] gh-152132: Close stderr_copy in test_api.test_run (GH-153591) (#153595)** (b3144d9)
- **[3.15] gh-102591: Document that urlcleanup resets the global opener (GH-153562) (#153588)** (1a9359d)
- **[3.15] gh-153293: Clear opcode statistics in the live profiler's reset_stats() (GH-153295) (#153586)** (a3a6203)
- **[3.15] gh-151292: Change `total_samples:u32` in the binary format to `total_samples:u64` (GH-153425) (#153436)** (8ac2fcb)
- **[3.15] gh-86726: Note that the ttk Treeview separator column option needs Tk 9.0 (GH-153556) (GH-153558)** (bb0720f)
- **[3.15] gh-153333: Read tkinter profile scripts with the source file's encoding (GH-153334) (GH-153541)** (ae42632)
- **[3.15] gh-152216: Update bundled expat to 2.8.2 (GH-152234) (#153524)** (3e776ee)
- **[3.15] gh-152785: Upgrade Ubuntu from 24.04 to 26.04 in GitHub Actions (#152717) (#153416)** (da999e6)
- **[3.15] gh-153438: Update NuGet download URL (GH-153482) (GH-153509)** (73f534c)
- **[3.15] gh-153201: Make TSan CI mandatory (GH-153491) (#153497)** (bcc1a36)
- **[3.15] gh-145633: Allow PyFloat_Pack8 & PyFloat_UnPack* to fail in future CPython versions (GH-153440) (#153490)** (45a769f)
- **[3.15] gh-152132: Test Py_CompileString() in test_capi.test_run (GH-153470) (#153472)** (462f628)
- **[3.15] gh-98894: Quote test_dtrace tracer subcommands (GH-152901) (#153459)** (ef5569e)
- **[3.15] gh-153406: Raise ValueError, not OverflowError, for out-of-range dates in email.utils.parsedate_to_datetime (GH-153407) (#153435)** (4b564b3)
- **[3.15] gh-152769: Enable perf trampoline on musl (Alpine Linux) (#152774) (#153456)** (a004341)
- **[3.15] gh-146531: Broaden `wm_iconbitmap` skip on macOS 26 Intel (GH-153348) (#153450)** (0891295)
- **[3.15] gh-153422: Assert bool return type in tkinter tests (GH-153429) (GH-153439)** (1604c80)
- **[3.15] gh-152132: Test all PyRun functions in test_capi.test_run (GH-153352) (#153411)** (6404803)
- **[3.15] gh-69134: Harden NotebookTest.test_traversal (GH-153403) (GH-153408)** (7307d77)
- **[3.15] gh-153380: Adapt ttk tests to Tk 9.1 changes (GH-153381) (GH-153386)** (dd37706)
- **[3.15] gh-151640: Track sharing of `BytesIO` buffer in free-threaded builds (GH-151651) (gh-153151)** (3e19df0)
- **[3.15] gh-130578: clarify urllib.parse.quote parameter defaults behavior (GH-130598) (#153383)** (069ed2a)
- **[3.15] gh-151213: Document asyncio debugging tools (GH-151392) (#153370)** (c512e8f)
- **[3.15] gh-153300: Set global configuration variables in PyConfig_Set() (GH-153301) (#153356)** (c5e73f8)
- **[3.15] gh-143750: Compile OpenSSL with TSan for TSan CI (#153316) (#153353)** (6af15c9)
- **[3.15] gh-150191: temporarily skip two openssl tests which have internal data races under TSAN (GH-153320) (#153350)** (c8434e6)
- **[3.15] gh-153339: Remove extra skip in `test_generators.py` (GH-153340) (#153343)** (d63f3fa)
- **[3.15] gh-145098: Use `macos-26[-intel]` instead of `macos-15[-intel]` in `{jit,tail-call}.yml` (GH-153194) (#153328)** (34c68c3)
- **[3.15] gh-153083: Defer GC tracking of an array to the end of construction. (gh-153284) (gh-153336)** (8cb4b84)
- **[3.15] gh-143990: Preserve the size when creating a Font from a named font (GH-153267) (GH-153323)** (a9d4473)
- **[3.15] gh-88574: Do not swallow the line after a terminating literal in imaplib (GH-153317) (GH-153324)** (217472d)
- **[3.15] gh-86017: Document displayof for Font.actual() and clarify Font.copy() (GH-153288) (GH-153329)** (10ea39e)
- **[3.15] gh-153210: Restore accidental `array.ArrayType` removal (GH-153261) (#153274)** (557e994)
- **[3.15] gh-153205: Set `MemoryError` in stackref array conversion (GH-153206) (#153272)** (7342e01)
- **[3.15] Temporarily allow the TSan (free-threading) job to fail (GH-152173) (#153268)** (07d8f50)
- **[3.15] gh-83274: Don't crash when a Tcl interpreter is deallocated in the wrong thread (GH-152323) (GH-153271)** (5605808)
- **[3.15] gh-150191: Avoid data race in test_sni_callback_race (GH-150193) (#153269)** (9ae12fb)
- **[3.15] Seed pip caches for docs on `main`/`3.x` branches (GH-153127) (#153231)** (60ced36)
- **[3.15] gh-153227: Use a development version of Pygments (GH-153228) (#153254)** (42e245f)
- **[3.15] gh-82151: Update and improve urlsplit docstring (GH-152985) (#153154)** (017e4e9)
- **[3.15] gh-153068: Preserve cprofile enable errors (GH-153070) (#153241)** (78e9fdb)
- **[3.15] gh-150880: Clarify DirEntry.path construction semantics (GH-153218) (GH-153219)** (9d603d3)
- **[3.15] Docs: Link to the `contextlib.chdir` context manager in the `os.chdir` docs (GH-153152) (#153212)** (fdba15a)
- **[3.15] gh-148286: Remove invalid test in `test_decodeescape` (GH-153187) (#153204)** (8d21592)
- **[3.15] gh-146531: Skip hanging `wm iconbitmap` test on macOS 26 Intel (GH-148032) (#153190)** (d3fbde5)
- **[3.15] gh-145098: Use `macos-26-intel` instead of `macos-15-intel` (GH-149991) (#153179)** (52810f9)
- **[3.15] gh-105708: 'V' could be case insensitive for IPvFuture hostnames (GH-105709) (#153138)** (986322e)
- **[3.15] gh-143921: Narrow the control character check in imaplib commands (GH-153067) (GH-153135)** (f2cd7ef)
- **[3.15] gh-149930: Clarify imaplib response helper types (GH-149963) (GH-153123)** (65b6936)
- **[3.15] gh-79638: Restore "Treat an unreachable robots.txt as disallow all" (GH-152525) (GH-153107)** (2a5f9e0)
- **[3.15] gh-69134: Wait until mapped in SimpleDialog keyboard tests (GH-152690) (GH-153104)** (0416fcd)
- **[3.15] gh-76607: Improve documentation of the tkinter cursor option (GH-152481) (GH-153110)** (d1fde18)
- **[3.15] gh-54930: Send a status line in error responses to malformed request lines (GH-152980) (GH-153092)** (7d3b991)
- **[3.15] gh-123193: Document tkinter Variable lifetime (GH-152625) (GH-153098)** (a862fbc)
- **[3.15] gh-75952: Document negative offsets in tkinter geometry strings (GH-152531) (GH-153101)** (67d782c)
- **[3.15] gh-66335: Test uppercase IMAP4 command names (GH-152876) (GH-153080)** (6416d86)
- **[3.15] Remove PDF images (GH-145977) (#153064)** (f8d7ae8)
- **[3.15] gh-151819: Clarify the conditional-pattern email example in re docs (GH-153072) (GH-153073)** (14568f4)
- **[3.15] gh-67512: Document IMAP4.append() flags argument (GH-149907) (GH-153078)** (f09f5dc)
- **[3.15] gh-40038: Quote imaplib command arguments when necessary (GH-152703) (GH-153066)** (2c99ec4)
- **[3.15] gh-152718: Reject oversized table counts in the profiling binary reader (GH-152719) (#153050)** (41a2abe)
- **[3.15] gh-152068: Reset PyREPL Colors on prompt finish (GH-152108) (#153029)** (cb0adb0)
- **[3.15] gh-150579: use lazy imports for concurrent.futures (GH-150585) (#152975)** (2dd5d4e)
- **[3.15] gh-83386: Enable test_hang_gh83386 for ProcessPoolExecutor (GH-152976) (#152982)** (8d08232)
- **[3.15] gh-152785: Upgrade LLVM to LLVM 21 in GitHub Action jobs (GH-152781) (#152968)** (138dd26)
- **[3.15] gh-150880: Normalize paths on Windows before appending wildcard (GH-152906) (GH-152963)** (f3ef09e)
- **[3.15] gh-152785: Upgrade GCC from 10 to 13 in GHA Address Sanitizer (GH-152782) (#152949)** (8ad11e3)
- **[3.15] gh-152903: Change PCWSTR to PWSTR in GetThreadDescription() typedef (GH-152904) (#152943)** (fe23aba)
- **[3.15] gh-152919: Ensure nuget.org source exist before python install (GH-152919)** (d657028)
- **[3.15] gh-152785: Upgrade Java from 17 to 21 in GHA Android (GH-152783) (#152920)** (c09f078)
- **[3.15] gh-151428: Remove unused imports in idlelib.idle_test (GH-151478) (#152916)** (984ebbf)
- **[3.15] gh-152847: Reject POSIX TZ rule with non-digit day-of-year in `_zoneinfo.py` (GH-152848) (#152910)** (598856c)
- **[3.15] gh-98894: Check tracer exit status in test_dtrace (GH-152893) (#152900)** (e0db0e4)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/python/cpython?utm_source=github-action)._