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

_207+ commits._

### Features
- **[3.15] gh-148508: Add another common pattern for iOS SSL failures to test_ssl (GH-150442) (#150697)** (a4f3336)
- **[3.15] gh-150372: Add missing null check on completer_word_break_characters in readline.c (GH-150251) (GH-150628)** (4ce8de3)
- **[3.15] gh-135898: Add section to free-threading howto about memory usage (GH-143279) (#150607)** (b952986)
- **[3.15] Add a security warning about `pydoc`'s HTTP server (#150573)** (59e709b)
- **[3.15] Add prominent crash warning to `ctypes` docs (GH-150410) (GH-150547)** (0e08bba)
- **[3.15] gh-149816: add missing critical section on self in buffered_iternext (GH-150295) (#150305)** (ca59d75)
- **[3.15] gh-149902: Remove dead packaging docs link and add a new section for external resources (GH-150030) (#150241)** (50c5c07)
- **[3.15] Add summary table to the `unicodedata` doc (GH-149957) (#150161)** (dea552c)
- **[3.15] gh-143387: Add news blurb for importlib.metadata highlighting the change. (GH-150169) (#150171)** (fb6984f)
- **[3.15] gh-134887: Add references to `locale` module for locale-aware number formatting references in `string` module docs (GH-134888) (GH-150120)** (4baf3e5)
- **[3.15] gh-142349: Add `help("lazy")` support (GH-149886) (#149889)** (6136ad6)
- **[3.15] gh-138489: Add build-details.json generation to PC/layout (GH-149153)** (a578555)
- **[3.15] gh-149801: Add IANA registered names and aliases with leading zeros (GH-149804) (GH-149870)** (176d0f5)
- **[3.15] gh-149144: Use decodeURIComponent() for UTF-8 support in js_output() (GH-149157) (GH-149846)** (ed27363)

### Fixes
- **[3.15] Fix typos in C API documentation (GH-149588) (#149662)** (8fcec28)
- **[3.15] gh-149079: Fix O(n^2) canonical ordering in unicodedata.normalize() (GH-149080) (#150776)** (c5512bd)
- **[3.15] gh-149738: Fix segmentation fault bug in sqllite3 (GH-149754) (#150768)** (1835400)
- **[3.15] Fix two typos in 'Exception Handling' C-API documentation (GH-150674) (#150772)** (0472179)
- **[3.15] gh-150429: Fix sampling profiler generator stack test (GH-150433) (#150734)** (a4781e6)
- **[3.15] gh-121109: Fix performance of tarfile reading with "r|*" (GH-121296) (GH-150604)** (9c1e3af)
- **[3.15] gh-149534: Fix unification of `defaultdict` and `frozendict` with `|` (GH-149539) (#150709)** (3a12e9f)
- **[3.15] gh-150157: Fix critical section for PyDict_Next() in _pickle.c (GH-150158) (#150711)** (b65c282)
- **[3.15] gh-149046: fix: correctly handle `str` subclasses in `io.StringIO` (GH-149047) (#150706)** (e60e8cf)
- **[3.15] gh-131178: Fix mimetypes CLI docs, mention that errors go to stdout (GH-149683) (#150655)** (2ff80c7)
- **[3.15] gh-141444:fix broken URLs and examples in urllib.request.rst (GH-144863) (#150642)** (ccfa50a)
- **[3.15] gh-129851: Fix the documentation for -m command (GH-129862) (GH-150614)** (e4cdee6)
- **[3.15] gh-149489: Fix ElementTree serialization to HTML (GH-149490) (GH-150595)** (2f91315)
- **[3.15] gh-150107: Fix asyncio sendfile fallback ignoring non-zero offset (GH-150270) (#150570)** (b980552)
- **[3.15] gh-150046: Fix `test_add_python_opts` to ignore `PYTHON*` env vars (GH-150089) (#150561)** (7766648)
- **[3.15] gh-149861: Fix rule in match statement `case_block` PEG grammar (GH-149908)** (e565d12)
- **[3.15] gh-149571: Fix the C implementation of Element.itertext() (GH-149929) (GH-150509)** (d2b10e7)
- **[3.15] gh-150175: Fix ThreadingMock call_count race condition (GH-150176) (#150182)** (528356e)
- **[3.15] gh-149931: Fix memory leaks on failed realloc (GH-149932) (#150439)** (d73e433)
- **[3.15] gh-150387: Fix hang in test_run_failed_script_live on slow buildbots (GH-150405) (#150420)** (d23b06b)
- **[3.15] gh-149156: Fix perf trampoline crash after fork (GH-150347) (#150394)** (e2362aa)
- **[3.15] gh-145896: Fix typos and stale docstrings in the traceback module (GH-145897) (GH-150383)** (28037c2)
- **[3.15] gh-150374: Fix double release of import lock in lazy import reification (GH-150376) (#150378)** (acd402e)
- **[3.15] gh-150285: Fix too long docstrings in some Python modules (GH-150366) (GH-150375)** (03244b9)
- **[3.15] gh-150285: Fix too long docstrings in _wmi.exec_query (GH-150373) (GH-150377)** (5292bb4)
- **[3.15] gh-149449: Fix use-after-free in `_PyUnicode_GetNameCAPI` (GH-150323) (#150352)** (c95aa3a)
- **[3.15] gh-150285: Fix too long docstrings in Argument Clinic code (GH-150338) (GH-150350)** (cf73b17)
- **[3.15] gh-150285: Fix too long docstrings in the os module (GH-150296) (GH-150341)** (739552c)
- **[3.15] gh-150285: Fix too long docstrings in the sqlite3 module (GH-150290) (GH-150340)** (79937e3)
- **[3.15] gh-150285: Fix too long docstrings in the pyexpat module (GH-150294) (GH-150337)** (baf22f3)
- **[3.15] gh-149619: Fix `_remote_debugging` permissions error on Linux (GH-150012) (#150339)** (d52dad6)
- **[3.15] gh-150285: Fix too long docstrings in builtins (GH-150293) (GH-150336)** (ef89cf5)
- **[3.15] gh-150285: Fix too long docstrings in the zstd module (GH-150291) (GH-150335)** (d3e2a13)
- **[3.15] gh-150285: Fix too long docstrings in the decimal module (GH-150288) (GH-150333)** (e8f534d)
- **[3.15] gh-150285: Fix too long docstrings in the io module (GH-150287) (GH-150332)** (cfb2e43)
- **[3.15] gh-150285: Fix too long docstrings in the curses module (GH-150286) (GH-150331)** (29cbb44)
- **[3.15] gh-150285: Fix too long docstrings in the _remote_debugging module (GH-150289) (#150334)** (1b7ab11)
- **[3.15] gh-150178: Fix refcount leaks in hamt allocation failure paths (GH-150179) (#150303)** (6b17d1a)
- **[3.15] gh-146452: Fix pickle segfault on concurrent mutation of dict in pickle (GH-146470) (#150292)** (77cc442)
- **[3.15] Revert "[3.15] gh-146452: Improve locking granularity in pickle's batch_dict_exact and fix race condition (GH-150025) (#150039)" (#150262)** (795dd3b)
- **[3.15] gh-133998: Fix gzip file creation when time is out of range (GH-134278) (GH-150221)** (b039d1b)
- **[3.15] gh-149819: fix .pth and .start file processing in subprocess when inheriting PYTHONPATH (GH-150177) (#150202)** (233cf75)
- **[3.15] gh-107398: Fix tarfile stream mode exception when process the file with the gzip extra field (GH-126304) (GH-150199)** (e6e3b9f)
- **[3.15] gh-150146: Fix NULL dereference in `_Py_subs_parameters` (GH-150147) (#150153)** (61444f6)
- **[3.15] gh-149584: Fix excessive overhead in the Tachyon profiler regarding the cache behavior (GH-149649) (#150152)** (034c536)
- **[3.15] gh-149807: Fix hash(frozendict): compute (key, value) pair hash (GH-149841) (#150149)** (7f29fa5)
- **[3.15] gh-150042: queue.SimpleQueue.put: fix minor refleak. (GH-150043) (GH-150127)** (d6dda0d)
- **[3.15] gh-149983: Fix PyErr_NoMemory call without GIL in winconsoleio.c (GH-149984) (GH-150113)** (f46b397)
- **[3.15] gh-149945: Fix potential OOM for gzip with large header (GH-149979) (GH-150093)** (3227857)
- **[3.15] gh-149816: fix `dict.clear()` race on split-table dict with non-embedded values (GH-149914) (#150000)** (d36e080)
- **[3.15] gh-149816: fix thread safety of deletion of list slice (GH-149936) (#150003)** (0b92f01)
- **[3.15] gh-146452: Improve locking granularity in pickle's batch_dict_exact and fix race condition (GH-150025) (#150039)** (66ade28)
- **[3.15] gh-95816: Fix TLS version range example in docs (GH-148574) (#150008)** (16f8ed5)
- **[3.15] gh-149977: Fix extra output of `-m test test_lazy_import` (GH-149978) (#150016)** (84ea87c)
- **[3.15] gh-149816: Fix a RC in `_random.Random.__init__` method (GH-149824) (#149997)** (01b07df)
- **[3.15] gh-149953: Fix null pointer dereference order in `code_objects.c` (GH-149956) (#149976)** (6e83c55)
- **[3.15] gh-149921: Fix reference leaks in _interpchannels and _interpqueues modules (GH-149922) (#149943)** (42ff9b4)
- **[3.15] gh-149816: Fix a race condition in `_PyBytes_FromList` with free-threading (GH-149909) (#149911)** (ec3aa6a)
- **[3.15] gh-149816: Fix race condition in `memoryview` with free-threading (GH-149858) (#149875)** (b3819ae)
- **[3.15] gh-149707: Fix compiler warning in _ctypes_test on strchr() (#149791) (#149865)** (8d32ae7)
- **[3.15] gh-87451: Apply CVE-2021-4189 PASV fix to ftplib.ftpcp() (GH-149648) (#149792)** (5dadc64)

### Backend
- **Python 3.15.0b2** (94a64bb)
- **[3.15] Silence experimental coroutine deprecation warnings (GH-150788) (#150794)** (13a7cce)
- **[3.15] gh-149187: Document `frozendict()` under 'Built-in Functions' (GH-149185)** (33b2879)
- **[3.15] gh-150766: export `_PyGC_VisitFrameStack` and `_PyGC_VisitStackRef` functions (GH-150767) (#150787)** (b17bcfd)
- **[3.15] gh-89554: Document _thread.LockType as a class (GH-150684) (#150785)** (c5248b7)
- **[3.15] Update `SOURCE_URI` for `3.15` branch (#150783)** (de7576e)
- **[3.15] gh-150720: Remove '-d 1' in test_script_error_treatment (GH-150736) (#150746)** (80f3d79)
- **[3.15] gh-123138: Updated email.headerregistry docs to include required keyword parse_tree (GH-134450) (GH-150623)** (94c58db)
- **[3.15] gh-89554: Document typing.ParamSpecArgs and ParamSpecKwargs as classes (GH-150677) (GH-150763)** (35dc248)
- **[3.15] gh-89554: Document standard type objects in types as classes (GH-150676) (GH-150761)** (b48cf0e)
- **[3.15] gh-89554: Document weakref type objects as classes (GH-150678) (GH-150760)** (506b41d)
- **[3.15] gh-89554: Document NoneType, NotImplementedType and EllipsisType as classes (GH-150682) (GH-150755)** (ef45089)
- **[3.15] gh-150228: Improve the PEP 829 batch processing APIs (GH-150542) (#150748)** (848ba18)
- **[3.15] gh-150644: Tag Apple system log messages as public. (GH-150645) (#150738)** (042428f)
- **[3.15] gh-148672: Document namespace subpackages inside regular packages (GH-150056) (#150729)** (7e9057d)
- **[3.15] gh-150368: Change Windows user group to secure identifier in test_tempfile (GH-150369) (#150701)** (58335ee)
- **[3.15] gh-148605: Remove irepeat() thread test from test_bytes (GH-150576) (#150660)** (2c1e4bb)
- **[3.15] gh-150685: update bundled pip to 26.1.2 (gh-150686) (gh-150687)** (487b23d)
- **[3.15] gh-140553: Mark `*gettext` parameters as positionaly only in documentation (GH-140598)** (fed5c74)
- **[3.15] Clarify docs for scheduler.run(blocking=False) (GH-129575) (GH-150668)** (ea58c35)
- **[3.15] gh-150636: Clarify difference between copy.copy() and the copy() methods (GH-150637) (GH-150665)** (2fb2a23)
- **[3.15] Correct frexp() docs for zero and non-finite numbers (GH-149753) (GH-150652)** (c5655df)
- **[3.15] gh-150524: Remove outdated note in binascii.a2b_hex() documentation (GH-150525) (GH-150627)** (3084bdc)
- **[3.15] gh-117291: Explain usage of null bytes in Array(c_char).value (GH-117292) (GH-150649)** (d032506)
- **[3.15] gh-149857: Clarify multiprocessing Process argument wording (GH-149919) (#149933)** (9a39343)
- **[3.15] gh-150406: Check result of PyThread_allocate_lock() for netdb_lock (GH-150407) (GH-150616)** (7cf2b37)
- **[3.15] gh-150501: Correct `inspect.getattr_static` docs signature (GH-150504) (#150601)** (187982a)
- **[3.15] gh-149056: Properly pass array_hook in json.load() to json.loads() (GH-149057) (GH-150591)** (863c7e0)
- **[3.15] gh-150403: Document frozendict in language reference Mappings section (GH-150404) (GH-150590)** (a2ba8b1)
- **[3.15] gh-141984: Reword docs on "enclosed" atom grammar (GH-148622) (GH-150552)** (d842895)
- **[3.15] gh-149029: Update SQLite to 3.53.1 for binary releases (GH-149767) (#150559)** (21fa311)
- **[3.15] gh-84353: Preserve non-UTF-8 filenames when appending to ZipFile (GH-150091) (GH-150527)** (f216c89)
- **[3.15] gh-150389: Make perf profiler tests resilient (GH-150437) (#150515)** (cc6fea8)
- **[3.15] gh-88726: Stop using non-standard charset names eucgb2312_cn and big5_tw in email (GH-149959) (GH-150491)** (79e17d7)
- **[3.15] gh-148557: Use em-config to locate trampoline clang (GH-148556) (#150481)** (16a31fa)
- **[3.15] gh-150443: Exclude explicit dup3 and pipe2 checks on iOS builds. (GH-150444) (#150446)** (413663b)
- **[3.15] gh-149619: Harden _remote_debugging error paths (GH-150349) (#150434)** (340b4dd)
- **[3.15] gh-149619: Harden _remote_debugging error paths (GH-150349) (#150435)** (d5381e1)
- **[3.15] gh-80198: Improve test_pwd and test_grp (GH-150380) (GH-150398)** (4bdff2c)
- **[3.15] gh-110704: Recommend `distclean` target over `clean` when source tree is not clean (GH-112610) (#150342)** (d02c2df)
- **[3.15] gh-149018: Use `XML_SetHashSalt16Bytes` in `pyexpat`/`_elementtree` when possible (#149645)** (3573b3b)
- **[3.15] gh-148932: Docs / `profiling.sampling` Windows limitations (GH-150272) (#150330)** (c3d21e5)
- **[3.15] gh-149335: Avoid JIT trace buffer asserts with overhead above `FITNESS_INITIAL` (GH-149633) (#150245)** (22c994c)
- **[3.15] gh-150258: Show relative percentage on Tachyon flamegraph (GH-150266) (#150312)** (6f99363)
- **[3.15] gh-148450: `abc.register` needs to update `type_version` when `tp_flags` is changed (GH-148623) (#150300)** (8a162b2)
- **[3.15] gh-150232: update Thread group parameter doc (GH-150283) (#150297)** (d9d8ee5)
- **[3.15] gh-82907: Document mtime=0 for reproducible tarfile gzip output (GH-150269) (GH-150271)** (081187f)
- **[3.15] gh-149189: Revert "Modern defaults for `pprint` (GH-149190)" (GH-150249) (#150268)** (3daf1fa)
- **[3.15] gh-148829: Make sentinels' repr and module customizable (GH-149654) (#150092)** (f523146)
- **[3.15] CI: Move Homebrew dependencies into Brewfile (GH-148335) (#149882)** (b79112f)
- **[3.15] gh-137571: Protect against possible UnboundLocalError in gzip._GzipReader.read() (GH-150222) (GH-150229)** (e192a0e)
- **[3.15] gh-149995: Update typing.py docstrings and documentation (GH-149996) (#150215)** (591c4ff)
- **[3.15] gh-148294: Make configure find g++ correctly (GH-150212)** (072246a)
- **[3.15] gh-149219: Test `frozendict` in `Lib/test/test_crossinterp.py` (GH-149220) (#150186)** (9d042ad)
- **[3.15] gh-149981: Test lazy import corner cases with module-level `__getattr__` (GH-149982) (#150185)** (a56a271)
- **[3.15] gh-134261: ZipFile - Don't rely on local time for reproducible builds & tests (GH-134264) (#150137)** (ca0da94)
- **[3.15] PEP 810 - Update some error strings (GH-150126) (#150135)** (ad2f0cb)
- **[3.15] gh-150034: Print JSONL filename when profiling finishes (GH-150035) (#150151)** (9c26209)
- **[3.15] gh-148260: Use at least 1 MiB stack size on musl (GH-149993) (#150150)** (c555e26)
- **[3.15] gh-143387: Update docs to reflect the behavior and note the changed version. (GH-150095) (#150106)** (653f12b)
- **[3.15] gh-72088: clarify `inspect.ismethod` and `inspect.isfunction` (and related) usage with class-level access (GH-150013) (GH-150119)** (eb7be9a)
- **[3.15] gh-150114: Reduce memory usage of test_free_threading.test_iteration (gh-150115) (#150124)** (de401ef)
- **[3.15] gh-150052: Resolve un-loaded lazily loaded submodules via module.__getattr__ instead of publishing lazy values (#150055)** (6847f4b)
- **[3.15] gh-124111: Keep tests passing for Tcl prior to 9.0 (GH-150102)** (0213817)
- **[3.15] gh-69619: Clarify whitespace definition in str.strip docs (#150049)** (bec4336)
- **[3.15] gh-146581: Update docs for dangerous filenames in ZIP files (GH-149994) (GH-150064)** (65b2554)
- **[3.15] gh-86533: Restore os.makedirs() ability to apply *mode* recursively (GH-150011) (#150036)** (28f275f)
- **[3.15] gh-148587: Make sys.lazy_modules match PEP and keep internal lazy submodules tra… (#150014)** (94c8bac)
- **[3.15] gh-149590: Remove faulthandler_traverse (GH-150023) (#150037)** (c417fca)
- **[3.15] gh-149887: Install python3t.lib for GIL-enabled Windows install (GH-149900)** (34e4005)
- **[3.15] gh-149916: Restore the commented out part of test_body_encode in test_email (GH-149917) (GH-149937)** (bdc44c5)
- **[3.15] gh-149786: Fixes venvlauncher builds on Windows free-threaded (GH-149847)** (0e2184a)
- **[3.15] gh-148675: Use a string for ctypes cparam tag (GH-149778) (#149869)** (cc624f7)
- **[3.15] gh-149763: Improve availablity docs in `select.rst` (GH-149764) (#149854)** (168a3c8)
- **[3.15] gh-124111: Update Windows build to use Tcl/Tk 9.0.3 (GH-149842)** (21909e8)

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