From 343b3f113645f9f32c64ac87eb46662249ff4e947c6477c92560370a8b7a919c Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Fri, 24 Oct 2025 22:35:31 +0000 Subject: [PATCH] =?UTF-8?q?-=20New=20development=20of=20new=20major=20vers?= =?UTF-8?q?ion,=20update=20to=203.15.0~a1:=20=20=20-=20Tools/Demos=20=20?= =?UTF-8?q?=20=20=20-=20gh-139330:=20SBOM=20generation=20tool=20didn?= =?UTF-8?q?=E2=80=99t=20cross-check=20=20=20=20=20=20=20the=20version=20an?= =?UTF-8?q?d=20checksum=20values=20against=20the=20=20=20=20=20=20=20Modul?= =?UTF-8?q?es/expat/refresh.sh=20script,=20leading=20to=20the=20values=20?= =?UTF-8?q?=20=20=20=20=20=20becoming=20out-of-date=20during=20routine=20u?= =?UTF-8?q?pdates.=20=20=20=20=20-=20gh-132006:=20XCframeworks=20now=20inc?= =?UTF-8?q?lude=20privacy=20manifests=20to=20=20=20=20=20=20=20satisfy=20A?= =?UTF-8?q?pple=20App=20Store=20submission=20requirements.=20=20=20=20=20-?= =?UTF-8?q?=20gh-138171:=20A=20script=20for=20building=20an=20iOS=20XCfram?= =?UTF-8?q?ework=20was=20=20=20=20=20=20=20added.=20As=20part=20of=20this?= =?UTF-8?q?=20change,=20the=20top=20level=20iOS=20folder=20has=20=20=20=20?= =?UTF-8?q?=20=20=20been=20moved=20to=20be=20a=20subdirectory=20of=20the?= =?UTF-8?q?=20Apple=20folder.=20=20=20=20=20-=20gh-137873:=20The=20iOS=20t?= =?UTF-8?q?est=20runner=20has=20been=20simplified,=20=20=20=20=20=20=20res?= =?UTF-8?q?olving=20some=20issues=20that=20have=20been=20observed=20using?= =?UTF-8?q?=20=20=20=20=20=20=20the=20runner=20in=20GitHub=20Actions=20and?= =?UTF-8?q?=20Azure=20Pipelines=20test=20=20=20=20=20=20=20environments.?= =?UTF-8?q?=20=20=20=20=20-=20gh-137484:=20Have=20Tools/wasm/wasi=20put=20?= =?UTF-8?q?the=20build=20Python=20into=20a=20=20=20=20=20=20=20directory?= =?UTF-8?q?=20named=20after=20the=20build=20triple=20instead=20of=20?= =?UTF-8?q?=E2=80=9Cbuild=E2=80=9D.=20=20=20=20=20-=20gh-137025:=20The=20w?= =?UTF-8?q?asm=5Fbuild.py=20script=20has=20been=20removed.=20=20=20=20=20?= =?UTF-8?q?=20=20Tools/wasm/emscripten=20and=20Tools/wasm/wasi=20should=20?= =?UTF-8?q?be=20used=20=20=20=20=20=20=20instead,=20as=20described=20in=20?= =?UTF-8?q?the=20Dev=20Guide.=20=20=20=20=20-=20gh-137248:=20Add=20a=20--l?= =?UTF-8?q?ogdir=20option=20to=20Tools/wasm/wasi=20for=20=20=20=20=20=20?= =?UTF-8?q?=20specifying=20where=20to=20write=20log=20files.=20=20=20=20?= =?UTF-8?q?=20-=20gh-137243:=20Have=20Tools/wasm/wasi=20detect=20a=20WASI?= =?UTF-8?q?=20SDK=20install=20=20=20=20=20=20=20in=20/opt=20when=20it=20wa?= =?UTF-8?q?s=20directly=20extracted=20from=20a=20release=20=20=20=20=20=20?= =?UTF-8?q?=20tarball.=20=20=20=20=20-=20gh-136251:=20Fixes=20and=20usabil?= =?UTF-8?q?ity=20improvements=20for=20=20=20=20=20=20=20Tools/wasm/emscrip?= =?UTF-8?q?ten/web=5Fexample=20=20=20=20=20-=20gh-135968:=20Stubs=20for=20?= =?UTF-8?q?strip=20are=20now=20provided=20as=20part=20of=20an=20=20=20=20?= =?UTF-8?q?=20=20=20iOS=20install.=20=20=20=20=20-=20gh-135379:=20The=20ca?= =?UTF-8?q?ses=20generator=20no=20longer=20accepts=20type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python315?expand=0&rev=3 --- ...3-52425-libexpat-2.6.0-backport-15.6.patch | 22 +- F00251-change-user-install-location.patch | 20 +- Python-3.14.0.tar.xz | 3 - Python-3.14.0.tar.xz.sigstore | 1 - Python-3.15.0a1.tar.xz | 3 + Python-3.15.0a1.tar.xz.sigstore | 1 + baselibs.conf | 6 +- bpo-31046_ensurepip_honours_prefix.patch | 40 +- fix-test-recursion-limit-15.6.patch | 8 +- gh138131-exclude-pycache-from-digest.patch | 30 - gh139257-Support-docutils-0.22.patch | 10 +- python-3.3.0b1-fix_date_time_compiler.patch | 8 +- python314-rpmlintrc => python315-rpmlintrc | 0 python314.changes => python315.changes | 1743 +++++++++++++++++ python314.spec => python315.spec | 32 +- 15 files changed, 1819 insertions(+), 108 deletions(-) delete mode 100644 Python-3.14.0.tar.xz delete mode 100644 Python-3.14.0.tar.xz.sigstore create mode 100644 Python-3.15.0a1.tar.xz create mode 100644 Python-3.15.0a1.tar.xz.sigstore delete mode 100644 gh138131-exclude-pycache-from-digest.patch rename python314-rpmlintrc => python315-rpmlintrc (100%) rename python314.changes => python315.changes (86%) rename python314.spec => python315.spec (98%) diff --git a/CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch b/CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch index 767e62c..e0e1ece 100644 --- a/CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch +++ b/CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch @@ -4,11 +4,11 @@ Lib/test/test_xml_etree.py | 10 ++++++++++ 3 files changed, 17 insertions(+) -Index: Python-3.14.0/Lib/test/test_pyexpat.py +Index: Python-3.15.0a1/Lib/test/test_pyexpat.py =================================================================== ---- Python-3.14.0.orig/Lib/test/test_pyexpat.py 2025-10-08 11:27:29.989583305 +0200 -+++ Python-3.14.0/Lib/test/test_pyexpat.py 2025-10-08 11:28:09.418914658 +0200 -@@ -827,6 +827,10 @@ +--- Python-3.15.0a1.orig/Lib/test/test_pyexpat.py 2025-10-24 23:53:24.356893960 +0200 ++++ Python-3.15.0a1/Lib/test/test_pyexpat.py 2025-10-24 23:53:50.136311340 +0200 +@@ -843,6 +843,10 @@ self.assertEqual(started, ['doc']) def test_reparse_deferral_disabled(self): @@ -19,10 +19,10 @@ Index: Python-3.14.0/Lib/test/test_pyexpat.py started = [] def start_element(name, _): -Index: Python-3.14.0/Lib/test/test_sax.py +Index: Python-3.15.0a1/Lib/test/test_sax.py =================================================================== ---- Python-3.14.0.orig/Lib/test/test_sax.py 2025-10-08 11:27:30.053760879 +0200 -+++ Python-3.14.0/Lib/test/test_sax.py 2025-10-08 11:28:09.419532320 +0200 +--- Python-3.15.0a1.orig/Lib/test/test_sax.py 2025-10-24 23:53:24.425039914 +0200 ++++ Python-3.15.0a1/Lib/test/test_sax.py 2025-10-24 23:53:50.136951370 +0200 @@ -1241,6 +1241,9 @@ self.assertEqual(result.getvalue(), start + b"") @@ -33,10 +33,10 @@ Index: Python-3.14.0/Lib/test/test_sax.py def test_flush_reparse_deferral_disabled(self): result = BytesIO() xmlgen = XMLGenerator(result) -Index: Python-3.14.0/Lib/test/test_xml_etree.py +Index: Python-3.15.0a1/Lib/test/test_xml_etree.py =================================================================== ---- Python-3.14.0.orig/Lib/test/test_xml_etree.py 2025-10-08 11:27:30.502943506 +0200 -+++ Python-3.14.0/Lib/test/test_xml_etree.py 2025-10-08 11:28:09.420206077 +0200 +--- Python-3.15.0a1.orig/Lib/test/test_xml_etree.py 2025-10-24 23:53:24.855327755 +0200 ++++ Python-3.15.0a1/Lib/test/test_xml_etree.py 2025-10-24 23:53:50.137646227 +0200 @@ -138,6 +138,11 @@ return mock.patch.object(cls, "__eq__", autospec=True, wraps=eq) @@ -61,7 +61,7 @@ Index: Python-3.14.0/Lib/test/test_xml_etree.py def test_simple_xml_chunk_5(self): self.test_simple_xml(chunk_size=5, flush=True) -@@ -1774,6 +1781,9 @@ +@@ -1776,6 +1783,9 @@ self.assert_event_tags(parser, [('end', 'doc')]) diff --git a/F00251-change-user-install-location.patch b/F00251-change-user-install-location.patch index 80d80c1..e84f1b9 100644 --- a/F00251-change-user-install-location.patch +++ b/F00251-change-user-install-location.patch @@ -28,10 +28,10 @@ Co-authored-by: Lumír Balhar Lib/test/test_sysconfig.py | 17 +++++++++++++-- 2 files changed, 65 insertions(+), 3 deletions(-) -Index: Python-3.14.0/Lib/sysconfig/__init__.py +Index: Python-3.15.0a1/Lib/sysconfig/__init__.py =================================================================== ---- Python-3.14.0.orig/Lib/sysconfig/__init__.py 2025-10-08 11:27:28.335887277 +0200 -+++ Python-3.14.0/Lib/sysconfig/__init__.py 2025-10-08 11:28:00.652215416 +0200 +--- Python-3.15.0a1.orig/Lib/sysconfig/__init__.py 2025-10-24 23:53:22.709921139 +0200 ++++ Python-3.15.0a1/Lib/sysconfig/__init__.py 2025-10-24 23:53:34.981019958 +0200 @@ -106,6 +106,11 @@ else: _INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv'] @@ -73,7 +73,7 @@ Index: Python-3.14.0/Lib/sysconfig/__init__.py _BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix) # Mutex guarding initialization of _CONFIG_VARS. _CONFIG_VARS_LOCK = threading.RLock() -@@ -268,11 +288,40 @@ +@@ -257,11 +277,40 @@ target_dict[key] = value @@ -115,11 +115,11 @@ Index: Python-3.14.0/Lib/sysconfig/__init__.py if os.name == 'nt': # On Windows we want to substitute 'lib' for schemes rather # than the native value (without modifying vars, in case it -Index: Python-3.14.0/Lib/test/test_sysconfig.py +Index: Python-3.15.0a1/Lib/test/test_sysconfig.py =================================================================== ---- Python-3.14.0.orig/Lib/test/test_sysconfig.py 2025-10-08 11:27:30.181651013 +0200 -+++ Python-3.14.0/Lib/test/test_sysconfig.py 2025-10-08 11:28:00.653226898 +0200 -@@ -132,8 +132,19 @@ +--- Python-3.15.0a1.orig/Lib/test/test_sysconfig.py 2025-10-24 23:53:24.545975205 +0200 ++++ Python-3.15.0a1/Lib/test/test_sysconfig.py 2025-10-24 23:53:34.981457517 +0200 +@@ -131,8 +131,19 @@ for scheme in _INSTALL_SCHEMES: for name in _INSTALL_SCHEMES[scheme]: expected = _INSTALL_SCHEMES[scheme][name].format(**config_vars) @@ -140,7 +140,7 @@ Index: Python-3.14.0/Lib/test/test_sysconfig.py os.path.normpath(expected), ) -@@ -395,7 +406,7 @@ +@@ -394,7 +405,7 @@ self.assertTrue(os.path.isfile(config_h), config_h) def test_get_scheme_names(self): @@ -149,7 +149,7 @@ Index: Python-3.14.0/Lib/test/test_sysconfig.py if HAS_USER_BASE: wanted.extend(['nt_user', 'osx_framework_user', 'posix_user']) self.assertEqual(get_scheme_names(), tuple(sorted(wanted))) -@@ -407,6 +418,8 @@ +@@ -406,6 +417,8 @@ cmd = "-c", "import sysconfig; print(sysconfig.get_platform())" self.assertEqual(py.call_real(*cmd), py.call_link(*cmd)) diff --git a/Python-3.14.0.tar.xz b/Python-3.14.0.tar.xz deleted file mode 100644 index 7b2299a..0000000 --- a/Python-3.14.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2299dae542d395ce3883aca00d3c910307cd68e0b2f7336098c8e7b7eee9f3e9 -size 23595844 diff --git a/Python-3.14.0.tar.xz.sigstore b/Python-3.14.0.tar.xz.sigstore deleted file mode 100644 index 2ebe860..0000000 --- a/Python-3.14.0.tar.xz.sigstore +++ /dev/null @@ -1 +0,0 @@ -{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial": {"certificate": {"rawBytes": "MIICzjCCAlOgAwIBAgIUaFNOs99+mdUwhWuy93hUKegEDvowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUxMDA3MTQxNjE4WhcNMjUxMDA3MTQyNjE4WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB4Zs7yR5znQ3xOtA7ekHhkbjmt11y4B0kYTAt5K3MmjxgyQ/FOzoGbiNgP1p76I5OFwbECeL6RtxqjSwJPoj9aOCAXIwggFuMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU6Jy2V0oQb2tmHwImrQplvua+1WkwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABmb8HuYwAAAQDAEYwRAIgZd3lZo6EQ8hFKJ1SnKnh/pOXyLVUxesmKPdZLI/IddsCIHbkeFmcOlHbGXvzusuMaF7GDoHgfjCRXvFE1kPVSPdUMAoGCCqGSM49BAMDA2kAMGYCMQCF3LWgo5EPOs6y59yMkN8HDY/PuX+rch7scxcXUR8K+6BNw1dS8i1nGRkIvE/ttF8CMQCG6z4lu2ekjwZBMx69OmDsUlrQjOvrxmWX3pbLh4Aam7sS25DCYvVFul4RmPg/sJg="}, "tlogEntries": [{"logIndex": "588222392", "logId": {"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": "hashedrekord", "version": "0.0.1"}, "integratedTime": "1759846578", "inclusionPromise": {"signedEntryTimestamp": "MEQCIBS/mvM2EUceWygdN+NmnJMehkFY1fRkmVmmDNICfxWVAiAoN7Vofd2SVuJYSxO/onzd87/3bWNogJlDvI7uZSTR1Q=="}, "inclusionProof": {"logIndex": "466318130", "rootHash": "RcerGwX5+QIiZjrznmUlSGFvuGAq3RMLk/7Aj/T6M3I=", "treeSize": "466318146", "hashes": ["5uTZFkdYgFmKJJdqzeeKZfjnq5Mx9K0tDsF0fjJzkCk=", "RL5Hp6IOaxPi5M/m3s97bDoAnRux0/JBccJ4+/B1vro=", "JYAmi+fU2/Su8fHV3tfQcbY//eCoHsfd2H7O1hs6HIQ=", "BbdwHf9ld92J1gFR6vWH/Gv+L9YTGwWAQytyDm+6jYc=", "J0rXI11jq+mZyPMktZmo2UlHPQw0Wyl70FQBNujJJog=", "tcYxYlxPe1g09Dr+wGWIPrCmHuFjjjwqZ4gRokgj4zE=", "X0IhqC7U/8YmeUILMTYIvlKoBEAX3aFw3IWHNcfJifc=", "kQWzYHtEr0Vhaq6Z6v4TIiuia6GrJLKcYKs25NPvkms=", "WjmJ5Vrat53AbuDR9WjO4SQADjlfkyyq+bKkkBO984w=", "k9qNU1WjJDQJ+e4prrbcOORJ5aMBlkIBACMsgKoANg0=", "Z7pLmTcnciyz67VEWMgPwiokTg9JVUQWrPf+VS85VlA=", "y/7hUHbXERsQubPR1m2uvZSz3rFsW3d9dP51hoTyX/U=", "19j/ye5CX1xbsCqb7Xkr1O2BXIOAWPwZsn7TDtr6UVc=", "JVKPJjj8WVb6G2sYzX+4PL9fC+4qskYANlO6/TIjQsE=", "XTHRaE0cHDl9HYIIwtlwjCK2+pmMP8G2rv801RmA0U8=", "ujcC9wUGq4yMg4Sr83ZRaheYdJguBWXGhnp101NfbMo=", "Kcf5veFWCVXREqqw2Q7rOJD3ttDxBxePywSepmjiSGo=", "5J6N5aNEMk6YY8lPNH0zZx95RNICDJ12cMAmpwtvGTo=", "/buh7NyeUdCgJPdaMbTAtiQpMkNHhk+xMsI2shkTieM=", "1mfy94KpcItqshH9+gwqV6jccupcaMpVsF28New8zDY=", "vS7O4ozHIQZJWBiov+mkpI27GE8zAmVCEkRcP3NDyNE="], "checkpoint": {"envelope": "rekor.sigstore.dev - 1193050959916656506\n466318146\nRcerGwX5+QIiZjrznmUlSGFvuGAq3RMLk/7Aj/T6M3I=\n\n\u2014 rekor.sigstore.dev wNI9ajBFAiEA9LofhlufYOpmdGvOuS7AvxT5koyDoOFWNEhobBt+UgYCICpTORyuqmFZWs8D1FJAry4ohDUWTSw3JegUDlUUtr3z\n"}}, "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIyMjk5ZGFlNTQyZDM5NWNlMzg4M2FjYTAwZDNjOTEwMzA3Y2Q2OGUwYjJmNzMzNjA5OGM4ZTdiN2VlZTlmM2U5In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNQWEhJOW9MdVNJL3RoVDg1ZXBkWlVWakh4d1M4OFpTTExLcjFmWnprWGJnSWdTUFY3ZnV1dytISGhCazljNGlBWGlCNVBJRWdMQ1kwTTVVaXNUM3h1QUcwPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZha05EUVd4UFowRjNTVUpCWjBsVllVWk9UM001T1N0dFpGVjNhRmQxZVRremFGVkxaV2RGUkhadmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZlRTFFUVROTlZGRjRUbXBGTkZkb1kwNU5hbFY0VFVSQk0wMVVVWGxPYWtVMFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZDTkZwek4zbFNOWHB1VVRONFQzUkJOMlZyU0doclltcHRkREV4ZVRSQ01HdFpWRUVLZERWTE0wMXRhbmhuZVZFdlJrOTZiMGRpYVU1blVERndOelpKTlU5R2QySkZRMlZNTmxKMGVIRnFVM2RLVUc5cU9XRlBRMEZZU1hkblowWjFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlUyU25reUNsWXdiMUZpTW5SdFNIZEpiWEpSY0d4MmRXRXJNVmRyZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVZGWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWpjS1FraHJRV1IzUWpGQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnRZamhJZFZsM1FRcEJRVkZFUVVWWmQxSkJTV2RhWkROc1dtODJSVkU0YUVaTFNqRlRia3R1YUM5d1QxaDVURlpWZUdWemJVdFFaRnBNU1M5SlpHUnpRMGxJWW10bFJtMWpDazlzU0dKSFdIWjZkWE4xVFdGR04wZEViMGhuWm1wRFVsaDJSa1V4YTFCV1UxQmtWVTFCYjBkRFEzRkhVMDAwT1VKQlRVUkJNbXRCVFVkWlEwMVJRMFlLTTB4WFoyODFSVkJQY3paNU5UbDVUV3RPT0VoRVdTOVFkVmdyY21Ob04zTmplR05ZVlZJNFN5czJRazUzTVdSVE9Ha3hia2RTYTBsMlJTOTBkRVk0UXdwTlVVTkhObm8wYkhVeVpXdHFkMXBDVFhnMk9VOXRSSE5WYkhKUmFrOTJjbmh0VjFnemNHSk1hRFJCWVcwM2MxTXlOVVJEV1haV1JuVnNORkp0VUdjdkNuTktaejBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}]}, "messageSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": "Ipna5ULTlc44g6ygDTyRAwfNaOCy9zNgmMjnt+7p8+k="}, "signature": "MEUCIQCPXHI9oLuSI/thT85epdZUVjHxwS88ZSLLKr1fZzkXbgIgSPV7fuuw+HHhBk9c4iAXiB5PIEgLCY0M5UisT3xuAG0="}} diff --git a/Python-3.15.0a1.tar.xz b/Python-3.15.0a1.tar.xz new file mode 100644 index 0000000..26d8153 --- /dev/null +++ b/Python-3.15.0a1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3194939d488eeaeefdcf990d35542d9ad1ce788789c4e2305a2060eb7058e5a4 +size 23646768 diff --git a/Python-3.15.0a1.tar.xz.sigstore b/Python-3.15.0a1.tar.xz.sigstore new file mode 100644 index 0000000..7b84f4e --- /dev/null +++ b/Python-3.15.0a1.tar.xz.sigstore @@ -0,0 +1 @@ +{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial": {"certificate": {"rawBytes": "MIICzTCCAlSgAwIBAgIUHBnJY2cDVNyp0+jVDU64RXDfTLUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUxMDE0MTQ0NjIwWhcNMjUxMDE0MTQ1NjIwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELQMCqzrc9clNKPUzmojg3JbTM3XXjmo/wWH6zH8rh6GGP8TJSz+A8OMUdeE7ktSr5+9QeVaEGDRasbmwIAKX8aOCAXMwggFvMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQULWp/zwV2HmZ8X/y10L1ftl0hN5QwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wHQYDVR0RAQH/BBMwEYEPaHVnb0BweXRob24ub3JnMCwGCisGAQQBg78wAQEEHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDAuBgorBgEEAYO/MAEIBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9sb2dpbi9vYXV0aDCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABmeMvvDEAAAQDAEcwRQIhALiWW21hVw6w95sI+lVh8NFcaWG1KITMvDC0HytgwrkTAiBmnB/Il7sqNC9TV3ybSbyMgXUrXlpz7Y4+ri6qEe8OmjAKBggqhkjOPQQDAwNnADBkAjAav7uspSvsMYLOIqcV65W7UEfUl/+oaDVcAnUBTn4VzzWVNt7rRh/sGU9Ow1fsgaQCMHKjjdlRouWZV13QxRqUlwiYnso8K/LrepolTWuu9hmJ4498BbxpQkG82AiFgwHKiA=="}, "tlogEntries": [{"logIndex": "605381105", "logId": {"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": "hashedrekord", "version": "0.0.1"}, "integratedTime": "1760453180", "inclusionPromise": {"signedEntryTimestamp": "MEUCIQD2M+xpYMeDZb0B+2kBuUQDfsBPNuaNbOPB/tLnCY1+CwIgH1bBckucAYWz+3wFvU9MVGWc985g1wJsYy27aYYg+5c="}, "inclusionProof": {"logIndex": "483476843", "rootHash": "VcoiuI3enMGLjUhgMzdjfI+PlOWmz/r/ADehdiW44fo=", "treeSize": "483476848", "hashes": ["r/fQjBRZKxYDs6T00FfDqZfE3gNFN5jUw2hPbI6Klb4=", "Fu7qRL8q8yz4aWKTEU5+PzVtd9R4k7HkP62EtCYWURQ=", "jvpXra7v+FEGbwj68er3f1BUvjOiYUjCL/pwYF0UG6c=", "VxMxwBbsJTw+9QBfKnXMOxyeZ7HJKlExLQMtqStpg0Y=", "fU2ETS/0MxEeuY1O0lS9SJrXcXC78pJVOtXCNv7LymQ=", "TS0t//1G9191vAjMg50KLfXBi3UY8ANFmx1ZNp2k5vk=", "1bdCuQIZjyx9tCJXNrYevW3fyHk6huvJ/h5uIlfIiy0=", "wjy79ir2+9dNofV/yngwyU7P7qEQoJWbN/f/+YIqeSg=", "Tx/mYCxiKxJdXGSB99WD+yAVDPg18BLOj5lDqPQUNe4=", "eSCfK8nXzRpj/m2HYQ9+GtLIccUwLOkk3iYGC4R5zXI=", "inrOYOb+roitD1EYWHmRPy8aJnjhSAhp5cHXbXVlxU4=", "8nCds1SUzxGg2Xoa+M1tOFTwx+1BGtp8TDMSS4P54xQ=", "V5lOdefY1WOOt4iQp7tZoyj1beBDVi24KsEMcgsqZds=", "2Wv4GiithwNukRKV06clevnQQYCzXmSS/+/OJtXgsXQ=", "1mfy94KpcItqshH9+gwqV6jccupcaMpVsF28New8zDY=", "vS7O4ozHIQZJWBiov+mkpI27GE8zAmVCEkRcP3NDyNE="], "checkpoint": {"envelope": "rekor.sigstore.dev - 1193050959916656506\n483476848\nVcoiuI3enMGLjUhgMzdjfI+PlOWmz/r/ADehdiW44fo=\n\n\u2014 rekor.sigstore.dev wNI9ajBGAiEAhRdd+DI17Uc7iB9ExZ3kq9O47UtmJyeRF8AcagocSIYCIQCjl6Z9CXp3exjHHmeQCwLAVOGRbCfKwsbuQAZwl4K80A==\n"}}, "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzMTk0OTM5ZDQ4OGVlYWVlZmRjZjk5MGQzNTU0MmQ5YWQxY2U3ODg3ODljNGUyMzA1YTIwNjBlYjcwNThlNWE0In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQkZ3NFEvelFZcnJWNHlSalN0TmkwSkd3NG80VTdjWGlCWFZHUksrYTVNV0FpQmFBYTBMTUN6VkZxelVEbVkrMEYranZEQm8waFJUc25JckVUY1RMY1ZPZkE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZWRU5EUVd4VFowRjNTVUpCWjBsVlNFSnVTbGt5WTBSV1RubHdNQ3RxVmtSVk5qUlNXRVJtVkV4VmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZlRTFFUlRCTlZGRXdUbXBKZDFkb1kwNU5hbFY0VFVSRk1FMVVVVEZPYWtsM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZNVVUxRGNYcHlZemxqYkU1TFVGVjZiVzlxWnpOS1lsUk5NMWhZYW0xdkwzZFhTRFlLZWtnNGNtZzJSMGRRT0ZSS1Uzb3JRVGhQVFZWa1pVVTNhM1JUY2pVck9WRmxWbUZGUjBSU1lYTmliWGRKUVV0WU9HRlBRMEZZVFhkblowWjJUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZNVjNBdkNucDNWakpJYlZvNFdDOTVNVEJNTVdaMGJEQm9UalZSZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBoUldVUldVakJTUVZGSUwwSkNUWGRGV1VWUVlVaFdibUl3UW5kbFdGSnZZakkwZFdJelNtNU5RM2RIUTJselIwRlJVVUpuTnpoM1FWRkZSUXBJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx6WWpKa2NHSnBPWFpaV0ZZd1lVUkJkVUpuYjNKQ1owVkZRVmxQTDAxQlJVbENRMEZOQ2todGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1hOaU1tUndZbWs1ZGxsWVZqQmhSRU5DYVdkWlMwdDNXVUpDUVVoWFpWRkpSVUZuVWpnS1FraHZRV1ZCUWpKQlRqQTVUVWR5UjNoNFJYbFplR3RsU0Vwc2JrNTNTMmxUYkRZME0ycDVkQzgwWlV0amIwRjJTMlUyVDBGQlFVSnRaVTEyZGtSRlFRcEJRVkZFUVVWamQxSlJTV2hCVEdsWFZ6SXhhRlozTm5jNU5YTkpLMnhXYURoT1JtTmhWMGN4UzBsVVRYWkVRekJJZVhSbmQzSnJWRUZwUW0xdVFpOUpDbXczYzNGT1F6bFVWak41WWxOaWVVMW5XRlZ5V0d4d2VqZFpOQ3R5YVRaeFJXVTRUMjFxUVV0Q1oyZHhhR3RxVDFCUlVVUkJkMDV1UVVSQ2EwRnFRV0VLZGpkMWMzQlRkbk5OV1V4UFNYRmpWalkxVnpkVlJXWlZiQzhyYjJGRVZtTkJibFZDVkc0MFZucDZWMVpPZERkeVVtZ3ZjMGRWT1U5M01XWnpaMkZSUXdwTlNFdHFhbVJzVW05MVYxcFdNVE5SZUZKeFZXeDNhVmx1YzI4NFN5OU1jbVZ3YjJ4VVYzVjFPV2h0U2pRME9UaENZbmh3VVd0SE9ESkJhVVpuZDBoTENtbEJQVDBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}]}, "messageSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": "MZSTnUiO6u79z5kNNVQtmtHOeIeJxOIwWiBg63BY5aQ="}, "signature": "MEQCIBFw4Q/zQYrrV4yRjStNi0JGw4o4U7cXiBXVGRK+a5MWAiBaAa0LMCzVFqzUDmY+0F+jvDBo0hRTsnIrETcTLcVOfA=="}} diff --git a/baselibs.conf b/baselibs.conf index d43116d..6b18549 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -1,3 +1,3 @@ -python314-base -python314 -libpython3_14-1_0 +python315-base +python315 +libpython3_15-1_0 diff --git a/bpo-31046_ensurepip_honours_prefix.patch b/bpo-31046_ensurepip_honours_prefix.patch index a962e30..6c317b5 100644 --- a/bpo-31046_ensurepip_honours_prefix.patch +++ b/bpo-31046_ensurepip_honours_prefix.patch @@ -13,10 +13,10 @@ Co-Authored-By: Xavier de Gaye 5 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst -Index: Python-3.14.0rc1/Doc/library/ensurepip.rst +Index: Python-3.15.0a1/Doc/library/ensurepip.rst =================================================================== ---- Python-3.14.0rc1.orig/Doc/library/ensurepip.rst 2025-07-22 18:42:44.000000000 +0200 -+++ Python-3.14.0rc1/Doc/library/ensurepip.rst 2025-07-23 10:10:31.690342385 +0200 +--- Python-3.15.0a1.orig/Doc/library/ensurepip.rst 2025-10-14 12:46:08.000000000 +0200 ++++ Python-3.15.0a1/Doc/library/ensurepip.rst 2025-10-24 23:53:43.587408643 +0200 @@ -61,7 +61,11 @@ By default, ``pip`` is installed into the current virtual environment (if one is active) or into the system site packages (if there is no @@ -57,10 +57,10 @@ Index: Python-3.14.0rc1/Doc/library/ensurepip.rst .. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap .. note:: -Index: Python-3.14.0rc1/Lib/ensurepip/__init__.py +Index: Python-3.15.0a1/Lib/ensurepip/__init__.py =================================================================== ---- Python-3.14.0rc1.orig/Lib/ensurepip/__init__.py 2025-07-23 10:10:18.541751619 +0200 -+++ Python-3.14.0rc1/Lib/ensurepip/__init__.py 2025-07-23 10:10:31.690818287 +0200 +--- Python-3.15.0a1.orig/Lib/ensurepip/__init__.py 2025-10-24 23:53:22.118065622 +0200 ++++ Python-3.15.0a1/Lib/ensurepip/__init__.py 2025-10-24 23:53:43.587899003 +0200 @@ -106,27 +106,27 @@ os.environ['PIP_CONFIG_FILE'] = os.devnull @@ -94,7 +94,7 @@ Index: Python-3.14.0rc1/Lib/ensurepip/__init__.py Note that calling this function will alter both sys.path and os.environ. """ -@@ -162,6 +162,8 @@ +@@ -171,6 +171,8 @@ args = ["install", "--no-cache-dir", "--no-index", "--find-links", tmpdir] if root: args += ["--root", root] @@ -103,7 +103,7 @@ Index: Python-3.14.0rc1/Lib/ensurepip/__init__.py if upgrade: args += ["--upgrade"] if user: -@@ -238,6 +240,11 @@ +@@ -247,6 +249,11 @@ help="Install everything relative to this alternate root directory.", ) parser.add_argument( @@ -115,7 +115,7 @@ Index: Python-3.14.0rc1/Lib/ensurepip/__init__.py "--altinstall", action="store_true", default=False, -@@ -256,6 +263,7 @@ +@@ -265,6 +272,7 @@ return _bootstrap( root=args.root, @@ -123,11 +123,11 @@ Index: Python-3.14.0rc1/Lib/ensurepip/__init__.py upgrade=args.upgrade, user=args.user, verbosity=args.verbosity, -Index: Python-3.14.0rc1/Lib/test/test_ensurepip.py +Index: Python-3.15.0a1/Lib/test/test_ensurepip.py =================================================================== ---- Python-3.14.0rc1.orig/Lib/test/test_ensurepip.py 2025-07-23 10:10:19.969641992 +0200 -+++ Python-3.14.0rc1/Lib/test/test_ensurepip.py 2025-07-23 10:10:31.691217643 +0200 -@@ -100,6 +100,17 @@ +--- Python-3.15.0a1.orig/Lib/test/test_ensurepip.py 2025-10-24 23:53:23.546712597 +0200 ++++ Python-3.15.0a1/Lib/test/test_ensurepip.py 2025-10-24 23:53:43.588286136 +0200 +@@ -105,6 +105,17 @@ unittest.mock.ANY, ) @@ -145,11 +145,11 @@ Index: Python-3.14.0rc1/Lib/test/test_ensurepip.py def test_bootstrapping_with_user(self): ensurepip.bootstrap(user=True) -Index: Python-3.14.0rc1/Makefile.pre.in +Index: Python-3.15.0a1/Makefile.pre.in =================================================================== ---- Python-3.14.0rc1.orig/Makefile.pre.in 2025-07-23 10:10:27.325708066 +0200 -+++ Python-3.14.0rc1/Makefile.pre.in 2025-07-23 10:10:31.691716104 +0200 -@@ -2371,7 +2371,7 @@ +--- Python-3.15.0a1.orig/Makefile.pre.in 2025-10-24 23:53:39.419910772 +0200 ++++ Python-3.15.0a1/Makefile.pre.in 2025-10-24 23:53:43.588889640 +0200 +@@ -2378,7 +2378,7 @@ install|*) ensurepip="" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ @@ -158,7 +158,7 @@ Index: Python-3.14.0rc1/Makefile.pre.in fi .PHONY: altinstall -@@ -2382,7 +2382,7 @@ +@@ -2389,7 +2389,7 @@ install|*) ensurepip="--altinstall" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ @@ -167,9 +167,9 @@ Index: Python-3.14.0rc1/Makefile.pre.in fi .PHONY: commoninstall -Index: Python-3.14.0rc1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst +Index: Python-3.15.0a1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ Python-3.14.0rc1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 2025-07-23 10:10:31.692253536 +0200 ++++ Python-3.15.0a1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst 2025-10-24 23:53:43.589498870 +0200 @@ -0,0 +1 @@ +A directory prefix can now be specified when using :mod:`ensurepip`. diff --git a/fix-test-recursion-limit-15.6.patch b/fix-test-recursion-limit-15.6.patch index 59d2d51..77ee587 100644 --- a/fix-test-recursion-limit-15.6.patch +++ b/fix-test-recursion-limit-15.6.patch @@ -2,10 +2,10 @@ Lib/test/test_compile.py | 5 +++++ 1 file changed, 5 insertions(+) -Index: Python-3.14.0b3/Lib/test/test_compile.py +Index: Python-3.15.0a1/Lib/test/test_compile.py =================================================================== ---- Python-3.14.0b3.orig/Lib/test/test_compile.py 2025-06-22 00:32:01.975698954 +0200 -+++ Python-3.14.0b3/Lib/test/test_compile.py 2025-06-22 00:32:07.740981155 +0200 +--- Python-3.15.0a1.orig/Lib/test/test_compile.py 2025-10-24 23:53:23.250923195 +0200 ++++ Python-3.15.0a1/Lib/test/test_compile.py 2025-10-24 23:53:52.578315707 +0200 @@ -24,6 +24,9 @@ from test.support.bytecode_helper import instructions_with_positions from test.support.os_helper import FakePath @@ -24,7 +24,7 @@ Index: Python-3.14.0b3/Lib/test/test_compile.py @support.skip_emscripten_stack_overflow() def test_extended_arg(self): repeat = 100 -@@ -709,6 +713,7 @@ +@@ -724,6 +728,7 @@ @support.cpython_only @unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI") diff --git a/gh138131-exclude-pycache-from-digest.patch b/gh138131-exclude-pycache-from-digest.patch deleted file mode 100644 index c5e371d..0000000 --- a/gh138131-exclude-pycache-from-digest.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 4bb41b28d5bac09bccd636d8c5fefe1a462f63a7 Mon Sep 17 00:00:00 2001 -From: Alm -Date: Mon, 25 Aug 2025 08:56:38 +0300 -Subject: [PATCH 1/4] Exclude .pyc files from the computed digest in the jit - stencils - ---- - Tools/jit/_targets.py | 3 +++ - 1 file changed, 3 insertions(+) - -Index: Python-3.14.0rc2/Tools/jit/_targets.py -=================================================================== ---- Python-3.14.0rc2.orig/Tools/jit/_targets.py -+++ Python-3.14.0rc2/Tools/jit/_targets.py -@@ -69,6 +69,9 @@ class _Target(typing.Generic[_S, _R]): - hasher.update(PYTHON_EXECUTOR_CASES_C_H.read_bytes()) - hasher.update((self.pyconfig_dir / "pyconfig.h").read_bytes()) - for dirpath, _, filenames in sorted(os.walk(TOOLS_JIT)): -+ # Exclude cache files from digest computation to ensure reproducible builds. -+ if dirpath.endswith("__pycache__"): -+ continue - for filename in filenames: - hasher.update(pathlib.Path(dirpath, filename).read_bytes()) - return hasher.hexdigest() -Index: Python-3.14.0rc2/Misc/NEWS.d/next/Build/2025-08-27-09-52-45.gh-issue-138061.fMVS9w.rst -=================================================================== ---- /dev/null -+++ Python-3.14.0rc2/Misc/NEWS.d/next/Build/2025-08-27-09-52-45.gh-issue-138061.fMVS9w.rst -@@ -0,0 +1 @@ -+Ensure reproducible builds by making JIT stencil header generation deterministic. diff --git a/gh139257-Support-docutils-0.22.patch b/gh139257-Support-docutils-0.22.patch index 9e26f6f..cdbaf5b 100644 --- a/gh139257-Support-docutils-0.22.patch +++ b/gh139257-Support-docutils-0.22.patch @@ -7,12 +7,12 @@ Subject: [PATCH 1/2] gh-139257: Support docutils >= 0.22 Doc/tools/extensions/pyspecific.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) -Index: Python-3.14.0/Doc/tools/extensions/pyspecific.py +Index: Python-3.15.0a1/Doc/tools/extensions/pyspecific.py =================================================================== ---- Python-3.14.0.orig/Doc/tools/extensions/pyspecific.py -+++ Python-3.14.0/Doc/tools/extensions/pyspecific.py -@@ -25,11 +25,21 @@ from sphinx.util.docutils import SphinxD - SOURCE_URI = 'https://github.com/python/cpython/tree/3.14/%s' +--- Python-3.15.0a1.orig/Doc/tools/extensions/pyspecific.py 2025-10-14 12:46:08.000000000 +0200 ++++ Python-3.15.0a1/Doc/tools/extensions/pyspecific.py 2025-10-24 23:55:02.700550007 +0200 +@@ -25,11 +25,21 @@ + SOURCE_URI = 'https://github.com/python/cpython/tree/main/%s' # monkey-patch reST parser to disable alphabetic and roman enumerated lists +def _disable_alphabetic_and_roman(text): diff --git a/python-3.3.0b1-fix_date_time_compiler.patch b/python-3.3.0b1-fix_date_time_compiler.patch index 6f21f15..7f1b240 100644 --- a/python-3.3.0b1-fix_date_time_compiler.patch +++ b/python-3.3.0b1-fix_date_time_compiler.patch @@ -2,11 +2,11 @@ Makefile.pre.in | 5 +++++ 1 file changed, 5 insertions(+) -Index: Python-3.14.0rc1/Makefile.pre.in +Index: Python-3.15.0a1/Makefile.pre.in =================================================================== ---- Python-3.14.0rc1.orig/Makefile.pre.in 2025-07-22 18:42:44.000000000 +0200 -+++ Python-3.14.0rc1/Makefile.pre.in 2025-07-23 10:10:27.325708066 +0200 -@@ -1910,6 +1910,11 @@ +--- Python-3.15.0a1.orig/Makefile.pre.in 2025-10-14 12:46:08.000000000 +0200 ++++ Python-3.15.0a1/Makefile.pre.in 2025-10-24 23:53:39.419910772 +0200 +@@ -1917,6 +1917,11 @@ -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \ -o $@ $(srcdir)/Modules/getbuildinfo.c diff --git a/python314-rpmlintrc b/python315-rpmlintrc similarity index 100% rename from python314-rpmlintrc rename to python315-rpmlintrc diff --git a/python314.changes b/python315.changes similarity index 86% rename from python314.changes rename to python315.changes index adbebc6..6521080 100644 --- a/python314.changes +++ b/python315.changes @@ -1,3 +1,1746 @@ +------------------------------------------------------------------- +Fri Oct 24 21:45:47 UTC 2025 - Matej Cepl + +- New development of new major version, update to 3.15.0~a1: + - Tools/Demos + - gh-139330: SBOM generation tool didn’t cross-check + the version and checksum values against the + Modules/expat/refresh.sh script, leading to the values + becoming out-of-date during routine updates. + - gh-132006: XCframeworks now include privacy manifests to + satisfy Apple App Store submission requirements. + - gh-138171: A script for building an iOS XCframework was + added. As part of this change, the top level iOS folder has + been moved to be a subdirectory of the Apple folder. + - gh-137873: The iOS test runner has been simplified, + resolving some issues that have been observed using + the runner in GitHub Actions and Azure Pipelines test + environments. + - gh-137484: Have Tools/wasm/wasi put the build Python into a + directory named after the build triple instead of “build”. + - gh-137025: The wasm_build.py script has been removed. + Tools/wasm/emscripten and Tools/wasm/wasi should be used + instead, as described in the Dev Guide. + - gh-137248: Add a --logdir option to Tools/wasm/wasi for + specifying where to write log files. + - gh-137243: Have Tools/wasm/wasi detect a WASI SDK install + in /opt when it was directly extracted from a release + tarball. + - gh-136251: Fixes and usability improvements for + Tools/wasm/emscripten/web_example + - gh-135968: Stubs for strip are now provided as part of an + iOS install. + - gh-135379: The cases generator no longer accepts type + annotations on stack items. Conversions to non-default + types are now done explicitly in bytecodes.c and + optimizer_bytecodes.c. This will simplify code generation + for top-of-stack caching and other future features. + - gh-134215: REPL import autocomplete only suggests private + modules when explicitly specified. + - Tests + - gh-139208: Fix regrtest --fast-ci --verbose: don’t ignore + the --verbose option anymore. Patch by Victor Stinner. + - gh-138313: Restore skipped test and add janky workaround + to prevent select buildbots from failing with a + ResourceWarning. + - gh-135966: The iOS testbed now handles the app_packages + folder as a site directory. + - gh-135494: Fix regrtest to support excluding tests from + --pgo tests. Patch by Victor Stinner. + - gh-132815: Fix test__opcode: add JUMP_BACKWARD to + specialization stats. + - gh-135489: Show verbose output for failing tests during PGO + profiling step with –enable-optimizations. + - gh-135401: Add a new GitHub CI job to test the ssl module + with AWS-LC as the backing cryptography and TLS library. + - gh-135120: Add test.support.subTests(). + - gh-134567: Expose log formatter to users in + TestCase.assertLogs. unittest.TestCase.assertLogs() will + now optionally accept a formatter that will be used to + format the strings in output if provided. + - gh-133744: Fix multiprocessing interrupt test. Add an event + to synchronize the parent process with the child process: + wait until the child process starts sleeping. Patch by + Victor Stinner. + - gh-133682: Fixed test case + test.test_annotationlib.TestStringFormat.test_displays + which ensures proper handling of complex data structures + (lists, sets, dictionaries, and tuples) in string + annotations. + - gh-133639: Fix + TestPyReplAutoindent.test_auto_indent_default() doesn’t run + input_code. + - Security + - gh-139700: Check consistency of the zip64 end of central + directory record. Support records with “zip64 extensible + data” if there are no bytes prepended to the ZIP file. + - gh-139400: xml.parsers.expat: Make sure that parent + Expat parsers are only garbage-collected once they + are no longer referenced by subparsers created by + ExternalEntityParserCreate(). Patch by Sebastian Pipping. + - gh-139283: sqlite3: correctly handle maximum number of rows + to fetch in Cursor.fetchmany and reject negative values for + Cursor.arraysize. Patch by Bénédikt Tran. + - gh-136053: marshal: fix a possible crash when deserializing + slice objects. + - gh-135661: Fix parsing start and end tags in + html.parser.HTMLParser according to the HTML5 standard. + - Whitespaces no longer accepted between does not end the script section. + - Vertical tabulation (\v) and non-ASCII whitespaces no + longer recognized as whitespaces. The only whitespaces + are \t\n\r\f and space. + - Null character (U+0000) no longer ends the tag name. + - Attributes and slashes after the tag name in end tags are + now ignored, instead of terminating after the first > in + quoted attribute value. E.g. . + - Multiple slashes and whitespaces between the last + attribute and closing > are now ignored in both start and + end tags. E.g. . + - Multiple = between attribute name and value are no longer + collapsed. E.g. produces attribute “foo” + with value “=bar”. + - gh-135661: Fix CDATA section parsing in + html.parser.HTMLParser according to the HTML5 standard: ] + ]> and ]] > no longer end the CDATA section. Add private + method _set_support_cdata() which can be used to specify + how to parse <[CDATA[ — as a CDATA section in foreign + content (SVG or MathML) or as a bogus comment in the HTML + namespace. + - gh-102555: Fix comment parsing in html.parser.HTMLParser + according to the HTML5 standard. --!> now ends the comment. + -- > no longer ends the comment. Support abnormally ended + empty comments <--> and <--->. + - gh-135462: Fix quadratic complexity in processing specially + crafted input in html.parser.HTMLParser. End-of-file errors + are now handled according to the HTML5 specs – comments and + declarations are automatically closed, tags are ignored. + - gh-118350: Fix support of escapable raw text mode (elements + “textarea” and “title”) in html.parser.HTMLParser. + - gh-135034: Fixes multiple issues that allowed tarfile + extraction filters (filter="data" and filter="tar") to be + bypassed using crafted symlinks and hard links. + - Addresses CVE 2024-12718, CVE 2025-4138, CVE 2025-4330, and + CVE 2025-4517. + - gh-133767: Fix use-after-free in the “unicode-escape” + decoder with a non-“strict” error handler. + - gh-133623: Indicate through ssl.HAS_PSK_TLS13 whether + the ssl module supports “External PSKs” in TLSv1.3, as + described in RFC 9258. Patch by Will Childs-Klein. + - gh-128840: Short-circuit the processing of long IPv6 + addresses early in ipaddress to prevent excessive memory + consumption and a minor denial-of-service. + - Library + - gh-139482: Optimize os.environ.clear() by calling + clearenv(3) when this function is available. Patch by + Victor Stinner. + - gh-139958: The application/toml mime type is now supported + by mimetypes. Patch by Gil Forcada. + - gh-139823: ensurepip now fails with a nicer error message + when the zlib module is not available. + - gh-139905: Add suggestion to error message for + typing.Generic subclasses when cls.__parameters__ + is missing due to a parent class failing to call + super().__init_subclass__() in its __init_subclass__. + - gh-139894: Fix incorrect sharing of current task with the + child process while forking in asyncio. Patch by Kumar + Aditya. + - gh-139845: Fix to not print KeyboardInterrupt twice in + default asyncio REPL. + - gh-139783: Fix inspect.getsourcelines() for the case when a + decorator is followed by a comment or an empty line. + - gh-139809: Prevent premature colorization of subparser prog + in argparse.ArgumentParser.add_subparsers() to respect + color environment variable changes after parser creation. + - gh-139736: Fix excessive indentation in the default + argparse HelpFormatter. Patch by Alexander Edland. + - gh-70765: http.server: fix default handling of HTTP/0.9 + requests in BaseHTTPRequestHandler. Previously, + BaseHTTPRequestHandler.parse_request() incorrectly waited + for headers in the request although those are not supported + in HTTP/0.9. Patch by Bénédikt Tran. + - gh-139322: Fix os.getlogin() error handling: fix the error + number. Patch by Victor Stinner. + - gh-135953: Add a Gecko format output to the tachyon + profiler via --gecko. + - gh-139184: os.forkpty() does now make the returned file + descriptor non-inheritable. + - gh-139391: Fix an issue when, on non-Windows platforms, it + was not possible to gracefully exit a python -m asyncio + process suspended by Ctrl+Z and later resumed by fg other + than with kill. + - gh-139374: timeit: Add color to error tracebacks. + - gh-90949: Add + SetBillionLaughsAttackProtectionActivationThreshold() and + SetBillionLaughsAttackProtectionMaximumAmplification() + to xmlparser objects to tune protections against billion + laughs attacks. Patch by Bénédikt Tran. + - gh-139312: Upgrade bundled libexpat to 2.7.3 + - gh-139289: Do a real lazy-import on rlcompleter in pdb and + restore the existing completer after importing rlcompleter. + - gh-90949: Add SetAllocTrackerActivationThreshold() and + SetAllocTrackerMaximumAmplification() to xmlparser objects + to tune protections against disproportional amounts of + dynamic memory usage from within an Expat parser. Patch by + Bénédikt Tran. + - gh-67795: Functions that take timestamp or timeout + arguments now accept any real numbers (such as Decimal and + Fraction), not only integers or floats, although this does + not improve precision. + - gh-95953: A CSS class, diff_changed, was added to the + changed lines in the make_table output of difflib.HtmlDiff. + Patch by Katie Gardner. + - gh-139210: Fix use-after-free when reporting unknown event + in xml.etree.ElementTree.iterparse(). Patch by Ken Jin. + - gh-138860: Lazy import rlcompleter in pdb to avoid deadlock + in subprocess. + - gh-112729: Fix crash when calling + concurrent.interpreters.create() when the process is out of + memory. + - gh-126016: Fix an assertion failure when sending + KeyboardInterrupt to a Python process running a + subinterpreter in a separate thread. + - gh-118803: collections.abc.ByteString has been removed from + collections.abc.__all__, and typing.ByteString has been + removed from typing.__all__. The former has been deprecated + since Python 3.12, and the latter has been deprecated since + Python 3.9. Both classes are scheduled for removal in + Python 3.17. + - Additionally, the following statements now cause + DeprecationWarnings to be emitted at runtime: + from collections.abc import ByteString, from + typing import ByteString, import collections.abc; + collections.abc.ByteString and import typing; + typing.ByteString. Both classes already caused + DeprecationWarnings to be emitted if they were subclassed + or used as the second argument to isinstance() or + issubclass(), but they did not previously lead to + DeprecationWarnings if they were merely imported or + accessed from their respective modules. + - gh-135729: Fix unraisable exception during finalization + when using concurrent.interpreters in the REPL. + - gh-139076: Fix a bug in the pydoc module that was hiding + functions in a Python module if they were implemented in an + extension module and the module did not have __all__. + - gh-139090: Add os.RWF_DONTCACHE constant for Linux 6.14+. + - gh-139065: Fix trailing space before a wrapped long word if + the line length is exactly width in textwrap. + - gh-139001: Fix race condition in pathlib.Path on the + internal _raw_paths field. + - gh-138813: multiprocessing.BaseProcess defaults kwargs to + None instead of a shared dictionary. + - gh-138998: Update bundled libexpat to 2.7.2 + - gh-138993: Dedent credits text. + - gh-118803: Add back collections.abc.ByteString and + typing.ByteString. Both had been removed in prior alpha, + beta and release candidates for Python 3.14, but their + removal has now been postponed to Python 3.17. + - gh-130567: Fix possible crash in locale.strxfrm() due to a + platform bug on macOS. + - gh-137226: Fix typing.get_type_hints() calls on generic + typing.TypedDict classes defined with string annotations. + - gh-138899: Executing quit command in pdb will raise + bdb.BdbQuit when pdb is started from an asyncio console + using breakpoint() or pdb.set_trace(). + - gh-138804: Raise TypeError instead of AttributeError when + an argument of incorrect type is passed to shlex.quote(). + This restores the behavior of the function prior to 3.14. + - gh-138779: Support device numbers larger than 2**63-1 for + the st_rdev field of the os.stat_result structure. + - gh-138682: Added symmetric difference support to + collections.Counter objects. + - gh-138712: Add os.NODEV. + - gh-128636: Fix crash in PyREPL when os.environ is + overwritten with an invalid value for mac + - gh-138720: Fix an issue where io.BufferedWriter and + io.BufferedRandom had different definitions of “closed” for + close() and flush() which resulted in an exception when + close called flush but flush thought the file was already + closed. + - gh-138706: Update unicodedata database to Unicode 17.0.0. + - gh-76007: Deprecate __version__ from a number of standard + library modules. Patch by Hugo van Kemenade. + - gh-138535: Speed up os.stat() for files with reasonable + timestamps. Contributed by Jeffrey Bosboom. + - gh-116946: curses.panel: the type of + curses.panel.new_panel() is now immutable. Patch by + Bénédikt Tran. + - gh-116946: zlib: the types of zlib.compressobj() and + zlib.decompressobj() are now immutable. Patch by Bénédikt + Tran. + - gh-116946: os: the os.DirEntry type and the type of + os.scandir() are now immutable. Patch by Bénédikt Tran. + - gh-116946: tkinter: the types _tkinter.Tcl_Obj (wrapper + for Tcl objects), _tkinter.tktimertoken (obtained by + calling createtimerhandler() on a Tk application) and + _tkinter.tkapp (the runtime type of Tk applications) are + now immutable. Patch by Bénédikt Tran. + - gh-138514: Raise ValueError when a multi-character string + is passed to the echo_char parameter of getpass.getpass(). + Patch by Benjamin Johnson. + - gh-137706: Fix the partial evaluation of annotations that + use typing.Annotated[T, x] where T is a forward reference. + - gh-88375: Fix normalization of the robots.txt rules and + URLs in the urllib.robotparser module. No longer ignore + trailing ?. Distinguish raw special characters ?, = and & + from the percent-encoded ones. + - gh-138515: email is added to Emscripten build. + - gh-99948: ctypes.util.find_library() now works in + Emscripten build. + - gh-111788: Fix parsing errors in the urllib.robotparser + module. Don’t fail trying to parse weird paths. Don’t fail + trying to decode non-UTF-8 robots.txt files. + - gh-138432: zoneinfo.reset_tzpath() will now convert any + os.PathLike objects it receives into strings before adding + them to TZPATH. It will raise TypeError if anything other + than a string is found after this conversion. If given an + os.PathLike object that represents a relative path, it will + now raise ValueError instead of TypeError, and present a + more informative error message. + - gh-132657: Improve the scaling of copy.copy() and + copy.deepcopy() in the free-threading build. + - gh-116946: The types of select.poll() and select.epoll() + objects are now immutable. Patch by Bénédikt Tran. + - gh-116946: The _random.Random C type is now immutable. + Patch by Bénédikt Tran. + - gh-57911: When extracting tar files on Windows, slashes in + symlink targets will be replaced by backslashes to prevent + corrupted links. + - gh-138205: Removed the resize() method on platforms that + don’t support the underlying syscall, instead of raising a + SystemError. + - gh-138008: Fix segmentation faults in the ctypes module due + to invalid argtypes. Patch by Dung Nguyen. + - gh-138252: ssl: SSLContext objects can now set client and + server TLS signature algorithms. If Python has been built + with OpenSSL 3.5 or later, SSLSocket objects can return the + signature algorithms selected on a connection. + - gh-138253: Add the block parameter in the put() and + get() methods of the concurrent.interpreters queues for + compatibility with the queue.Queue interface. + - gh-60462: Fix locale.strxfrm() on Solaris (and possibly + other platforms). + - gh-138239: The REPL now highlights type as a soft keyword + in type statements. + - gh-78502: mmap.mmap now has a trackfd parameter on Windows; + if it is False, the file handle corresponding to fileno + will not be duplicated. + - gh-138204: Forbid expansion of shared anonymous memory maps + on Linux, which caused a bus error. + - gh-138010: Fix an issue where defining a class with a + @warnings.deprecated-decorated base class may not invoke + the correct __init_subclass__() method in cases involving + multiple inheritance. Patch by Brian Schubert. + - gh-134716: Add support of regular expressions in the -W + option and the PYTHONWARNINGS environment variable. + - gh-138133: Prevent infinite traceback loop when sending + CTRL^C to Python through strace. + - gh-138122: Implement PEP 799 – A dedicated profiling + package for organizing Python profiling tools. Patch by + Pablo Galindo. + - gh-138092: Fixed a bug in mmap.mmap.flush() where calling + with only an offset parameter would fail. + - gh-138044: Remove compatibility shim for deprecated + parameter package in importlib.resources.files(). Patch by + Semyon Moroz. + - gh-86819: socket: Add missing constants for ISO-TP sockets. + - gh-137884: Add threading.get_native_id() support for + Illumos/Solaris. Patch by Yüce Tekol. + - gh-134869: Fix an issue where pressing Ctrl+C during tab + completion in the REPL would leave the autocompletion menu + in a corrupted state. + - gh-137840: typing.TypedDict now supports the closed and + extra_items keyword arguments (as described in PEP 728) to + control whether additional non-required keys are allowed + and to specify their value type. + - gh-132947: Applied changes to importlib.metadata from + importlib_metadata 8.7, including dist now disallowed + for EntryPoints.select; deferred imports for faster + import times; added support for metadata with newlines + (python/cpython#119650); and metadata() function now + returns None when a metadata directory is present but no + metadata is present. + - gh-90548: Fix musl detection for platform.libc_ver() on + Alpine Linux if compiled with –strip-all. + - gh-137317: inspect.signature() now correctly handles + classes that use a descriptor on a wrapped __init__() or + __new__() method. Contributed by Yongyu Yan. + - gh-137754: Fix import of the zoneinfo module if the C + implementation of the datetime module is not available. + - gh-125854: Improve error messages for invalid category in + warnings.warn(). + - gh-137729: locale.setlocale() now supports language codes + with @-modifiers. @-modifier are no longer silently removed + in locale.getlocale(), but included in the language code. + - gh-73487: Speedup processing arguments (up to 1.5x) in + the decimal module methods, that now using METH_FASTCALL + calling convention. Patch by Sergey B Kirpichev. + - gh-137634: Calendar pages generated by the + calendar.HTMLCalendar class now support dark mode and + have been migrated to the HTML5 standard for improved + accessibility. + - gh-137630: The _interpreters module now uses Argument + Clinic to parse arguments. Patch by Adam Turner. + - gh-137583: Fix a deadlock introduced in 3.13.6 when a call + to ssl.SSLSocket.recv was blocked in one thread, and then + another method on the object (such as ssl.SSLSocket.send) + was subsequently called in another thread. + - gh-92936: Update regex used by http.cookies.SimpleCookie to + handle values containing double quotes. + - gh-137426: Remove the code deprecation of + importlib.abc.ResourceLoader. It is documented as + deprecated, but left for backwards compatibility with other + classes in importlib.abc. + - gh-137490: Handle ECANCELED in the same way as EINTR in + signal.sigwaitinfo() on NetBSD. + - gh-137512: Add new constants in the resource module: + RLIMIT_NTHR, RLIMIT_UMTXP, RLIMIT_PIPEBUF, RLIMIT_THREADS, + RLIM_SAVED_CUR, and RLIM_SAVED_MAX. + - gh-137044: resource.RLIM_INFINITY is now always a positive + integer. On all supported platforms, it is larger than any + limited resource value, which simplifies comparison of the + resource values. Previously, it could be negative, such as + -1 or -3, depending on platform. + - gh-137477: Fix inspect.getblock(), inspect.getsourcelines() + and inspect.getsource() for generator expressions. + - gh-137481: Calendar uses the lengths of the locale’s + weekdays to decide if the width requires abbreviation. + - gh-137466: Remove undocumented glob.glob0() and + glob.glob1() functions, which have been deprecated since + Python 3.13. Use glob.glob() and pass a directory to its + root_dir argument instead. + - gh-137044: Return large limit values as positive integers + instead of negative integers in resource.getrlimit(). + Accept large values and reject negative values (except + RLIM_INFINITY) for limits in resource.setrlimit(). + - gh-115766: Fix ipaddress.IPv4Interface.is_unspecified. + - gh-75989: tarfile.TarFile.extractall() and + tarfile.TarFile.extract() now overwrite symlinks when + extracting hardlinks. (Contributed by Alexander Enrique + Urieles Nieto in gh-75989.) + - gh-137017: Fix threading.Thread.is_alive to remain True + until the underlying OS thread is fully cleaned up. This + avoids false negatives in edge cases involving thread + monitoring or premature threading.Thread.is_alive calls. + - gh-137273: Fix debug assertion failure in + locale.setlocale() on Windows. + - gh-137191: Fix how type parameters are collected, when + typing.Protocol are specified with explicit parameters. + Now, typing.Generic and typing.Protocol always dictate the + parameter number and parameter ordering of types. Previous + behavior was a bug. + - gh-137282: Fix tab completion and dir() on + concurrent.futures. + - gh-137257: Bump the version of pip bundled in ensurepip to + version 25.2 + - gh-137239: heapq: Update heapq.__all__ with *_max + functions. + - gh-124503: ast.literal_eval() is 10-20% faster for small + inputs. + - gh-137226: Fix behavior of + annotationlib.ForwardRef.evaluate() when the type_params + parameter is passed and the name of a type param is also + present in an enclosing scope. + - gh-137197: SSLContext objects can now set TLS 1.3 cipher + suites via set_ciphersuites(). + - gh-81325: tarfile.TarFile now accepts a path-like when + working on a tar archive. (Contributed by Alexander Enrique + Urieles Nieto in gh-81325.) + - gh-137185: Fix a potential async-signal-safety issue in + faulthandler when printing C stack traces. + - gh-133951: Remove lib64-lib symlink creation when creating + new virtual environments in venv module + - gh-130522: Fix unraisable TypeError raised during + interpreter shutdown in the threading module. + - gh-137059: Fix handling of file URLs with a + Windows drive letter in the URL authority by + urllib.request.url2pathname(). This fixes a regression in + earlier pre-releases of Python 3.14. + - gh-136980: Remove unused C tracing code in bdb for event + type c_call, c_return and c_exception + - gh-130577: tarfile now validates archives to ensure member + offsets are non-negative. (Contributed by Alexander Enrique + Urieles Nieto in gh-130577.) + - gh-136170: Removed the unreleased + zipfile.ZipFile.data_offset property added in 3.14.0a7 as + it wasn’t fully clear which behavior it should have in some + situations so the result was not always what a user might + expect. + - gh-121237: Support %:z directive for + datetime.datetime.strptime(), datetime.time.strptime() and + time.strptime(). Patch by Lucas Esposito and Semyon Moroz. + - gh-136929: Ensure that hash functions guaranteed to be + always available exist as attributes of hashlib even if + they will not work at runtime due to missing backend + implementations. For instance, hashlib.md5 will no longer + raise AttributeError if OpenSSL is not available and Python + has been built without MD5 support. Patch by Bénédikt Tran. + - gh-124621: pyrepl now works in Emscripten. + - gh-136914: Fix retrieval of doctest.DocTest.lineno + for objects decorated with functools.cache() or + functools.cached_property. + - gh-136912: hmac.digest() now properly handles large + keys and messages by falling back to the pure Python + implementation when necessary. Patch by Bénédikt Tran. + - gh-83424: Allows creating a ctypes.CDLL without name when + passing a handle as an argument. + - gh-135228: When dataclasses replaces a class with a slotted + dataclass, the original class can now be garbage collected + again. Earlier changes in Python 3.14 caused this class to + always remain in existence together with the replacement + class synthesized by dataclasses. + - gh-136874: Discard URL query and fragment in + urllib.request.url2pathname(). + - gh-136787: hashlib: improve exception messages when a + hash algorithm is not recognized, blocked by the current + security policy or incompatible with the desired operation + (for instance, using HMAC with SHAKE). Patch by Bénédikt + Tran. + - gh-130645: Enable color help by default in argparse. + - gh-131724: In http.client, a new max_response_headers + keyword-only parameter has been added to HTTPConnection + and HTTPSConnection constructors. This parameter sets the + maximum number of allowed response headers, helping to + prevent denial-of-service attacks. + - gh-135427: With -Werror, the DeprecationWarning emitted + by os.fork() and os.forkpty() in mutli-threaded processes + is now raised as an exception. Previously it was silently + ignored. Patch by Rani Pinchuk. + - gh-136234: Fix asyncio.WriteTransport.writelines() to be + robust to connection failure, by using the same behavior as + write(). + - gh-53144: encodings.aliases: Add latin_N aliases + - gh-136669: _asyncio is now statically linked for improved + performance. + - gh-136134: SMTP.auth_cram_md5() now raises an SMTPException + instead of a ValueError if Python has been built without + MD5 support. In particular, SMTP clients will not attempt + to use this method even if the remote server is assumed to + support it. Patch by Bénédikt Tran. + - gh-136134: IMAP4.login_cram_md5 now raises an IMAP4.error + if CRAM-MD5 authentication is not supported. Patch by + Bénédikt Tran. + - gh-136591: _hashlib: avoid using deprecated functions + ERR_func_error_string and EVP_MD_CTX_md when using OpenSSL + 3.0 and later. Patch by Bénédikt Tran. + - gh-136571: datetime.date.fromisocalendar() can now raise + OverflowError for out of range arguments. + - gh-136549: Fix signature of threading.excepthook(). + - gh-136492: Expose PEP 667’s FrameLocalsProxyType in the + types module. + - gh-83336: utf8_sig is now aliased to encodings.utf_8_sig + - gh-136523: Fix wave.Wave_write emitting an unraisable when + open raises. + - gh-136507: Fix mimetypes CLI to handle multiple file + parameters. + - gh-52876: Add missing keepends (default True) + parameter to codecs.StreamReaderWriter.readline() and + codecs.StreamReaderWriter.readlines(). + - gh-136470: Correct + concurrent.futures.InterpreterPoolExecutor’s default thread + name. + - gh-136476: Fix a bug that was causing the + get_async_stack_trace function to miss some frames in the + stack trace. + - gh-136434: Fix docs generation of UnboundItem in + concurrent.interpreters when running with -OO. + - gh-136380: Raises AttributeError when accessing + concurrent.futures.InterpreterPoolExecutor and + subinterpreters are not available. + - gh-72327: Suggest using the system command prompt when pip + install is typed into the REPL. Patch by Tom Viner, Richard + Si, and Brian Schubert. + - gh-135953: Implement a new high-frequency runtime + profiler that leverages the existing remote debugging + functionality to collect detailed execution statistics + from running Python processes. This tool is exposed in the + profile.sample module and enables non-intrusive observation + of production applications by attaching to already-running + processes without requiring any code modifications, + restarts, or special startup flags. The observer can + perform extremely high-frequency sampling of stack traces + and interpreter state, providing detailed runtime execution + analysis of live applications. + - gh-136021: Make type_params parameter required in + typing._eval_type() after a deprecation period + for not providing this parameter. Also remove the + DeprecationWarning for the old behavior. + - gh-136286: Fix pickling failures for protocols 0 and 1 for + many objects related to subinterpreters. + - gh-136047: Fix issues with typing when the C implementation + of abc is not available. + - gh-136316: Improve support for evaluating nested forward + references in typing.evaluate_forward_ref(). + - gh-136306: ssl can now get and set groups used for key + agreement. + - gh-136156: tempfile.TemporaryFile() no longer uses + os.O_EXCL with os.O_TMPFILE, so it’s possible to use + linkat() on the file descriptor. Patch by Victor Stinner. + - gh-133982: Update Python implementation of io.BytesIO to be + thread safe. + - gh-136193: Improve TypeError error message, when + richcomparing two types.SimpleNamespace objects. + - gh-136097: Fix potential infinite recursion and KeyError in + sysconfig --generate-posix-vars. + - gh-85702: If zoneinfo._common.load_tzdata is given a + package without a resource a zoneinfo.ZoneInfoNotFoundError + is raised rather than a PermissionError. Patch by Victor + Stinner. + - gh-90733: Improve error messages when reporting invalid + parameters in hashlib.scrypt(). Patch by Bénédikt Tran. + - gh-134759: Fix UnboundLocalError in + email.message.Message.get_payload() when the payload to + decode is a bytes object. Patch by Kliment Lamonov. + - gh-136028: Fix parsing month names containing “İ” (U+0130, + LATIN CAPITAL LETTER I WITH DOT ABOVE) in time.strptime(). + This affects locales az_AZ, ber_DZ, ber_MA and crh_UA. + - gh-87135: Acquiring a threading.Lock or threading.RLock at + interpreter shutdown will raise PythonFinalizationError if + Python can determine that it would otherwise deadlock. + - gh-135995: In the palmos encoding, make byte 0x9b decode to + › (U+203A - SINGLE RIGHT-POINTING ANGLE QUOTATION MARK). + - gh-105456: Removed sre_compile, sre_constants and sre_parse + modules. + - gh-53203: Fix time.strptime() for %c and %x formats on + locales byn_ER, wal_ET and lzh_TW, and for %X format on + locales ar_SA, bg_BG and lzh_TW. + - gh-135878: Fixes a crash of types.SimpleNamespace on free + threading builds, when several threads were calling its + __repr__() method at the same time. + - gh-135853: Add math.fmax() and math.fmin() to get the + larger and smaller of two floating-point values. Patch by + Bénédikt Tran. + - gh-135836: Fix IndexError in + asyncio.loop.create_connection() that could occur when + non-OSError exception is raised during connection and + socket’s close() raises OSError. + - gh-135853: math: expose C99 signbit() function to determine + whether the sign bit of a floating-point value is set. + Patch by Bénédikt Tran. + - gh-134531: hmac: use the EVP_MAC(3ssl) interface for HMAC + when Python is built with OpenSSL 3.0 and later instead of + the deprecated HMAC_CTX(3ssl) interface. Patch by Bénédikt + Tran. + - gh-135836: Fix IndexError in + asyncio.loop.create_connection() that could occur when the + Happy Eyeballs algorithm resulted in an empty exceptions + list during connection attempts. + - gh-135855: Raise TypeError instead of SystemError when + _interpreters.set___main___attrs() is passed a non-dict + object. Patch by Brian Schubert. + - gh-135823: netrc: improve the error message when + the security check for the ownership of the default + configuration file ~/.netrc fails. Patch by Bénédikt Tran. + - gh-135815: netrc: skip security checks if os.getuid() is + missing. Patch by Bénédikt Tran. + - gh-135640: Address bug where it was possible to call + xml.etree.ElementTree.ElementTree.write() on an ElementTree + object with an invalid root element. This behavior blanked + the file passed to write if it already existed. + - gh-90117: Speed up pprint for list and tuple. + - gh-135759: hashlib: reject negative digest lengths in + OpenSSL-based SHAKE objects by raising a ValueError. + Previously, negative lengths were implicitly rejected by + raising a MemoryError or a SystemError. Patch by Bénédikt + Tran. + - gh-123471: Make concurrent iterations over itertools.chain + safe under free threading. + - gh-135645: Added supports_isolated_interpreters field to + sys.implementation. + - gh-135646: Raise consistent NameError exceptions in + annotationlib.ForwardRef.evaluate() + - gh-135557: Fix races on heapq updates and list reads on the + free threaded build. + - gh-119180: Only fetch globals and locals if necessary in + annotationlib.get_annotations() + - gh-135561: Fix a crash on DEBUG builds when an HACL* HMAC + routine fails. Patch by Bénédikt Tran. + - gh-135386: Fix opening a dbm.sqlite3 database for reading + from read-only file or directory. + - gh-135444: Fix asyncio.DatagramTransport.sendto() to + account for datagram header size when data cannot be sent. + - gh-65697: configparser’s error message when attempting to + write an invalid key is now more helpful. + - gh-135497: Fix os.getlogin() failing for longer usernames + on BSD-based platforms. + - gh-135487: Fix reprlib.Repr.repr_int() when given integers + with more than sys.get_int_max_str_digits() digits. Patch + by Bénédikt Tran. + - gh-135429: Fix the argument mismatch in _lsprof for + PY_THROW event. + - gh-135368: Fix unittest.mock.Mock generation on + dataclasses.dataclass() objects. Now all special attributes + are set as it was before gh-124429. + - gh-135336: json now encodes strings up to 2.2x faster + if they consist solely of characters that don’t require + escaping. + - gh-135335: multiprocessing: Flush stdout and stderr after + preloading modules in the forkserver. + - gh-126631: Fix multiprocessing forkserver bug which + prevented __main__ from being preloaded. + - gh-133967: Do not normalize locale name ‘C.UTF-8’ to + ‘en_US.UTF-8’. + - gh-130870: Preserve types.GenericAlias subclasses in + typing.get_type_hints() + - gh-135321: Raise a correct exception for values greater + than 0x7fffffff for the BINSTRING opcode in the C + implementation of pickle. + - gh-121914: Changed the names of the symbol tables for + lambda expressions and generator expressions to “” + and “” respectively to avoid conflicts with + user-defined names. + - gh-135276: Synchronized zipfile.Path with zipp 3.23, + including improved performance of zipfile.Path.open() for + non-reading modes, rely on functools.cached_property() to + cache values on the instance. Rely on save_method_args to + save the initialization method arguments. Fixed .name, + .stem and other basename-based properties on Windows when + working with a zipfile on disk. + - gh-135234: hashlib: improve exception messages when an + OpenSSL function failed. When memory allocation fails + on OpenSSL’s side, a MemoryError is raised instead of a + ValueError. Patch by Bénédikt Tran. + - gh-135244: uuid: when the MAC address cannot be + determined, the 48-bit node ID is now generated with a + cryptographically-secure pseudo-random number generator + (CSPRNG) as per RFC 9562, §6.10.3. This affects uuid1() and + uuid6(). + - gh-135241: The INT opcode of the C accelerator _pickle + module was updated to look only for “00” and “01” to push + booleans onto the stack, aligning with the Python pickle + module. + - gh-133934: Improve sqlite3 CLI’s .help message. + - gh-135069: Fix the “Invalid error handling” exception in + encodings.idna.IncrementalDecoder to correctly replace the + ‘errors’ parameter. + - gh-130662: +Accept leading zeros in precision and width + fields for +:class:Decimal formatting, for example + format(Decimal(1.25), '.016f'). + - gh-130662: Accept leading zeros in precision and + width fields for Fraction formatting, for example + format(Fraction(1, 3), '.016f'). + - gh-135004: Rewrite and cleanup the internal _blake2 module. + Some exception messages were changed but their types were + left untouched. Patch by Bénédikt Tran. + - gh-134953: Expand _colorize theme with keyword_constant and + implement in repl. + - gh-134978: hashlib: Supporting the string keyword parameter + in hash function constructors such as new() or the direct + hash-named constructors such as md5() and sha256() is now + deprecated and slated for removal in Python 3.19. Prefer + passing the initial data as a positional argument for + maximum backwards compatibility. Patch by Bénédikt Tran. + - gh-134970: Fix the “unknown action” exception in + argparse.ArgumentParser.add_argument_group() to correctly + replace the action class. + - gh-134718: By default, omit optional Load() values in + ast.dump(). + - gh-134718: ast.dump() now only omits None and [] values if + they are default values. + - gh-134939: Add the concurrent.interpreters module. See PEP + 734. + - gh-108885: Run each example as a subtest in unit + tests synthesized by doctest.DocFileSuite() + and doctest.DocTestSuite(). Add the + doctest.DocTestRunner.report_skip() method. + - gh-134885: Fix possible crash in the compression.zstd + module related to setting parameter types. Patch by Jelle + Zijlstra. + - gh-134857: Improve error report for doctests run with + unittest. Remove doctest module frames from tracebacks and + redundant newline character from a failure message. + - gh-128840: Fix parsing long IPv6 addresses with embedded + IPv4 address. + - gh-133579: curses: Consistently report failures of + curses C API calls in module-level methods by raising + a curses.error. This affects assume_default_colors(), + baudrate(), cbreak(), echo(), longname(), initscr(), nl(), + raw(), termattrs(), termname() and unctrl(). Patch by + Bénédikt Tran. + - gh-133579: curses.window.refresh() and + curses.window.noutrefresh() now raise a TypeError instead + of curses.error when called with an incorrect number of + arguments for pads. Patch by Bénédikt Tran. + - gh-133579: curses.window: Consistently report failures + of curses C API calls in Window methods by raising a + curses.error. This affects addch(), addnstr(), addstr(), + border(), box(), chgat(), getbkgd(), inch(), insstr() and + insnstr(). Patch by Bénédikt Tran. + - gh-134771: The time_clockid_converter() function now + selects correct type for clockid_t on Cygwin which fixes a + build error. + - gh-134637: Fix performance regression in calling a ctypes + function pointer in free threading. + - gh-134696: Built-in HACL* and OpenSSL implementations of + hash function constructors now correctly accept the same + documented named arguments. For instance, md5() could be + previously invoked as md5(data=data) or md5(string=string) + depending on the underlying implementation but these calls + were not compatible. Patch by Bénédikt Tran. + - gh-132710: If possible, ensure that uuid.getnode() + returns the same result even across different processes. + Previously, the result was constant only within the same + process. Patch by Bénédikt Tran. + - gh-134531: _hashlib: Rename internal C functions for + _hashlib.HASH and _hashlib.HASHXOF objects. Patch by + Bénédikt Tran. + - gh-134698: Fix a crash when calling methods of + ssl.SSLContext or ssl.SSLSocket across multiple threads. + - gh-134151: email: Fix TypeError in + email.utils.decode_params() when sorting RFC 2231 + continuations that contain an unnumbered section. + - gh-134635: zlib: Allow to combine Adler-32 and CRC-32 + checksums via adler32_combine() and crc32_combine(). Patch + by Callum Attryde and Bénédikt Tran. + - gh-134657: asyncio: Remove some private names from + asyncio.__all__. + - gh-134210: curses.window.getch() now correctly handles + signals. Patch by Bénédikt Tran. + - gh-80334: multiprocessing.freeze_support() now checks for + work on any “spawn” start method platform rather than only + on Windows. + - gh-134582: Fix tokenize.untokenize() round-trip errors + related to t-strings braces escaping + - gh-134580: Improved the styling of HTML diff pages + generated by the difflib.HtmlDiff class, and migrated the + output to the HTML5 standard. + - gh-134565: unittest.doModuleCleanups() no longer swallows + all but first exception raised in the cleanup code, but + raises a ExceptionGroup if multiple errors occurred. + - gh-134546: Ensure pdb remote debugging script is readable + by remote Python process. + - gh-134451: Converted asyncio.tools.CycleFoundException from + dataclass to a regular exception type. + - gh-114177: Fix asyncio to not close subprocess pipes which + would otherwise error out when the event loop is already + closed. + - gh-90871: Fixed an off by one error concerning the backlog + parameter in create_unix_server(). Contributed by Christian + Harries. + - gh-134323: Fix the threading.RLock.locked() method. + - gh-86802: Fixed asyncio memory leak in cancelled shield + tasks. For shielded tasks where the shield was cancelled, + log potential exceptions through the exception handler. + Contributed by Christian Harries. + - gh-71189: Add support of the all-but-last mode in + os.path.realpath(). + - gh-72902: Improve speed (x1.1-1.8) of the Fraction + constructor for typical inputs (float’s, Decimal’s or + strings). + - gh-134209: curses: The curses.window.instr() and + curses.window.getstr() methods now allocate their internal + buffer on the heap instead of the stack; in addition, the + max buffer size is increased from 1023 to 2047. + - gh-88994: Change datetime.datetime.now() + to half-even rounding for consistency with + datetime.datetime.fromtimestamp(). Patch by John Keith + Hohm. + - gh-80184: The default queue size is now socket.SOMAXCONN + for socketserver.TCPServer. + - gh-132983: Add compression.zstd version information to + test.pythoninfo. + - gh-134235: Updated tab completion on REPL to include + builtin modules. Contributed by Tom Wang, Hunter Young + - gh-134152: Fixed UnboundLocalError that could occur during + email header parsing if an expected trailing delimiter is + missing in some contexts. + - gh-134152: email: Fix parsing of email message ID with + invalid domain. + - gh-134168: http.server: Fix IPv6 address binding and + --directory handling when using HTTPS. + - gh-62184: Remove import of C implementation of io.FileIO + from Python implementation which has its own implementation + - gh-134087: Remove support for arbitrary positional + or keyword arguments in the C implementation of + threading.RLock objects. This was deprecated since Python + 3.14. Patch by Bénédikt Tran. + - gh-134173: Speed up asyncio performance of transferring + state from thread pool concurrent.futures.Future by up to + 4.4x. Patch by J. Nick Koston. + - gh-133982: Emit RuntimeWarning in the Python implementation + of io when the file-like object is not closed explicitly in + the presence of multiple I/O layers. + - gh-133890: The tarfile module now handles + UnicodeEncodeError in the same way as OSError when cannot + extract a member. + - gh-134097: Fix interaction of the new REPL and -X + showrefcount command line option. + - gh-133889: The generated directory listing page in + http.server.SimpleHTTPRequestHandler now only shows the + decoded path component of the requested URL, and not the + query and fragment. + - gh-134098: Fix handling paths that end with + a percent-encoded slash (%2f or %2F) in + http.server.SimpleHTTPRequestHandler. + - gh-132124: On POSIX-compliant systems, + multiprocessing.util.get_temp_dir() now ignores TMPDIR + (and similar environment variables) if the path length of + AF_UNIX socket files exceeds the platform-specific maximum + length when using the forkserver start method. Patch by + Bénédikt Tran. + - gh-134062: ipaddress: fix collisions in __hash__() for + IPv4Network and IPv6Network objects. + - gh-134004: shelve as well as underlying dbm.dumb and + dbm.sqlite now have reorganize() methods to recover unused + free space previously occupied by deleted entries. + - gh-133970: Make string.templatelib.Template and + string.templatelib.Interpolation generic. + - gh-71253: Raise ValueError in open() if opener returns a + negative file-descriptor in the Python implementation of io + to match the C implementation. + - gh-133960: Simplify and improve + typing.evaluate_forward_ref(). It now no longer raises + errors on certain invalid types. In several situations, + it is now able to evaluate forward references that were + previously unsupported. + - gh-133925: Make the private class typing._UnionGenericAlias + hashable. + - gh-133604: Remove platform.java_ver() which was deprecated + since Python 3.13. + - gh-133875: Removed deprecated + pathlib.PurePath.is_reserved(). Use os.path.isreserved() to + detect reserved paths on Windows. + - gh-133873: Remove the deprecated getmark(), setmark() + and getmarkers() methods of the Wave_read and Wave_write + classes, which were deprecated since Python 3.13. Patch by + Bénédikt Tran. + - gh-133866: Remove the undocumented function + ctypes.SetPointerType(), which has been deprecated since + Python 3.13. Patch by Bénédikt Tran. + - gh-133823: Remove support for TD = TypedDict("TD") + and TD = TypedDict("TD", None) calls for constructing + typing.TypedDict objects with zero field. Patch by Bénédikt + Tran. + - gh-125996: Fix thread safety of collections.OrderedDict. + Patch by Kumar Aditya. + - gh-133817: Remove support for creating NamedTuple classes + via the undocumented keyword argument syntax. Patch by + Bénédikt Tran. + - gh-133653: Fix argparse.ArgumentParser with the + formatter_class argument. Fix TypeError when + formatter_class is a custom subclass of HelpFormatter. + Fix TypeError when formatter_class is not a subclass + of HelpFormatter and non-standard prefix_char is used. + Fix support of colorizing when formatter_class is not a + subclass of HelpFormatter. + - gh-133810: Remove http.server.CGIHTTPRequestHandler and + --cgi flag from the python -m http.server command-line + interface. They were deprecated in Python 3.13. Patch by + Bénédikt Tran. + - gh-132641: Fixed a race in functools.lru_cache() under + free-threading. + - gh-133783: Fix bug with applying copy.replace() to ast + objects. Attributes that default to None were incorrectly + treated as required for manually created AST nodes. + - gh-133684: Fix bug where annotationlib.get_annotations() + would return the wrong result for certain classes that are + part of a class hierarchy where from __future__ import + annotations is used. + - gh-77057: Fix handling of invalid markup declarations in + html.parser.HTMLParser. + - gh-130328: Speedup pasting in PyREPL on Windows in a legacy + console. Patch by Chris Eibl. + - gh-133701: Fix bug where typing.TypedDict classes defined + under from __future__ import annotations and inheriting + from another TypedDict had an incorrect __annotations__ + attribute. + - gh-133656: Remove deprecated + zipimport.zipimporter.load_module(). Use + zipimport.zipimporter.exec_module() instead. + - gh-133722: Added a color option to difflib.unified_diff() + that colors output similar to git diff. + - gh-133489: random.getrandbits() can now generate more that + 231 bits. random.randbytes() can now generate more that 256 + MiB. + - gh-133595: Clean up sqlite3.Connection APIs. All parameters + of sqlite3.connect() except database are now keyword-only. + The first three parameters of methods create_function() + and create_aggregate() are now positional-only. + The first parameter of methods set_authorizer(), + set_progress_handler() and set_trace_callback() is now + positional-only. + - gh-133581: Improve unparsing of t-strings in ast.unparse() + and from __future__ import annotations. Empty t-strings now + round-trip correctly and formatting in interpolations is + preserved. Patch by Jelle Zijlstra. + - gh-133577: Add parameter formatter to + logging.basicConfig(). + - gh-92897: Removed the check_home parameter from + sysconfig.is_python_build(), deprecated since Python 3.12. + - gh-133551: Support t-strings (PEP 750) in annotationlib. + Patch by Jelle Zijlstra. + - gh-133517: Remove os.listdrives(), os.listvolumes() and + os.listmounts() in non Windows desktop builds since the + underlying functionality is missing. + - gh-133439: Fix dot commands with trailing spaces are + mistaken for multi-line SQL statements in the sqlite3 + command-line interface. + - gh-133447: Add basic color to sqlite3 CLI interface. + - gh-133253: Fix thread-safety issues in linecache. + - gh-133390: Support keyword completion in the sqlite3 + command-line interface and add sqlite3.SQLITE_KEYWORDS + constant. + - gh-132493: Avoid accessing __annotations__ unnecessarily in + inspect.signature(). + - gh-133017: Improve the error message of + multiprocessing.sharedctypes.Array(), + multiprocessing.sharedctypes.RawArray(), + multiprocessing.sharedctypes.Value() and + multiprocessing.sharedctypes.RawValue() when an invalid + typecode is passed. Patch by Tomas Roun + - gh-132813: Improve error messages for incorrect types and + values of csv.Dialect attributes. + - gh-132969: Prevent the ProcessPoolExecutor executor thread, + which remains running when shutdown(wait=False), from + attempting to adjust the pool’s worker processes after + the object state has already been reset during shutdown. + A combination of conditions, including a worker process + having terminated abormally, resulted in an exception and + a potential hang when the still-running executor thread + attempted to replace dead workers within the pool. + - gh-132876: ldexp() on Windows doesn’t round subnormal + results before Windows 11, but should. Python’s + math.ldexp() wrapper now does round them, so results may + change slightly, in rare cases of very small results, on + Windows versions before 11. + - gh-133009: xml.etree.ElementTree: Fix a crash in + Element.__deepcopy__ when the element is concurrently + mutated. Patch by Bénédikt Tran. + - gh-132908: Add math.isnormal() and math.issubnormal() + functions. Patch by Sergey B Kirpichev. + - gh-95380: fcntl.fcntl() and fcntl.ioctl(): Remove the 1024 + bytes limit on the size of not mutated bytes-like argument. + - gh-122781: Fix %z directive in datetime.datetime.strptime() + to allow for no provided offset as was documented. + - gh-123471: Make concurrent iterations over + itertools.combinations and itertools.product safe under + free-threading. + - gh-127081: Fix libc thread safety issues with dbm by + performing stateful operations in critical sections. + - gh-127081: Fix libc thread safety issues with os by + replacing getlogin with getlogin_r re-entrant version. + - gh-127081: Fix libc thread safety issues with pwd by + locking access to getpwall. + - gh-132551: Make io.BytesIO safe in free-threaded build. + - gh-107583: Fix Flag inversion when flag set has missing + values (IntFlag still flips all bits); fix negative + assigned values during flag creation (both Flag and IntFlag + ignore missing values). + - gh-87790: Support underscore and comma as thousands + separators in the fractional part for Fraction’s + formatting. Patch by Sergey B Kirpichev. + - gh-87790: Support underscore and comma as thousands + separators in the fractional part for Decimal’s formatting. + Patch by Sergey B Kirpichev. + - gh-131884: Fix formatting issues in json.dump() when both + indent and skipkeys are used. + - gh-131788: Make ResourceTracker.send from multiprocessing + re-entrant safe + - gh-91349: Adjust default compressionlevel= to 6 (down from + 9) in gzip and tarfile. It is the default level used by + most compression tools and a better tradeoff between speed + and performance. + - gh-131146: Fix calendar.TextCalendar, + calendar.HTMLCalendar, and the calendar CLI + to display month names in the nominative case + by adding calendar.standalone_month_name and + calendar.standalone_month_abbr, which provide month names + and abbreviations in the grammatical form used when a month + name stands by itself, if the locale supports it. + - gh-123471: Make concurrent iterations over itertools.cycle + safe under free-threading. + - gh-130664: Handle corner-case for Fraction’s formatting: + treat zero-padding (preceding the width field by a zero + ('0') character) as an equivalent to a fill character of + '0' with an alignment type of '=', just as in case of + float’s. + - gh-130999: Avoid exiting the new REPL and offer suggestions + even if there are non-string candidates when errors occur. + - gh-88473: Implement a fast path for datetime.date objects + in datetime.date.today() which results in a 5x performance + gain while proper subclasses retain their previous + performance. + - gh-126883: Add check that timezone fields are in + range for datetime.datetime.fromisoformat() and + datetime.time.fromisoformat(). Patch by Semyon Moroz. + - gh-125028: functools.Placeholder cannot be passed to + functools.partial() as a keyword argument. + - gh-125843: If possible, indicate which curses C function or + macro is responsible for raising a curses.error exception. + Patch by Bénédikt Tran. + - gh-119109: functools.partial() calls are now faster when + keyword arguments are used. + - gh-124033: SimplePath is now presented in + importlib.metadata.__all__. + - gh-91216: importlib.metadata now raises a KeyError instead + of returning None when a key is missing from the metadata. + - gh-120492: importlib.metadata now prioritizes valid dists + to invalid dists when retrieving by name. + - gh-99631: The shelve module now accepts custom + serialization and deserialization functions. + - gh-119186: Slightly speed up os.walk() by calling + os.path.join() less often. + - gh-120170: Fix an issue in the _pickle extension module in + which importing multiprocessing could change how pickle + identifies which module an object belongs to, potentially + breaking the unpickling of those objects. + - gh-118981: Fix potential hang in + multiprocessing.popen_spawn_posix that can happen when the + child proc dies early by closing the child fds right away. + - gh-105497: Fix flag mask inversion when unnamed flags + exist. + - gh-99813: ssl now uses SSL_sendfile internally when it is + possible (see OP_ENABLE_KTLS). The function sends a file + more efficiently because it performs TLS encryption in the + kernel to avoid additional context switches. Patch by Illia + Volochii. + - gh-62824: Fix aliases for iso8859_8 encoding. Patch by Dave + Goncalves. + - gh-86155: html.parser.HTMLParser.close() no longer loses + data when the