diff --git a/src/serious_python/CHANGELOG.md b/src/serious_python/CHANGELOG.md index 96559ac1..e3f52326 100644 --- a/src/serious_python/CHANGELOG.md +++ b/src/serious_python/CHANGELOG.md @@ -1,3 +1,8 @@ +## 4.2.0 + +* **Android:** `armeabi-v7a` (32-bit ARM) is now bundled for Python **3.13** and **3.14**, not just 3.12 — `flet-dev/python-build` `20260630` publishes 32-bit ARM runtimes for those minors (built with `dart_bridge` **1.4.1**). The `package` command's hardcoded "3.12-only" `armeabi-v7a` skip is replaced by a manifest-driven check against each minor's `PythonRelease.androidAbis`, so the wheel fan-out (and the Android plugin's `abiFilters`) follow whatever python-build publishes per minor. +* Bundle **3.12.13 / 3.13.14 / 3.14.6** (python-build `20260630`; CPython-standalone `20260623`); Pyodide **0.27.7 / 0.29.4 / 314.0.1** (3.14 bumped 314.0.0 → 314.0.1). + ## 4.1.1 * **Android:** fix two startup crashes — apps crashing on launch on Android 8.1 and below (API < 28) due to an unguarded `getLongVersionCode()` call, and the interpreter failing to start on a non-primary ABI (e.g. an x86_64 emulator) with `ModuleNotFoundError: No module named '_sysconfigdata__android_-linux-android'`. See `serious_python_android` 4.1.1. diff --git a/src/serious_python/bin/gen_version_tables.dart b/src/serious_python/bin/gen_version_tables.dart index cc497ced..277163f3 100644 --- a/src/serious_python/bin/gen_version_tables.dart +++ b/src/serious_python/bin/gen_version_tables.dart @@ -138,8 +138,7 @@ String _dartFile(String release, String defaultPython, String dartBridge, ..writeln(' final String pyodidePlatformTag;') ..writeln('') ..writeln(' /// Android ABIs python-build publishes distributions for') - ..writeln(' /// this minor. 32-bit Android was dropped in 3.13 (PEP 738);') - ..writeln(' /// only 3.12 still carries `armeabi-v7a`.') + ..writeln(' /// this minor (per the manifest\'s per-minor `android_abis`).') ..writeln(' final List androidAbis;') ..writeln('') ..writeln(' final bool prerelease;') diff --git a/src/serious_python/bin/package_command.dart b/src/serious_python/bin/package_command.dart index a3ed797a..7aebb9e5 100644 --- a/src/serious_python/bin/package_command.dart +++ b/src/serious_python/bin/package_command.dart @@ -378,12 +378,12 @@ class PackageCommand extends Command { if (archArg.isNotEmpty && !archArg.contains(arch.key)) { continue; } - // python-build dropped 32-bit Android in 3.13 (PEP 738); the - // platform plugin only bundles arm64-v8a + x86_64 for those - // versions, so installing 32-bit wheels would be wasted work. + // Only install wheels for ABIs python-build publishes for this + // minor (per python-build's manifest `android_abis`); installing + // for an unpublished ABI would be wasted work. if (platform == "Android" && - _pythonShortVersion != "3.12" && - arch.key == "armeabi-v7a") { + !pythonReleases[_pythonShortVersion]!.androidAbis + .contains(arch.key)) { continue; } String? sitePackagesDir; diff --git a/src/serious_python/lib/src/python_versions.dart b/src/serious_python/lib/src/python_versions.dart index fed44557..4972e145 100644 --- a/src/serious_python/lib/src/python_versions.dart +++ b/src/serious_python/lib/src/python_versions.dart @@ -1,5 +1,5 @@ // GENERATED by `dart run serious_python:gen_version_tables` from python-build's -// manifest.json (release 20260621). Do not edit by hand — edit python-build's +// manifest.json (release 20260630). Do not edit by hand — edit python-build's // manifest.json, cut a release, bump `pythonReleaseDate`, and regenerate. const pythonVersionEnvironmentVariable = "SERIOUS_PYTHON_VERSION"; @@ -10,8 +10,8 @@ const pyodideVersionEnvironmentVariable = "SERIOUS_PYTHON_PYODIDE_VERSION"; const dartBridgeVersionEnvironmentVariable = "DART_BRIDGE_VERSION"; /// python-build release the bundled runtimes come from (YYYYMMDD). -const pythonReleaseDate = "20260621"; -const dartBridgeVersion = "1.4.0"; +const pythonReleaseDate = "20260630"; +const dartBridgeVersion = "1.4.1"; const defaultPythonVersion = "3.14"; class PythonRelease { @@ -30,8 +30,7 @@ class PythonRelease { final String pyodidePlatformTag; /// Android ABIs python-build publishes distributions for - /// this minor. 32-bit Android was dropped in 3.13 (PEP 738); - /// only 3.12 still carries `armeabi-v7a`. + /// this minor (per the manifest's per-minor `android_abis`). final List androidAbis; final bool prerelease; @@ -40,7 +39,7 @@ class PythonRelease { const pythonReleases = { "3.12": PythonRelease( standaloneVersion: "3.12.13", - standaloneReleaseDate: "20260610", + standaloneReleaseDate: "20260623", pyodideVersion: "0.27.7", pyodidePlatformTag: "pyodide-2024.0-wasm32", androidAbis: ["arm64-v8a", "x86_64", "armeabi-v7a"], @@ -48,18 +47,18 @@ const pythonReleases = { ), "3.13": PythonRelease( standaloneVersion: "3.13.14", - standaloneReleaseDate: "20260610", + standaloneReleaseDate: "20260623", pyodideVersion: "0.29.4", pyodidePlatformTag: "pyemscripten-2025.0-wasm32", - androidAbis: ["arm64-v8a", "x86_64"], + androidAbis: ["arm64-v8a", "x86_64", "armeabi-v7a"], prerelease: false, ), "3.14": PythonRelease( standaloneVersion: "3.14.6", - standaloneReleaseDate: "20260610", - pyodideVersion: "314.0.0", + standaloneReleaseDate: "20260623", + pyodideVersion: "314.0.1", pyodidePlatformTag: "pyemscripten-2026.0-wasm32", - androidAbis: ["arm64-v8a", "x86_64"], + androidAbis: ["arm64-v8a", "x86_64", "armeabi-v7a"], prerelease: false, ), }; diff --git a/src/serious_python/pubspec.yaml b/src/serious_python/pubspec.yaml index 56586bbb..2174a216 100644 --- a/src/serious_python/pubspec.yaml +++ b/src/serious_python/pubspec.yaml @@ -2,7 +2,7 @@ name: serious_python description: A cross-platform plugin for adding embedded Python runtime to your Flutter apps. homepage: https://flet.dev repository: https://github.com/flet-dev/serious-python -version: 4.1.1 +version: 4.2.0 platforms: ios: diff --git a/src/serious_python_android/CHANGELOG.md b/src/serious_python_android/CHANGELOG.md index 1956a71a..bcf689db 100644 --- a/src/serious_python_android/CHANGELOG.md +++ b/src/serious_python_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.0 + +* **`armeabi-v7a` (32-bit ARM) is now bundled for Python 3.13 and 3.14**, not just 3.12. `flet-dev/python-build` `20260630` publishes 32-bit ARM runtimes for those minors (built with `dart_bridge` **1.4.1**), so the per-minor `android_abis` in `python_versions.properties` now include `armeabi-v7a` across the board and `defaultConfig.ndk.abiFilters` + the per-ABI download/copy fan-out pick it up automatically — no Gradle change needed. + ## 4.1.1 * Fix app crashing on launch on Android 8.1 and below (API < 28). The `getAppVersion` method-channel handler, called on every startup, used `PackageInfo.getLongVersionCode()` (API 28+) unconditionally. R8 outlines this call into a synthetic class that it can merge with other API 28+ outlines — notably Flutter 3.41's `ImageDecoder`-based image decoder — and invoking that merged class on API < 28 fails verification with `NoClassDefFoundError: android.graphics.ImageDecoder$OnHeaderDecodedListener`. The call is now guarded with a `Build.VERSION.SDK_INT` check, falling back to the deprecated `versionCode` int field on older devices. diff --git a/src/serious_python_android/android/build.gradle.kts b/src/serious_python_android/android/build.gradle.kts index a370cc6e..042f60e0 100644 --- a/src/serious_python_android/android/build.gradle.kts +++ b/src/serious_python_android/android/build.gradle.kts @@ -21,7 +21,7 @@ buildscript { } group = "com.flet.serious_python_android" -version = "4.1.1" +version = "4.2.0" rootProject.allprojects { repositories { @@ -50,9 +50,8 @@ if (pythonFullVersion == null) { } // ABIs come from python-build's manifest (the per-minor `android_abis` array, -// flattened into python_versions.properties by `gen_version_tables`). 3.12 -// still ships armeabi-v7a; 3.13+ are 64-bit-only (PEP 738). A future minor -// only needs the manifest edit — no Gradle change here. +// flattened into python_versions.properties by `gen_version_tables`). A future +// minor only needs the manifest edit — no Gradle change here. val abis: List = (pv.getProperty("$pythonVersion.android_abis") ?: throw GradleException( "serious_python: python_versions.properties has no '$pythonVersion.android_abis'")) diff --git a/src/serious_python_android/android/python_versions.properties b/src/serious_python_android/android/python_versions.properties index 41d4ec16..5487bb07 100644 --- a/src/serious_python_android/android/python_versions.properties +++ b/src/serious_python_android/android/python_versions.properties @@ -1,11 +1,11 @@ # GENERATED by `dart run serious_python:gen_version_tables` from -# python-build manifest.json (release 20260621). Do not edit by hand. +# python-build manifest.json (release 20260630). Do not edit by hand. default_python_version=3.14 -dart_bridge_version=1.4.0 -python_build_release_date=20260621 +dart_bridge_version=1.4.1 +python_build_release_date=20260630 3.12.full_version=3.12.13 3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a 3.13.full_version=3.13.14 -3.13.android_abis=arm64-v8a,x86_64 +3.13.android_abis=arm64-v8a,x86_64,armeabi-v7a 3.14.full_version=3.14.6 -3.14.android_abis=arm64-v8a,x86_64 +3.14.android_abis=arm64-v8a,x86_64,armeabi-v7a diff --git a/src/serious_python_android/pubspec.yaml b/src/serious_python_android/pubspec.yaml index 3650bdf9..e95825d5 100644 --- a/src/serious_python_android/pubspec.yaml +++ b/src/serious_python_android/pubspec.yaml @@ -2,7 +2,7 @@ name: serious_python_android description: Android implementation of the serious_python plugin homepage: https://flet.dev repository: https://github.com/flet-dev/serious-python -version: 4.1.1 +version: 4.2.0 environment: sdk: ">=3.0.0 <4.0.0" diff --git a/src/serious_python_darwin/CHANGELOG.md b/src/serious_python_darwin/CHANGELOG.md index 8b070512..9ca2b8ea 100644 --- a/src/serious_python_darwin/CHANGELOG.md +++ b/src/serious_python_darwin/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.0 + +* Bump the bundled python-build snapshot to `20260630` (`dart_bridge` `1.4.1`); aligns with the `serious_python_*` 4.2.0 release. + ## 4.1.1 * Version bump aligning with the `serious_python_*` 4.1.1 release. diff --git a/src/serious_python_darwin/darwin/python_versions.properties b/src/serious_python_darwin/darwin/python_versions.properties index 41d4ec16..5487bb07 100644 --- a/src/serious_python_darwin/darwin/python_versions.properties +++ b/src/serious_python_darwin/darwin/python_versions.properties @@ -1,11 +1,11 @@ # GENERATED by `dart run serious_python:gen_version_tables` from -# python-build manifest.json (release 20260621). Do not edit by hand. +# python-build manifest.json (release 20260630). Do not edit by hand. default_python_version=3.14 -dart_bridge_version=1.4.0 -python_build_release_date=20260621 +dart_bridge_version=1.4.1 +python_build_release_date=20260630 3.12.full_version=3.12.13 3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a 3.13.full_version=3.13.14 -3.13.android_abis=arm64-v8a,x86_64 +3.13.android_abis=arm64-v8a,x86_64,armeabi-v7a 3.14.full_version=3.14.6 -3.14.android_abis=arm64-v8a,x86_64 +3.14.android_abis=arm64-v8a,x86_64,armeabi-v7a diff --git a/src/serious_python_darwin/darwin/serious_python_darwin.podspec b/src/serious_python_darwin/darwin/serious_python_darwin.podspec index 20a0e34c..4a11a935 100644 --- a/src/serious_python_darwin/darwin/serious_python_darwin.podspec +++ b/src/serious_python_darwin/darwin/serious_python_darwin.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'serious_python_darwin' - s.version = '4.1.1' + s.version = '4.2.0' s.summary = 'A cross-platform plugin for adding embedded Python runtime to your Flutter apps.' s.description = <<-DESC A cross-platform plugin for adding embedded Python runtime to your Flutter apps. diff --git a/src/serious_python_darwin/pubspec.yaml b/src/serious_python_darwin/pubspec.yaml index d8714bfd..f1b72d9b 100644 --- a/src/serious_python_darwin/pubspec.yaml +++ b/src/serious_python_darwin/pubspec.yaml @@ -2,7 +2,7 @@ name: serious_python_darwin description: iOS and macOS implementations of the serious_python plugin homepage: https://flet.dev repository: https://github.com/flet-dev/serious-python -version: 4.1.1 +version: 4.2.0 environment: # The Swift Package Manager build path needs Flutter 3.44 / Dart 3.11 (the diff --git a/src/serious_python_linux/CHANGELOG.md b/src/serious_python_linux/CHANGELOG.md index f44da123..281830e8 100644 --- a/src/serious_python_linux/CHANGELOG.md +++ b/src/serious_python_linux/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.0 + +* Bump the bundled python-build snapshot to `20260630` (`dart_bridge` `1.4.1`); aligns with the `serious_python_*` 4.2.0 release. + ## 4.1.1 * Version bump aligning with the `serious_python_*` 4.1.1 release. diff --git a/src/serious_python_linux/linux/python_versions.properties b/src/serious_python_linux/linux/python_versions.properties index 41d4ec16..5487bb07 100644 --- a/src/serious_python_linux/linux/python_versions.properties +++ b/src/serious_python_linux/linux/python_versions.properties @@ -1,11 +1,11 @@ # GENERATED by `dart run serious_python:gen_version_tables` from -# python-build manifest.json (release 20260621). Do not edit by hand. +# python-build manifest.json (release 20260630). Do not edit by hand. default_python_version=3.14 -dart_bridge_version=1.4.0 -python_build_release_date=20260621 +dart_bridge_version=1.4.1 +python_build_release_date=20260630 3.12.full_version=3.12.13 3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a 3.13.full_version=3.13.14 -3.13.android_abis=arm64-v8a,x86_64 +3.13.android_abis=arm64-v8a,x86_64,armeabi-v7a 3.14.full_version=3.14.6 -3.14.android_abis=arm64-v8a,x86_64 +3.14.android_abis=arm64-v8a,x86_64,armeabi-v7a diff --git a/src/serious_python_linux/pubspec.yaml b/src/serious_python_linux/pubspec.yaml index c5ec5318..27a6bd32 100644 --- a/src/serious_python_linux/pubspec.yaml +++ b/src/serious_python_linux/pubspec.yaml @@ -2,7 +2,7 @@ name: serious_python_linux description: Linux implementations of the serious_python plugin homepage: https://flet.dev repository: https://github.com/flet-dev/serious-python -version: 4.1.1 +version: 4.2.0 environment: sdk: '>=3.1.3 <4.0.0' diff --git a/src/serious_python_platform_interface/CHANGELOG.md b/src/serious_python_platform_interface/CHANGELOG.md index dd9f5b1f..bd62fd2e 100644 --- a/src/serious_python_platform_interface/CHANGELOG.md +++ b/src/serious_python_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.0 + +* Version bump aligning with the `serious_python_*` 4.2.0 release. + ## 4.1.1 * Version bump aligning with the `serious_python_*` 4.1.1 release. diff --git a/src/serious_python_platform_interface/pubspec.yaml b/src/serious_python_platform_interface/pubspec.yaml index 4509e18c..81ba7af4 100644 --- a/src/serious_python_platform_interface/pubspec.yaml +++ b/src/serious_python_platform_interface/pubspec.yaml @@ -2,7 +2,7 @@ name: serious_python_platform_interface description: A common platform interface for the serious_python plugin. homepage: https://flet.dev repository: https://github.com/flet-dev/serious-python -version: 4.1.1 +version: 4.2.0 environment: sdk: ">=3.0.0 <4.0.0" diff --git a/src/serious_python_windows/CHANGELOG.md b/src/serious_python_windows/CHANGELOG.md index df7cc214..e823bad5 100644 --- a/src/serious_python_windows/CHANGELOG.md +++ b/src/serious_python_windows/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.0 + +* Bump the bundled python-build snapshot to `20260630` (`dart_bridge` `1.4.1`); aligns with the `serious_python_*` 4.2.0 release. + ## 4.1.1 * Version bump aligning with the `serious_python_*` 4.1.1 release. diff --git a/src/serious_python_windows/pubspec.yaml b/src/serious_python_windows/pubspec.yaml index b8bae971..1e9aecaa 100644 --- a/src/serious_python_windows/pubspec.yaml +++ b/src/serious_python_windows/pubspec.yaml @@ -2,7 +2,7 @@ name: serious_python_windows description: Windows implementations of the serious_python plugin homepage: https://flet.dev repository: https://github.com/flet-dev/serious-python -version: 4.1.1 +version: 4.2.0 environment: sdk: '>=3.1.3 <4.0.0' diff --git a/src/serious_python_windows/windows/python_versions.properties b/src/serious_python_windows/windows/python_versions.properties index 41d4ec16..5487bb07 100644 --- a/src/serious_python_windows/windows/python_versions.properties +++ b/src/serious_python_windows/windows/python_versions.properties @@ -1,11 +1,11 @@ # GENERATED by `dart run serious_python:gen_version_tables` from -# python-build manifest.json (release 20260621). Do not edit by hand. +# python-build manifest.json (release 20260630). Do not edit by hand. default_python_version=3.14 -dart_bridge_version=1.4.0 -python_build_release_date=20260621 +dart_bridge_version=1.4.1 +python_build_release_date=20260630 3.12.full_version=3.12.13 3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a 3.13.full_version=3.13.14 -3.13.android_abis=arm64-v8a,x86_64 +3.13.android_abis=arm64-v8a,x86_64,armeabi-v7a 3.14.full_version=3.14.6 -3.14.android_abis=arm64-v8a,x86_64 +3.14.android_abis=arm64-v8a,x86_64,armeabi-v7a