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

_195+ commits._

### Features
- **[3.15] gh-144133: Add a warning to the `encodings.punycode` documentation (GH-151812) (#151922)** (ef171b6)
- **[3.15] gh-151678: Add tests for tkinter.simpledialog (GH-151856) (GH-151869)** (2e4dddf)
- **[3.15] gh-151678: Add interactive tests for tkinter.simpledialog (GH-151794) (GH-151802)** (f43f438)
- **[3.15] gh-151678: Add tests for tkinter widget virtual events (GH-151793) (GH-151805)** (ba8548c)
- **[3.15] gh-151678: Add tests for the remaining tkinter Misc, Wm and Text methods (GH-151782) (GH-151799)** (86cdbd8)
- **[3.15] gh-151678: Add tests for tkinter.filedialog (GH-151781) (GH-151795)** (70d495a)
- **[3.15] gh-151678: Add tests for tkinter.dnd (GH-151780) (GH-151790)** (3618730)
- **[3.15] gh-151678: Add tests for tkinter.scrolledtext (GH-151753) (GH-151759)** (88f7941)
- **[3.15] gh-151678: Add tests for tkinter font, image, variable, Misc and Wm methods (GH-151751) (GH-151754)** (a30acf2)
- **[3.15] gh-151678: Add tests for tkinter.ttk methods (GH-151736) (GH-151741)** (ba0cae1)
- **[3.15] gh-151678: Add tests for tkinter Misc, Wm and geometry manager methods (GH-151732) (GH-151737)** (81ceb56)
- **[3.15] gh-151693: Add curses tests for panels, textpad, and window behavior (GH-151694) (GH-151719)** (d81cc86)
- **[3.15] gh-151678: Add tests for the remaining tkinter widgets (GH-151687) (GH-151725)** (13529d4)
- **[3.15] gh-151678: Add tests for tkinter.Canvas (GH-151683) (GH-151716)** (be26b8d)
- **[3.15] gh-151678: Add tests for tkinter.Text (GH-151681) (GH-151702)** (81e9c08)
- **[3.15] gh-151678: Add tests for tkinter.Listbox (GH-151686) (GH-151712)** (1495415)
- **[3.15] gh-151678: Add tests for tkinter.Menu (GH-151685) (GH-151709)** (cfe4619)
- **[3.15] gh-141510 Add frozendict fast paths to abstract.c (GH-150692) (#151704)** (2c09c0e)
- **[3.15] gh-151427: add  'not macOS' and 'not iOS' restrictions on availability state of some functions in `os` module. (GH-151537) (#151699)** (7a5f5f5)
- **[3.15] gh-86726: Add few missing versionadded directives (GH-151662) (GH-151663)** (cafe39f)
- **[3.15] gh-151623: Add missing curses docstrings and document intrflush() (GH-151632) (GH-151641)** (d9a1bff)
- **[3.15] Add `.toml` to `.editorconfig` (GH-151481) (#151491)** (cc91b26)
- **[3.15] gh-138991: Update dataclass documentation for new eq behavior in Python 3.13 (GH-139007) (#151372)** (f3632b4)
- **[3.15] gh-136880: Add warning about PYTHONPATH (GH-151098) (GH-151299)** (f3316ca)
- **[3.15] add asyncio guide for Free-Threaded Python (GH-150456) (#151257)** (637746d)
- **[3.15] Add yet one assertion in test_set_text_charset_cp949 (GH-151224) (GH-151237)** (7a76730)
- **[3.15] gh-151126: Add missing `PyErr_NoMemory` in `_winapi` module (GH-151154) (#151180)** (489d6af)
- **[3.15] Docs: Only add `profiling-sampling-visualization.{css,js}` to files when necessary (GH-151150)** (22d32b6)
- **[3.15] gh-151130: Add more tests for PyWeakref_* C API (GH-151131) (GH-151140)** (2d432f2)
- **[3.15] gh-106318: Add examples to the `str.isdigit()` method docs  (GH-144721)** (86e291e)

### Fixes
- **[3.15] gh-151905: fix memory error handling in PyFrame_GetBack (GH-151906) (#151919)** (fe5dc86)
- **[3.15] gh-75666: Fix a reference leak in tkinter event bindings (GH-151808) (GH-151958)** (752e23e)
- **[3.15] gh-151665: Fix inspect.signature() on type alias and type parameter evaluators (#151787)** (453714a)
- **[3.15] gh-151845: Fix formatfloat() return-value contract in unicode_format.c (GH-151846) (#151865)** (f5119a5)
- **[3.15] gh-151770: Fix `datetime.fromisoformat()` on an out-of-range month w/ a 24:00 time (GH-151771) (#151809)** (45a0043)
- **[3.15] gh-151695: Fix use-after-free of the curses screen encoding (GH-151696) (GH-151703)** (022a018)
- **[3.15] gh-151229: Add CI to prevent JIT stress test regression (GH-151647) (gh-151670)** (40fa04e)
- **[3.15] gh-151436: Fix missing `tstate->last_profiled_frame` updates (GH-151437) (#151612)** (3135ab8)
- **[3.15] gh-86726: Fix the documented return type of tkinter info_patchlevel() (GH-151655) (GH-151658)** (821e97b)
- **[3.15] gh-86726: Fix "deprecated" directive for wm_attributes (GH-151652) (GH-151654)** (0125168)
- **[3.15] gh-151510: Fix __lazy_import__ without frame (GH-151511) (#151610)** (8fe5897)
- **[3.15] gh-150966: Fix live profiling error tests (GH-151020) (#151604)** (1e7fb93)
- **[3.15] gh-151546: Fix stack limits on musl (#151548) (#151583)** (a5c5edd)
- **[3.15] gh-150771: Fix email serialization for shift_jis and euc-jp (GH-151120) (GH-151541)** (ab61101)
- **[3.15] gh-151223: fix tsan data races in load global specializations (GH-151393) (#151513)** (255b3ff)
- **[3.15] gh-151461: Fix encoding-related exception handling in file tokenizer (GH-151462) (GH-151470)** (89e178d)
- **[3.15] gh-151424: Fix impossible stack traces in `RemoteUnwinder(..., cache_frames=True)` by copying chunks on cache miss (GH-151426) (#151459)** (75289a9)
- **[3.15] gh-151403: Fix use-after-free when an argv item's __fspath__ mutates args (GH-151404) (#151445)** (5dd3217)
- **[3.15] gh-151443: Fix documented default of  `unittest.mock.mock_open`'s `read_data` parameter (GH-151444) (#151450)** (56ad650)
- **[3.15] Docs: Fix method directive signatures in `enum` docs (GH-151429) (#151434)** (8b29146)
- **[3.15] Fix typos in the `curses.ascii` module documentation (GH-129300) (#151413)** (04973e7)
- **[3.15] gh-151284: Fix test_capi on UBSan (GH-151286) (#151323)** (5caef85)
- **[3.15] gh-151126: Fix crash on unset memory error in `ctypes.get_errno` (GH-151382) (#151398)** (3603bd3)
- **[3.15] gh-151297: Fix undefined behavior in `_PyObject_MiRealloc` (GH-151358) (GH-151388)** (a2e5516)
- **[3.15] gh-151065: Copy fix for memory leak from mimalloc upstream (GH-151066) (GH-151383)** (a12a0e9)
- **[3.15] gh-150285: Fix too long docstrings in GenericAlias and __class_getitem__ (GH-151354) (GH-151367)** (f3fd7b8)
- **[3.15] gh-151126: Fix missing memory error in `os._path_splitroot` (GH-151339) (#151360)** (b53743f)
- **[3.15] gh-151228: fix data race on clearing embedded dict values (GH-151330) (#151359)** (85404a0)
- **[3.15] gh-101100: Fix Sphinx nitpick in `unittest.mock.rst` (GH-151302) (#151355)** (fdf0132)
- **[3.15] gh-151112: Fix crash in `compiler_mod()` when entering the current compilation unit fails (GH-151234) (#151350)** (42e81e3)
- **[3.15] gh-139588: Fix nondeterministic `make latex` doc build under parallel make (GH-151343) (#151352)** (cedb4d6)
- **[3.15] gh-150397: Fix pyexpat bigmem test (GH-151329) (#151348)** (0d4d4cd)
- **[3.15] gh-123619: Fix PyUnstable_Object_EnableDeferredRefcount() (GH-151260) (#151326)** (dc5ebe3)
- **[3.15] gh-151177: Fix race condition in `_testembed` (GH-151293) (GH-151312)** (491768d)
- **[3.15] gh-151295: Fix use-after-free in bytes.join()/bytearray.join() via re-entrant __buffer__ (GH-151296) (GH-151304)** (9d09991)
- **[3.15] gh-151278: Fix test_faulthandler on UBSan (GH-151279) (#151281)** (e8d914f)
- **[3.15] gh-151126: Fix missing memory errors in `_interpchannelsmodule.c` (GH-151239) (#151265)** (54ee910)
- **[3.15] gh-143988: Fix re-entrant mutation crashes in socket sendmsg/recvmsg_into (GH-143987) (#151246)** (9261f8b)
- **[3.15] Docs: Fix typos in the "Memory Management" section (GH-151243) (GH-151247)** (9761ef9)
- **[3.15] gh-150988: Fix refleak in `OSError` when attrs are set before `super().__init__()` (GH-150990) (#151240)** (7201b9d)
- **[3.15] gh-98894: Fix DTrace test_check_probes for shared builds (GH-151122) (#151235)** (153607e)
- **[3.15] gh-80384: Fix docs for PyWeakref_NewRef() and PyWeakref_NewProxy() (GH-151146)** (0b6adeb)
- **[3.15] gh-143008: Fix race re-initializing TextIOWrapper (#151203)** (0318867)
- **[3.15] gh-150700: Fix class-scope inline comprehensions when nested scopes reference `__class__` and friends (GH-150735) (#151211)** (73e5d44)
- **[3.15] gh-151112: Fix double free in `assemble_init` when out of memory (GH-151142) (#151205)** (50765f4)
- **[3.15] gh-150285: Fix too long docstrings in the asyncio package (GH-151074) (GH-151172)** (2aba3d9)
- **[3.15] gh-150285: Fix too long docstrings in the concurrent package (GH-151076) (GH-151173)** (ca0cb46)
- **[3.15] gh-109503: Fix document for shutil.move() on usage of os.rename() since it's inaccurate (GH-109507) (GH-150611)** (19e4b8f)
- **[3.15] gh-151039: Fix a crash when `_datetime` types outlive `_datetime` module (GH-151044) (#151143)** (3199f3b)
- **[3.15] gh-151126: Fix missing `PyErr_NoMemory()` in `remove_unused_consts` (GH-151127) (#151134)** (8a2bf2a)
- **[3.15] gh-148932: Fix `profiling.sampling` on Windows virtual environments (GH-150541) (#151097)** (fd252e8)
- **[3.15] gh-151070: Fix class referencing typo in collections.abc docs (GH-151088) (GH-151110)** (fd4f9fa)
- **[3.15] gh-149816: Fix SNI callback callable race (GH-150018) (GH-150099)** (9997975)
- **[3.15] gh-151019: Fix test_os on 32-bit FreeBSD (GH-151087) (#151093)** (199751e)
- **[3.15] gh-101100: Fix Sphinx warnings in 'Buffer Object Structures' documentation (GH-151058)** (1f3ee92)
- **[3.15] Docs: Fix missing colon in `bisect` example function (GH-151061) (GH-151067)** (550d9b6)

### Backend
- **Python 3.15.0b3** (cf16a33)
- **[3.15] gh-151722: Defer GC tracking of frozendict to end of construction (gh-151740) (gh-151954)** (2957ff7)
- **[3.15] gh-62480: De-personalize docs on using the C API (GH-151784) (#151936)** (e187964)
- **[3.15] gh-86726: Document tkinter method-name conflicts (GH-151917) (GH-151926)** (59706a6)
- **[3.15] Remove 3.15 pending-removals from deprecations index (#151873)** (21f96ea)
- **[3.15] gh-142387: Revert Android testbed to API level 35 (GH-151816) (#151883)** (a940f93)
- **[3.15] RTD Previews: Get correct base branch for backports (GH-150690) (#151867)** (a2d2ee8)
- **[3.15] gh-86726: Document tkinter.simpledialog query options and Dialog.result (GH-151851) (GH-151852)** (aa83ca3)
- **[3.15] gh-150831: docs: clarify generator, generator function, and generator iterator in glossary (GH-150905) (#151840)** (37aa973)
- **[3.15] gh-150836: Mount embedded Tk ZIP in _tkinter on Windows (GH-151735)** (b83a217)
- **[3.15] gh-150902: Optimize PyCriticalSection2 to skip locking the same locks held by the current CS2 (gh-151554)** (80d7626)
- **[3.15] gh-151693: Make the curses tests portable to other curses implementations (GH-151729) (GH-151733)** (b010116)
- **[3.15] gh-141510 Document and test frozendict class matching behaviour (GH-150799) (#151701)** (7e36838)
- **[3.15] gh-101100: Document os.uname_result and os.statvfs_result with related constants (GH-151301) (GH-151692)** (3b38caf)
- **[3.15] gh-146353: Document `PyBytesWriter_GetData` pointer validity (GH-151418) (GH-151664)** (fd3c510)
- **[3.15] gh-86726: Document the full public API of tkinter (GH-151579) (GH-151649)** (82b7570)
- **[3.15] gh-151229: Finalize JIT tracer in test eval-frame stub (gh-151609) (gh-151648)** (c0582db)
- **[3.15] gh-151623: Improve curses documentation style (GH-151635) (#151636)** (7170c95)
- **[3.15] gh-151623: Improve curses documentation and docstrings (GH-151625) (GH-151628)** (7aa41c4)
- **[3.15] gh-149044: Improve Py_tp_base[s] docs & error message for non-type bases (GH-151252) (GH-151606)** (e9c7cc1)
- **[3.15] gh-120665: make unittest loaders avoid loading test cases that are abstract base classes (GH-120666) (#151601)** (6d29a08)
- **[3.15] gh-151544: Fixes CVE-2026-12003 by removing the fallback to %VPATH%/Modules/Setup.local for discovering sources in getpath.py (GH-151545)** (a86de0b)
- **[3.15] gh-151584: Remove `PyUnstable_Module_SetGIL` call in `_remote_debugging` (GH-151585) (#151603)** (821e5d7)
- **[3.15] gh-151593: Use timeout on GitHub Action TSan jobs (GH-151594) (#151597)** (2a5ed22)
- **[3.15] gh-151496: Use process groups in test_dtrace (GH-151512) (#151589)** (d7e7d85)
- **[3.15] gh-151218: Replace sys.flags in PyConfig_Set() (GH-151402) (#151552)** (ff6e973)
- **[3.15] gh-151519: Check effective gid in `_test_all_chown_common` group-0 guard (GH-151521) (#151549)** (19bf6a3)
- **[3.15] gh-149716: Document PySlot_DATA for Py_mod_gil and Py_mod_multiple_interpreters (GH-150053) (#151322)** (488a03b)
- **[3.15] gh-151522: Guard against None transport in slow-socket SSL test (GH-151523) (#151528)** (1a8e743)
- **[3.15] gh-151422: Don't link libffi into _ctypes_test.so (GH-151423) (#151516)** (e2c7fa7)
- **[3.15] gh-148853: Catch PermissionError in test in_systemd_nspawn_sync_suppressed() (GH-148854) (#151506)** (b5eea71)
- **[3.15] gh-149671: Restore compatibility with setuptools -nspkg.pth files in site module (GH-151319) (#151489)** (f7ab7c4)
- **[3.15] Skip test_highly_nested_objects_decoding during the PGO profile task. (GH-151460) (#151468)** (1b457d3)
- **[3.15] gh-151390: Colorize `match +` and `match -` in the REPL (GH-151391) (#151476)** (114a7a8)
- **[3.15] gh-139837: Document attributes of objects recorded by warnings.catch_warnings (GH-139893) (GH-151472)** (03873bb)
- **[3.15] gh-77328: Update `base64` module RFC references to RFC 4648 (GH-151275) (#151438)** (5156e8f)
- **[3.15] gh-101267: ProcessPoolExecutor no longer shares 1 BrokenProcessPool exception among all failed futures (GH-101268) (#151430)** (5d7cf16)
- **[3.15] Docs: avoid repetitions of class references in functions.rst (GH-150891) (#151405)** (bdb53b5)
- **[3.15] gh-151337: Avoid possible memory leak in `_tkinter.c` on Windows. (GH-151340) (GH-151379)** (e87e732)
- **[3.15] gh-150285: Suppress showing the __getstate__() comment in the help for dataclasses (GH-151328) (GH-151331)** (dc7ca40)
- **[3.15] gh-151238: Check for `_get_resized_exprs` failure in `_PyPegen_{joined,template}_str` (GH-151259) (#151344)** (f3532d6)
- **[3.15] gh-151112: Move an `assert` that may fail in `cfg_builder_check` (GH-151153) (#151313)** (e3b94d8)
- **[3.15] Drop historical `:author:`s from HOWTOs (GH-151091) (#151310)** (a8ddc9a)
- **[3.15] gh-151253: Dump the Python path configuration on _PyCodec_InitRegistry() failure (#151250) (#151269)** (10f616c)
- **[3.15] GHA: Display output when a sanitizer test fails (GH-151268) (#151272)** (040cee9)
- **[3.15] gh-109940: Respect VIRTUAL_ENV_DISABLE_PROMPT in activate.bat (GH-151215) (GH-151225)** (5c83037)
- **[3.15] gh-141984: Reword the Generator expressions section (GH-150518) (GH-151261)** (68d2372)
- **[3.15] gh-89554: Document socket.SocketType as a class (GH-150683) (#151244)** (de5da36)
- **[3.15] gh-151163: Update Android, macOS installer, and Windows builds to SQLite 3.53.2 (GH-151204)** (e25cc9e)
- **[3.15] gh-151159: Update CI to use latest SSL library versions (GH-151199)** (dcb049f)
- **[3.15] gh-151159: Bump OpenSSL versions for iOS and Android (GH-151197)** (c3d0205)
- **[3.15] gh-151159: Update Windows builds to use OpenSSL 3.5.7 (GH-151189)** (f1ca289)
- **[3.15] gh-151159: Update macOS installer to use OpenSSL 3.5.7. (GH-151171) (#151192)** (427790f)
- **[3.15] GH-59633: Clarify dest collisions in argparse docs (GH-150987) (#151188)** (ba8d0e3)
- **[3.15] GH-61082: Clarify nargs='*' positional default behavior (GH-150989) (#151168)** (fda4f22)
- **[3.15] GH-54732: Tweak wording around empty lines in argument files (GH-150980) (#151165)** (804be0a)
- **[3.15] gh-149321: Remove lazy_imports=none startup mode (GH-149389) (#150129)** (83e26a4)
- **[3.15] gh-150633: Minor improvement of a newly added test (GH-151103) (#151106)** (eeba221)
- **[3.15] gh-150633: Properly handle null characters in the name when importing frozen modules (GH-150634) (GH-151100)** (5751633)
- **[3.15] gh-119949: Refactor test_exc() helper in test_format.py (GH-135452) (GH-150329)** (e795bd4)
- **[3.15] gh-141623: Clarify operator function descriptions (GH-141846)** (39f2322)
- **[3.15] Mention `frozendict` in `object.__hash__()` documentation (GH-148867) (#151077)** (0f964f4)
- **[3.15] Update an error message in the 'Functional Programming HOWTO' (GH-151047)** (2185b73)
- **[3.15] gh-150599: Prevent bz2 decompressor reuse after errors (GH-150600)** (d3ca269)

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