NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1915 most downloaded on pub.dev
A common platform interface for the serious_python plugin.
Last release 12 days ago
26 Sep 2026
Release timing varies
gaps range from 9 days to 2 months
Nearly every release is documented
notes for 53 of 56 stable releases
1 version withdrawn
withdrawn after publishing
3 years old
57 releases · first in 2023
One column per quarter.
Stop splitting exclude and cleanup globs on commas; prepare 5.0.0 by @FeodorFitsner in #253
Full Changelog: v4.7.2...v5.0.0
fix(darwin): re-sign linker-signed macOS native modules while staging by @ndonkoHenri in #251
Full Changelog: v4.7.1...v4.7.2
DartBridge.hardExit, and re-pin python-build to 20260908 by @FeodorFitsner in #248
Full Changelog: v4.7.0...v4.7.1
Full Changelog : v4.6.0...v4.7.0
Full Changelog: v4.6.0...v4.7.0
DartBridge.hardExit(exitCode) / DartBridge.canHardExit, binding serious_python_hard_exit from dart_bridge 1.9.0. dart:io's exit() runs the normal C teardown, which destroys the C++ statics inside every loaded CPython extension module while the interpreter thread may still be running inside one of them; hardExit skips it. The symbol is resolved through the existing soft lookup, so an app built against an older libdart_bridge still loads, canHardExit is false, and the caller falls back to exit(). See the serious_python 4.7.0 notes.dart_bridge to 1.9.0.fix: pass --no-input and bounded timeouts to pip by @ndonkoHenri in #246
--no-input and bounded timeouts to pip by @ndonkoHenri in #246Full Changelog: v4.5.1...v4.6.0
serious_python_* 4.6.0 release.Bump to 4.5.1: sign and verify both XCFramework layers by @FeodorFitsner in #245
Full Changelog: v4.5.0...v4.5.1
serious_python_* 4.5.1 release.Bump to 4.5.0: preserve provider XCFramework signatures through staging by @FeodorFitsner in #244
Full Changelog: v4.4.2...v4.5.0
serious_python_* 4.5.0 release.Bump to 4.4.2: Xcode build-provenance keys in iOS framework Info.plists by @FeodorFitsner in #242
Full Changelog: v4.4.1...v4.4.2
serious_python_* 4.4.2 release.Bump to 4.4.1: OpenSSL privacy manifest for iOS _ssl/_hashlib by @FeodorFitsner in #241
Full Changelog: v4.4.0...v4.4.1
serious_python_* 4.4.1 release.Bump to 4.4.0: dart_bridge as a dynamic framework on Apple platforms by @FeodorFitsner in #240
Full Changelog: v4.3.6...v4.4.0
serious_python_* 4.4.0 release.Bump to 4.3.6: Windows UTF-8 startup fix (dart_bridge 1.5.1, python-build 20260720) by @FeodorFitsner in #238
concurrent.interpreters / InterpreterPoolExecutor) by @ndonkoHenri in #239Full Changelog: v4.3.4...v4.3.6
serious_python_* 4.3.6 release (Windows UTF-8 startup fix via dart_bridge 1.5.1). No interface changes.Nothing published for this version
Bump to 4.3.4: Android flet debug stale-code fix (flet #6682) by @FeodorFitsner in #235
flet debug stale-code fix (flet #6682) by @FeodorFitsner in #235Full Changelog: v4.3.3...v4.3.4
serious_python_* 4.3.4 release (desktop _pyrepl fix + Android flet debug cache fix). No interface changes.Fix Windows build failure on non-UTF-8 locales (C4819/C2220) by @FeodorFitsner in #234
Full Changelog: v4.3.2...v4.3.3
serious_python_* 4.3.3 release.Bump to 4.3.2: python-build 20260712 (Android mimalloc seccomp crash, mobile _pyrepl restored) by @FeodorFitsner in #230
Full Changelog: v4.3.1...v4.3.2
serious_python_* 4.3.2 release.Version bump aligning with the serious_python_* 4.3.1 release.
serious_python_* 4.3.1 release.Version bump aligning with the serious_python_* 4.3.0 release.
serious_python_* 4.3.0 release.Version bump aligning with the serious_python_* 4.2.1 release.
serious_python_* 4.2.1 release.Version bump aligning with the serious_python_* 4.2.0 release.
serious_python_* 4.2.0 release.Version bump aligning with the serious_python_* 4.1.1 release.
serious_python_* 4.1.1 release.Version bump aligning with the serious_python_* 4.1.0 release.
serious_python_* 4.1.0 release.Add prepareApp() to SeriousPythonPlatform — materializes the packaged app on disk (if needed) and returns the directory containing its entry point.
prepareApp() to SeriousPythonPlatform — materializes the packaged app on disk (if needed) and returns the directory containing its entry point.extractAssetZip / extractFileZip / extractAssetOrFile / extractAsset); apps now ship unpacked in the bundle (or, on Android, as a stored asset unpacked by the platform plugin). getDirFiles is retained.serious_python_* 4.0.0 release (app files unpacked in the bundle).Remove the scaffold getPlatformVersion method from the platform interface and its method-channel implementation.
getPlatformVersion method from the platform interface and its method-channel implementation.serious_python_* 3.0.0 release (in-process dart_bridge FFI transport, Flutter 3.44.2).Version bump aligning with the major release of the serious_python_* platform plugins (multi-version Python support, default Python now 3.14). No inte
serious_python_* platform plugins (multi-version Python support, default Python now 3.14). No interface changes.Cache downloaded Python distribution tarballs (python-android-dart- - .tar.gz) across builds. The downloadDistArchive_* Gradle tasks now write to a pe
python-android-dart-<py>-<abi>.tar.gz) across builds. The downloadDistArchive_* Gradle tasks now write to a persistent cache directory — $FLET_CACHE_DIR/python-build/v<python_version>/ if the env var is set, otherwise ~/.flet/cache/python-build/v<python_version>/ — and use onlyIfModified true + useETag "all" so subsequent builds issue a conditional GET (If-None-Match / If-Modified-Since) against objects.githubusercontent.com instead of re-downloading 30–100 MB per ABI per build. When the upstream release republishes a tarball at the same URL (e.g. a Python patch update under the existing v<py> release), the validators flip and the cache refreshes automatically; otherwise the build skips the download entirely. tempAndMove true guards against partial downloads being kept in the cache (flet-dev/flet#6555, #208) by @FeodorFitsner.Breaking change: --platform argument value Pyodide has been renamed to Emscripten to match what platform.system() returns in the Pyodide runtime, so P…
--platform argument value Pyodide has been renamed to Emscripten to match what platform.system() returns in the Pyodide runtime, so PEP 508 markers like platform_system != 'Emscripten' work consistently.Fix web packaging to skip site-packages when appropriate (#199).
site-packages when appropriate (#199).Disable user-site packages in pip environment (#195).
Android: Add debug logs and deduplicate FFI imports.
Add zipDirectoryPosix to create POSIX-compliant app archives on Windows.
serious_python plugin build.WINDIR path for bundled DLLs in CMake.* Fix logging on Android.
Redirect Python output to logcat.
Make zipDirectory call asynchronous.
Fixed iOS framework identifier generation.
archive to ^4.0.7.16 KB memory page support for Android 15+ (by @ReYaNOW).
Fix: Hidden files in site-packages are skipped when building macOS app.
.dist-info directories (#164).Breaking change: multiple --requirements options of package command must be passed as --requirements DEP_1 --requirements DEP_2 ... (or -r DEP_1 -r DE…
--requirements options of package command must be passed as --requirements DEP_1 --requirements DEP_2 ... (or -r DEP_1 -r DEP_2 ...) instead of -r DEP_1,DEP_2,... to support dependency specifications with commas, e.g. pandas>=2.2,<3.Fix serious_python to work on macOS 12 Monterey and built with Xcode 14.
serious_python to work on macOS 12 Monterey and built with Xcode 14.Set MinimumOSVersion to 13.0 for generated Python frameworks.
MinimumOSVersion to 13.0 for generated Python frameworks.python.bundle to pass App Store verification.--cleanup option replaced with two separate --cleanup-app and --cleanup-packages options.--cleanup-app-files and --cleanup-package-files to specify a list of globs to exclude files and directories from app and site packages.--skip-site-packages option to skip site packages installation for faster re-builds.--arch option accepts a list now.Fixed: xcframeworks migration script didn't work for sub-directories.
xcframeworks migration script didn't work for sub-directories.Added com.flet.serious_python_android.PythonActivity holder class with mActivity holding a reference to an app MainActivity. Needed for plyer.
com.flet.serious_python_android.PythonActivity holder class with mActivity holding a reference to an app MainActivity. Needed for plyer.MAIN_ACTIVITY_HOST_CLASS_NAME environment variable with the name of activity holder class name (com.flet.serious_python_android.PythonActivity).MAIN_ACTIVITY_CLASS_NAME environment variable with a class name of an app MainActivity.ANDROID_NATIVE_LIBRARY_DIR environment variable with the path to a directory containing app .so libraries. Needed for patching ctypes.find_library.SERIOUS_PYTHON_ALLOW_SOURCE_DISTRIBUTIONS environment variable that should contain a comma-separated list of packages to allow installation from source distribution.site-packages to xcframeworks migration script supports both library.so and library.{something}.so.Added Java loadLibrary to Android plugin to support pyjnius (#128).
loadLibrary to Android plugin to support pyjnius (#128).Copy site-packages/flutter contents to SERIOUS_PYTHON_FLUTTER_PACKAGES.
site-packages/flutter contents to SERIOUS_PYTHON_FLUTTER_PACKAGES.SERIOUS_PYTHON_ALLOW_SOURCE_DISTRIBUTIONS variable to allow pip installing from source distributions.Remove PYTHONOPTIMIZE=2 to make CFFI work.
PYTHONOPTIMIZE=2 to make CFFI work.Copy .so libraries from {site-packages}/opt to jniLibs.
.so libraries from {site-packages}/opt to jniLibs.Remove --only-binary when packaging for desktop platforms
New packaging, not based on Kivy and with pre-built binary packages.
Added namespace definition to Android Gradle build.
namespace definition to Android Gradle build.Nothing published for this version
Nothing published for this version
--verbose flag - verbose output.
--verbose flag - verbose output.--mobile flag - (removes .so) from app dest archive.--web flag for packaging for pyodide.--find-links option for installing pip dependencies from alternative sources (indexes).--dep-mappings for rewriting flet dependency to either flet-embed or flet-pyodide.--req-deps for adding required dependencies like flet-embed or flet-pyodide.--platform option for use with sitecustomize.py to tweak pip to pull platform-specific packages.Simplified Python initialization on Android.
* Python 3.11.6.
Bumping version after fixing pubspec.yaml.
macOS, Windows and Linux support.
Nothing published for this version
* Initial version.
Your coding agent can read these notes before it upgrades. Set up the MCP server →