Skip to content

Bump Pythons to 3.12.14/3.13.15/3.14.7, Pyodide 314.0.6, dart_bridge 1.8.0 - #40

Merged
FeodorFitsner merged 1 commit into
mainfrom
bump-pythons-20260901
Sep 2, 2026
Merged

Bump Pythons to 3.12.14/3.13.15/3.14.7, Pyodide 314.0.6, dart_bridge 1.8.0#40
FeodorFitsner merged 1 commit into
mainfrom
bump-pythons-20260901

Conversation

@FeodorFitsner

Copy link
Copy Markdown
Contributor

Manifest

before after
3.12 3.12.13 3.12.14
3.13 3.13.14 3.13.15
3.14 3.14.6 3.14.7
standalone_release_date (all three) 20260623 20260901
3.14 pyodide_version 314.0.3 314.0.6
dart_bridge_version 1.7.1 1.8.0

20260901 is the newest python-build-standalone release and the first that carries all three micros (20260825 has them too). Pyodide 0.29.4 (3.13) and 0.27.7 (3.12) are already the newest on their lines, so they stay put — only the 3.14 line moved.

The workflow_dispatch choice list in build-python-version.yml is the only other place full versions are spelled out, so it moves with the manifest. (The remaining 3.14.6 hits in the repo are all illustrative comments.)

Refresh the vendored 3.13 iOS patch for 3.13.15

3.13.15 back-ported the macOS 27 dup3/pipe2 change from 3.14, splitting

if test "$ac_sys_system" != "iOS" ; then
  AC_CHECK_FUNCS([dup3 getentropy getgroups pipe2 system])
fi

into a getentropy getgroups system check gated on iOS and a separate dup3 pipe2 check gated on iOS and Darwin. Our back-port widens that gate to the other Apple platforms, so its hunk no longer applied — one hunk failed in configure.ac, one in configure (42/43 and 35/36 applying). The 3.12 patch is unaffected; 3.12.14 does not carry the change.

Both gates now get the tvOS/visionOS/watchOS arms. That preserves the patch's intent: dup3 and pipe2 were in the widened set before the split, so leaving them out of it would have quietly re-enabled two symbols on those platforms. Nothing here builds tvOS/visionOS/watchOS, so it is inert for our matrix — it just keeps the vendored patch faithful to the beeware back-port it came from.

Verification

Extracted the pristine 3.12.14 and 3.13.15 tarballs from python.org and applied each vendored patch with patch -p1, per darwin/ios_patches/README.md:

  • zero rejects, no offsets, no fuzz on either version
  • confirmed the pre-bump 3.13.14 still applied cleanly, so the two failures were genuinely micro-bump drift and not a pre-existing break
  • the merged configure and configure.ac agree with each other on both gates

Upstream availability confirmed for every version bumped here (astral-sh/python-build-standalone 20260901, pyodide/pyodide 314.0.6, flet-dev/dart-bridge v1.8.0).

CI on this PR exercises the full matrix without publishing a release.

…1.8.0

CPython micro bumps across all three minors, with standalone_release_date moved
from 20260623 to 20260901 -- the first python-build-standalone release carrying
all three (20260825 has them too; 20260901 is the newest). Pyodide 3.14 goes
314.0.3 -> 314.0.6; 3.13 (0.29.4) and 3.12 (0.27.7) are already on the newest
release of their respective lines. dart_bridge 1.8.0 per flet-dev/dart-bridge.

The workflow_dispatch choice list in build-python-version.yml is the one other
place full versions are spelled out, so it moves with the manifest.

Refresh the vendored 3.13 iOS patch for 3.13.15
-----------------------------------------------

3.13.15 back-ported the macOS 27 dup3/pipe2 change from 3.14, splitting

  if test "$ac_sys_system" != "iOS" ; then
    AC_CHECK_FUNCS([dup3 getentropy getgroups pipe2 system])
  fi

into a getentropy/getgroups/system check gated on iOS and a separate dup3/pipe2
check gated on iOS *and* Darwin. Our back-port widens that gate to the other
Apple platforms, so its hunk no longer applied: one hunk failed in configure.ac
and one in configure (42/43 and 35/36 applying). The 3.12 patch is unaffected --
3.12.14 does not carry the change.

Both gates now get the tvOS/visionOS/watchOS arms, which preserves the patch's
intent: dup3 and pipe2 were in the widened set before the split, so dropping
them from it would have quietly re-enabled two symbols on those platforms.
Nothing here builds tvOS/visionOS/watchOS, so this is inert for our matrix --
it just keeps the vendored patch faithful to the beeware back-port it came from.

Verified by extracting the pristine 3.12.14 and 3.13.15 tarballs and applying
each patch with `patch -p1`: zero rejects, no offsets, no fuzz, and the merged
configure/configure.ac agree with each other.
@FeodorFitsner
FeodorFitsner merged commit 9858e0e into main Sep 2, 2026
20 of 34 checks passed
@FeodorFitsner
FeodorFitsner deleted the bump-pythons-20260901 branch September 2, 2026 20:25
FeodorFitsner added a commit to flet-dev/serious-python that referenced this pull request Sep 2, 2026
The first Python version move since 4.3.x -- every 4.4/4.5 release re-pinned
python-build for Apple signing work without a Python version changing. Re-pins
the bundled snapshot to python-build 20260902 (dart_bridge 1.7.1 -> 1.8.0) and
regenerates the committed version tables from its manifest.json.

All three micros are security releases, sharing a quadratic-complexity DoS fix
in incremental html.parser.HTMLParser parsing (gh-153030) and one for
xml.etree.ElementTree XPath index predicates (gh-152674).

They do not share the libexpat fix. 3.12.14 shipped a week after the other two
and bundles libexpat 2.8.3 for CVE-2026-72522; 3.13.15 and 3.14.7 still bundle
2.8.2. Checked in each runtime's own Modules/expat/expat.h rather than taken
from the release notes. It only matters for apps parsing untrusted XML, and
upstream picks it up in the next 3.13/3.14 micro, but the changelogs say so
rather than implying all three are equally current.

Pyodide 3.14 moves 314.0.3 -> 314.0.6. 3.13 (0.29.4) and 3.12 (0.27.7) stay
put -- each is already newest on its line, so only the 3.14 row moved.

Verified on the published 20260902 artifacts rather than assumed:

  * python-ios-dart-3.14.7 -- PY_VERSION 3.14.7, and 56 XCFrameworks plus 112
    slice frameworks all signed and securely timestamped by Apple Distribution:
    Appveyor Systems Inc. (GXXRQJK434). Zero unsigned bundles, zero missing
    timestamps -- the same counts 4.5.1 recorded for 3.14.6, so the both-layer
    signing from 4.5.x survived a full rebuild of every framework.
  * python-ios-dart-3.13.15 -- PY_VERSION 3.13.15, 168 bundles signed, and
    HAVE_DUP3/HAVE_PIPE2 correctly undefined in pyconfig.h. That last one is the
    load-bearing check: 3.13.15 back-ported the macOS 27 dup3/pipe2 change
    (gh-153711), which split the configure gate that python-build's vendored
    Apple-tooling patch widens, and the patch had to be refreshed for it
    (flet-dev/python-build#40). An undefined pair confirms the refreshed gate
    landed.
  * The release carries all 30 runtime tarballs -- every platform x every
    version -- plus manifest.json.

README's Python-versions table is updated, including its 3.14 Pyodide cell,
which had drifted to 314.0.0 (the generator does not touch README).

bridge_example's "Test environment" table still reads CPython 3.14.6: it
records the conditions its benchmark numbers were measured under, so it is
left alone.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant