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

_194+ commits._

### Features
- **[3.15] gh-133879: Copyedit "What's New in Python 3.15" (GH-154978) (#155000)** (418a0a9)
- **[3.15] gh-152548: Add a test.support.isolation.runInSubprocess() decorator (GH-152551) (GH-154780)** (c441fa2)
- **[3.15] Add the free-threaded Windows build output dirs to `.gitignore` (GH-154641) (#154694)** (e1b80e6)
- **[3.15] gh-154493: Add the UCD license to `Doc/license.rst` (GH-154651) (#154692)** (174ebdf)
- **[3.15] gh-76595: Add tests for PyCapsule_Import() (GH-154588) (GH-154619)** (b6f24be)
- **[3.15] gh-153872: macOS: free-threading support is installed by default on Python 3.15 (GH-154103) (#154479)** (cd60bb7)
- **[3.15] urllib: Add tests for HTTP errors to complete coverage (GH-154102) (#154120)** (1df0ecd)

### Fixes
- **[3.15] gh-145030: Fix asyncio write pipe transport for named FIFOs on Solaris (GH-155110) (#155131)** (aee2911)
- **[3.15] gh-135736: Fix interaction between TaskGroup and aclose() (GH-154649) (#154900)** (5bc7459)
- **[3.15] gh-98820: Fix quadratic time in csv.Sniffer for quoted fields (GH-154867)** (476fb09)
- **[3.15] gh-109638: Fix exponential time in csv.Sniffer for doubled quotes (#154868)** (d52184b)
- **[3.15] GH-138800: Fix variable substitution in python3.pc for Android (GH-144776) (#155107)** (847d099)
- **[3.15] gh-155013: Fix a reference to "partial object" in the `functools.partial()` doc (GH-155036) (#155093)** (a09a635)
- **[3.15] gh-155052: Fix docstring of decimal.Context.copy (GH-155062) (GH-155081)** (6ce19a8)
- **[3.15] gh-79366: Fix a race condition when removing a logging handler (GH-154528) (GH-155076)** (341d9e7)
- **[3.15] gh-154892: Fix `PyLong_AsLong()` error checks in `_zoneinfo` (GH-154901) (#155056)** (74887c9)
- **[3.15] gh-151942: Fix all Sphinx nitpicks in the Python 2.6 What's New (GH-154550) (#154952)** (965f1f9)
- **[3.15] gh-154936: Fix JSON control character error position (GH-154941) (#154974)** (067554b)
- **[3.15] gh-154587: Fix Windows buffer declaration in _cursesmodule (GH-154609) (GH-154931)** (f82903b)
- **[3.15] gh-151941: Fix Sphinx reference warnings in `Doc/c-api/` (GH-152044) (GH-154920)** (928b61d)
- **[3.15] gh-154836: Fix Popen.wait() with very large timeouts on the pidfd/kqueue wait paths (GH-154837) (#154891)** (dd2714d)
- **[3.15] gh-154709: Fix out-of-bounds access in dict reverse iterator (GH-154721) (GH-154888)** (269638b)
- **[3.15] gh-153531: fix thread safety of setting func.__doc__ and func.__module__ (GH-154851) (#154856)** (048b1f6)
- **[3.15] gh-154324: Fix os.sendfile() error reporting on illumos (GH-154327) (GH-154832)** (1088266)
- **[3.15] gh-154821: fix data races on function attributes (GH-154826) (#154829)** (d83c65a)
- **[3.15] gh-154822: Fix racy assertion during finalization (GH-154824) (GH-154828)** (de106cc)
- **[3.15] gh-154592: Fix test_peg_generator in non-UTF-8 locales with a non-ASCII work dir (GH-154593) (GH-154598)** (430b2d5)
- **[3.15] gh-154431: Revert "gh-154431: Fix data race in `sys.audithook` (GH-154462)" (GH-154769) (GH-154774)** (44fca7e)
- **[3.15] gh-154189: Fix use-after-free in `functools.partial_vectorcall` (GH-154508) (#154652)** (6246342)
- **[3.15] gh-73458: Fix logging.config.listen() on a host without an IPv4 address (GH-154491) (GH-154616)** (f4c210c)
- **[3.15] gh-153862: Fix spurious color pair in curses window.inch() on a wide build (GH-154703) (GH-154720)** (5be0125)
- **[3.15] gh-154695: fix asyncio.Task eager_start=True with no explicit loop (GH-154697) (#154705)** (3a33ccd)
- **[3.15] Fix a stale link to the `math.integer.isqrt()` correctness proof (GH-154685) (#154698)** (1667a6c)
- **[3.15] gh-145030: Fix asyncio write pipe transport for named FIFOs on macOS (GH-154222) (#154613)** (2bdc27e)
- **[3.15] gh-153133: Fix socket leak in error path of asyncio create_connection (GH-153134) (#154631)** (b4d0b26)
- **[3.15] gh-150952: Fix incorrect sock_sendto docstring (GH-150953) (#154626)** (3bf0883)
- **[3.15] gh-153570: Fix use-after-free in bytearray.take_bytes() with a reentrant __index__ (GH-153572) (#154648)** (848f0ba)
- **[3.15] GH-142035: Fix wrapping of colorized argparse help text (GH-154634) (#154644)** (fe08b70)
- **[3.15] gh-154580: Fix python-gdb.py pretty-printing non-ASCII strings in non-UTF-8 locales (GH-154581) (GH-154635)** (efbe54a)
- **[3.15] gh-153419: Fix several issues around bytearray __init__ (GH-153498) (#154622)** (370e670)
- **[3.15] gh-103847: fix some asyncio subprocess cancellation bugs (GH-146571) (#154633)** (99f6844)
- **[3.15] gh-154551: Fix ctypes.util.find_library() in non-UTF-8 locales (GH-154552) (GH-154555)** (71361f3)
- **[3.15] gh-146011: Fix use-after-free in `signaldict_repr` after deletion (GH-153784) (#154599)** (f921edf)
- **[3.15] gh-154582: Fix test_invalid_utf8_arg in non-UTF-8 multibyte locales (GH-154584) (GH-154601)** (3915f1e)
- **[3.15] gh-154435: Fix os.posix_fadvise() and os.posix_fallocate() on DragonFly BSD (GH-154436) (GH-154451)** (a5d357c)
- **[3.15] gh-153761: Fix asyncio sock_accept() dropping a connection when cancelled (GH-153762) (#153829)** (5bf6a74)
- **[3.15] gh-151949: Fix Sphinx reference warnings in `Doc/library/lzma.rst` (GH-153878) (#154127)** (41d7b3c)
- **[3.15] gh-153291: Fix data race in readline.get_completer() and get_pre_input_hook() (gh-153362) (gh-154418)** (7dca47d)
- **[3.15] gh-154443: Fix test_makedev on DragonFly BSD (GH-154444) (GH-154450)** (f0728d3)
- **[3.15] gh-154137: Fix handle leak in test_winapi (GH-154201) (#154202)** (df36cf1)
- **[3.15] gh-150076: Fix the documented signature of warnings.deprecated (GH-153879) (#154487)** (b84c4cc)
- **[3.15] gh-154431: Fix data race in `sys.audithook` (GH-154462) (#154477)** (e9d9fd9)
- **[3.15] gh-154437: Fix test_getcwd_long_path on DragonFly BSD (GH-154438) (GH-154454)** (314e753)
- **[3.15] gh-154366: Fix test_asyncio.test_sendfile timing out on DragonFly BSD (GH-154367) (GH-154371)** (074a365)
- **[3.15] gh-154416: Fix hanging test_tcflow on DragonFly BSD (GH-154417) (GH-154423)** (566d678)
- **[3.15] gh-154399: Fix venv activate.csh in a non-interactive shell (GH-154400) (GH-154408)** (a5e2d74)
- **[3.15] gh-154379: Fix test_epoll on Solaris (GH-154380) (GH-154382)** (098eb36)
- **[3.15] gh-154345: Fix test_posix_pty_functions() killing the worker on Solaris (GH-154346) (GH-154354)** (e265465)
- **[3.15] gh-154352: Fix killing a worker process in regrtest on OpenBSD (GH-154353) (GH-154360)** (b8c7ff9)
- **[3.15] gh-154275: Fix cleanup code in `_Py_make_parameters` (GH-154341) (#154342)** (b3e046c)
- **[3.15] gh-154326: Fix test_fsize_not_too_big() on Solaris (GH-154329) (GH-154334)** (0fd1209)
- **[3.15] gh-103925: Fix csv.Sniffer for a quoted field ending a CRLF line (GH-103926) (GH-154322)** (c0129a0)
- **[3.15] gh-154307: Fix TemporaryDirectory cleanup on DragonFly BSD (GH-154309) (GH-154311)** (b7e0855)
- **[3.15] gh-154291: Fix socket.has_dualstack_ipv6() on DragonFly BSD (GH-154292) (GH-154299)** (4294605)
- **[3.15] gh-154289: Fix test_socket.testGetServBy on DragonFly (GH-154290) (GH-154294)** (9a52f94)
- **[3.15] gh-154260: Fix test_flush_parameters on DragonFly BSD (GH-154261) (GH-154269)** (c6c1e9d)
- **[3.15] gh-154258: Fix mmap.resize() crash on NetBSD growing a shared anonymous mapping (GH-154259) (GH-154262)** (707802f)
- **[3.15] gh-154167: Fix test suite hang when SIGINT is ignored (GH-154168) (GH-154265)** (1ad8381)
- **[3.15] Fix two typos in two stdlib docstrings (GH-153479) (#154252)** (6a4a108)
- **[3.15] Fix typo in C API Type Object Structures documentation (GH-154249) (#154250)** (7d485fe)
- **[3.15] gh-154227: Fix os.posix_openpt() on OpenBSD (GH-154228) (GH-154235)** (4aae128)
- **[3.15] gh-154225: Fix os.openpty() acquiring a controlling terminal on Solaris (GH-154229) (GH-154238)** (2aee2fa)
- **[3.15] gh-154226: Fix test_posix_pty_functions on Solaris (GH-154230) (GH-154241)** (b05ed78)
- **[3.15] gh-154218: Fix test_posix_fallocate on file systems that do not support posix_fallocate() (GH-154219) (GH-154232)** (0dc3a04)
- **[3.15] gh-154176: Fix locale.strxfrm() crash on DragonFly BSD (GH-154177) (GH-154217)** (2e4a1fa)
- **[3.15] gh-127049: fix race condition in asyncio signalling an unrelated process with ThreadedChildWatcher (GH-153810) (#154220)** (346c7af)
- **[3.15] Fix grammatical typos in documentation (GH-154181) (#154190)** (b7c3b52)
- **[3.15] gh-154046: docs: fix dead link to codahale timing attacks article in secrets.rst (GH-154047) (#154213)** (404a81d)
- **[3.15] gh-119710: fix asyncio Process.wait() to finish on process exit and not wait for closing of pipes (GH-151983) (#154170)** (a706e80)
- **[3.15] fix ResourceWarnings of test_kill_issue43884 in asyncio (GH-154178) (#154183)** (2261368)
- **[3.15] gh-151022: Fix remote debugging linetable reads (GH-151036) (#154187)** (b3ee190)
- **[3.15] Fix typos in `Py_tp_base` macro documentation (GH-154150) (#154180)** (9bb1271)

### Backend
- **Python 3.15.0rc1** (37e98da)
- **[3.15] gh-154902: Type-check the SET_ADD operand (#155071)** (398dbef)
- **[3.15] gh-75279: Document that asyncio StreamWriter.drain() may not yield to the event loop (GH-155132) (#155134)** (d768d94)
- **[3.15] gh-155063: Upgrade bundled pip to 26.2 (GH-155064) (#155137)** (b62b338)
- **[3.15] Backport GH-148874: Make sure that mngr.__exit__() is always called in a with statement (GH-150911) (GH-154830)** (e972f76)
- **[3.15] gh-154738: Propagate reparse-deferral setting to pyexpat subparsers (GH-154739) (GH-154990)** (9086d9b)
- **[3.15] gh-152384: pixi-packages: use `flags` to define variants (GH-152385) (#155091)** (07e73c0)
- **[3.15] Update Android Gradle plugin to version 9.3.1 (GH-155012) (#155038)** (8fb615e)
- **[3.15] gh-154848: Enforce frame boundaries in the C unpickler (GH-154893) (GH-154977)** (c19b4a6)
- **[3.15] gh-80678: Document the preferred delimiters of csv.Sniffer (GH-154336) (#154589)** (df1218e)
- **[3.15] Improved test coverage for codeop.py. (GH-154100) (#154938)** (a19a086)
- **[3.15] gh-105812: Make use of the Sphinx `deco` role in documentation (GH-139598) (#154979)** (b3bfeae)
- **[3.15] gh-153404: Silently ignore non-decimal digits in robots.txt Crawl-delay and Request-rate (GH-153405) (#153830)** (27372c2)
- **[3.15] gh-94543: Improve tempfile.mkstemp documentation about cleanup (GH-154748) (#154964)** (485c624)
- **[3.15] Some tidying for GitHub Actions (GH-154950) (#154961)** (852d804)
- **[3.15] Update bytecode magic number for the 3.15 release candidate (GH-154881) (#154955)** (aca93c8)
- **[3.15] gh-135828: Disable syntax highlighting in Using Python on macOS (GH-150074) (#154958)** (608761b)
- **[3.15] CODEOWNERS: Remove everyone from `removed-ids.txt` (GH-154886) (#154957)** (0791c2b)
- **[3.15] GH-148468: Accept string-like proxy objects in colorized argparse help (GH-154653) (#154946)** (c22cbf8)
- **[3.15] Minor fixes for Android (GH-154895) (#154905)** (18e1144)
- **[3.15] Make `os.get_terminal_size` check `isatty` before calling `ioctl` (GH-154885) (#154903)** (cfd8e2a)
- **[3.15] gh-131565: Implement ctypes.util.dllist() in the _ctypes extension (GH-154255) (GH-154882)** (7bd27e6)
- **[3.15] gh-62534: Document that three-argument type() does not call __prepare__ (GH-154028) (GH-154165)** (23bf108)
- **[3.15] gh-132604: Track deprecation related to runtime-checkable protocols (3.20) (GH-154790) (#154809)** (c532841)
- **[3.15] gh-152674: Avoid quadratic behavior in xml.etree.ElementPath index predicates (GH-152676) (GH-154812)** (02c08e6)
- **[3.15] gh-122931: Allow stable abi3 API extensions to include a multiarch tuple in the filename (GH-152461) (GH-154772)** (23b2b40)
- **[3.15] gh-154661: Reorganize difflib documentation (GH-154662) (#154805)** (2e2dc91)
- **[3.15] gh-142349: Clarify lazy import filters have positional-only parameters (GH-144856) (GH-154808)** (3e670c3)
- **[3.15] gh-154775: Don't accept duplicate plus sign when matching complex number (GH-154776) (GH-154802)** (80e6fa8)
- **[3.15] gh-154070: Build the curses module wide by capability, not by name (GH-154071) (GH-154765)** (383c7bd)
- **[3.15] gh-154746: Update docstring for `collections.Counter` (GH-154792) (GH-154793)** (5cc8361)
- **[3.15] gh-150208: Avoid double-quoting string values in sysconfigdata (GH-150209) (GH-154773)** (249a513)
- **[3.15] Update mypy to 2.3 (GH-154764) (#154766)** (095a71d)
- **[3.15] gh-140326: disable the relative import in asyncio REPL (GH-140327) (#154628)** (c6a9eff)
- **[3.15] gh-151955: Allow more ParamSpec and TypeVarTuple bounds (GH-151956) (#152101)** (df66175)
- **[3.15] gh-93251: Decode localized socket error messages from the locale encoding (GH-154683) (GH-154723)** (6e6884b)
- **[3.15] gh-152431: update StreamReader transport after StreamWriter.start_tls() (GH-152432) (#154630)** (cf2e825)
- **[3.15] gh-120866: Document behavior change of asyncio.Server.wait_closed() since 3.12 (GH-154676) (#154677)** (c867740)
- **[3.15] GH-153809: Untrack TaskObj from GC before calling unregister_task (GH-154563) (#154665)** (8f99c7a)
- **[3.15] gh-151540: Use a selector event loop in the happy-eyeballs tests (GH-153375) (#154623)** (f188bc3)
- **[3.15] gh-118150: warn in doc about results asymmetry for difflib junk (GH-153892) (GH-154658)** (1f53f91)
- **[3.15] gh-134745: Remove dead code in `thread_nt.h` left by gh-134747 (GH-154338) (#154655)** (4245891)
- **[3.15] gh-139445: Skip pyrepl tests if the terminal is not supported (GH-154497) (GH-154529)** (aed19a7)
- **[3.15] gh-154502: Disable junk filling in the OpenBSD allocator in test_capi (GH-154503) (GH-154513)** (a47c03d)
- **[3.15] gh-154272: Skip more forkserver tests if the start method is unavailable (GH-154499) (GH-154505)** (6bc3e6c)
- **[3.15] gh-154460: Do not use wcsftime() on OpenBSD (GH-154461) (GH-154474)** (7676f95)
- **[3.15] gh-154272: Skip forkserver tests when the start method is unavailable (GH-154274) (GH-154468)** (5f3b228)
- **[3.15] gh-154014: Initialize cold executor vm_data fields (GH-154142) (GH-154457)** (e8206b6)
- **[3.15] gh-154441: Skip the scheduler tests if the API requires privileges (GH-154442) (GH-154447)** (731d94d)
- **[3.15] gh-154007: Improve test coverage for the `shlex` module (GH-154009) (#154445)** (f9ebe5e)
- **[3.15] Test `object_hook` and pickleability of some JSON components (GH-154155) (#154374)** (539bb54)
- **[3.15] gh-154427: Check the access time in UtimeTests only if it is stored (GH-154428) (GH-154432)** (d4e3529)
- **[3.15] gh-154414: Skip test_tcsendbreak on DragonFly BSD (GH-154415) (GH-154426)** (034408f)
- **[3.15] gh-154394: Skip test_tcsendbreak on OpenBSD (GH-154397) (GH-154411)** (35560dc)
- **[3.15] gh-153741: Harden IDLE GUI tests for newer Tk and display scaling (GH-153742) (#154404)** (a111ea1)
- **[3.15] gh-154389: Do not use uuid_create() on OpenBSD (GH-154390) (GH-154391)** (fe66754)
- **[3.15] gh-153881: Atomically load `dk_nentries` in `_PyObject_IsInstanceDictEmpty` (GH-153882) (#154349)** (682610d)
- **[3.15] gh-154308: Clear file flags in os_helper.rmtree() (GH-154310) (GH-154314)** (0f49745)
- **[3.15] gh-154325: Skip test_add_file_after_2107() if the file system rejects the timestamp (GH-154328) (GH-154331)** (4f55c53)
- **[3.15] gh-154279: Skip readline completion tests that fail on DragonFly and illumos (GH-154280) (GH-154282)** (91839e5)
- **[3.15] gh-154303: Skip test_sqlite3 CLI completion tests on OpenBSD (GH-154304) (GH-154305)** (8ba1b04)
- **[3.15] gh-148665: Enable socket.shutdown function for emscripten (GH-148666) (#154319)** (4eebb38)
- **[3.15] gh-154275: Do not crash on deeply nested `__parameters__` in `GenericAlias` (GH-154277) (#154306)** (d1494f0)
- **[3.15] gh-154283: Make threading.get_native_id() unique across processes on DragonFly (GH-154287) (GH-154293)** (387f7cd)
- **[3.15] gh-154240: Skip cmsg truncation socket tests on OpenBSD and DragonFly (GH-154244) (GH-154286)** (6747bcf)
- **[3.15] gh-125860: Skip separate-SCM_RIGHTS socket tests on NetBSD, OpenBSD and DragonFly (GH-154239) (GH-154245)** (1be6770)
- **[3.15] gh-99968: FAQ: dev versions end in `+dev` (GH-153262) (#154268)** (84e0673)
- **[3.15] gh-154211: Skip C-stack exhaustion tests when the C stack is huge (GH-154212) (GH-154216)** (3dd4fdc)

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