NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1918 most downloaded on pub.dev
Windows implementations of the serious_python plugin
Last release 11 days ago
26 Sep 2026
Release timing varies
gaps range from 9 days to 2 months
Nearly every release is documented
notes for 54 of 54 stable releases
1 version withdrawn
withdrawn after publishing
3 years old
55 releases · first in 2023
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
One column per month.
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
dart_bridge to 1.10.0. CPython versions remain 3.12.14 / 3.13.15 / 3.14.7. (python-build#42)Full Changelog : v4.6.0...v4.7.0
Full Changelog: v4.6.0...v4.7.0
dart_bridge to 1.9.0, whose dart_bridge.dll adds the serious_python_hard_exit export behind DartBridge.hardExit. No CPython versions change from 4.6.0 - 3.12.14 / 3.13.15 / 3.14.7 are unchanged.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
html.parser.HTMLParser parsing (gh-153030) and quadratic behaviour in xml.etree.ElementTree XPath index predicates (gh-152674), among others. 3.13.15 and 3.14.7 still bundle libexpat 2.8.2; only 3.12.14 carries 2.8.3 with the CVE-2026-72522 fix — see the serious_python 4.6.0 notes.dart_bridge to 1.8.0.Bump to 4.5.1: sign and verify both XCFramework layers by @FeodorFitsner in #245
Full Changelog: v4.5.0...v4.5.1
dart_bridge to 1.7.1. Both exist to sign the Apple XCFrameworks on both layers (see serious_python_darwin 4.5.1); no Python version moved from 20260729 (3.12.13 / 3.13.14 / 3.14.6), and nothing about Windows changed.Bump to 4.5.0: preserve provider XCFramework signatures through staging by @FeodorFitsner in #244
Full Changelog: v4.4.2...v4.5.0
dart_bridge to 1.7.0. Both exist to provider-sign the Apple XCFrameworks (see serious_python_darwin 4.5.0); no Python version moved from 20260727 (3.12.13 / 3.13.14 / 3.14.6). dart_bridge.dll is rebuilt rather than byte-identical — MSVC stamps a build timestamp and PDB GUID into every DLL — but no Windows source changed between 1.6.1 and 1.7.0.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
Info.plist (see serious_python_darwin 4.4.2); no versions moved and the Windows runtime is unchanged from 20260726.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_darwin 4.4.1); no versions moved and the Windows runtime is unchanged from 20260725.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
dart_bridge 1.5.1 → 1.6.1). 1.6.1 is an Apple-only packaging change (see serious_python_darwin 4.4.0); the Windows runtime is byte-identical to 20260720.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
_putenv_s, fopen), corrupting paths/env values through the process code page. The runtime now converts UTF-8 → UTF-16 and uses the wide CRT APIs (_wputenv_s, _wfopen_s), enables Python UTF-8 mode before Py_Initialize(), sets PYTHONUTF8=1 for multiprocessing helpers, and treats embedded env-setup failures as fatal. Delivered via dart_bridge 1.5.1 (bundled python-build snapshot re-pinned to 20260720). (flet-dev/flet#6641)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
ModuleNotFoundError: No module named '_pyrepl' on Python 3.14. _pyrepl was pruned from the bundled Windows stdlib as a dev-only / interactive-REPL module, but CPython 3.14's pydoc (and pdb) import it at module load — so any app importing pydoc/pdb/pytest, or a dependency that does (e.g. NLTK → pydoc), crashed at startup. _pyrepl is no longer pruned. Re-pins the bundled python-build snapshot to 20260719 (previously 20260714). (flet-dev/serious-python#236)Fix Windows build failure on non-UTF-8 locales (C4819/C2220) by @FeodorFitsner in #234
Full Changelog: v4.3.2...v4.3.3
flet build windows failing on non-UTF-8 system locales with warning C4819 escalated to error C2220 while compiling serious_python_windows_plugin.cpp (flet-dev/flet#6686). A source comment contained a non-ASCII character (an em dash); on a system whose code page isn't UTF-8 — e.g. code page 936/GBK on Simplified-Chinese Windows — MSVC decodes the UTF-8 source as GBK, can't represent the byte sequence (C4819), and the Flutter template's /WX (warnings-as-errors) turns it into a fatal C2220. The character is removed, and the plugin now compiles with /utf-8 so any future non-ASCII source byte is read correctly regardless of the build machine's code page. Bundled Python and dart_bridge versions are unchanged from 4.3.2.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
20260714; aligns with the serious_python_* 4.3.2 release. The release contains only Android/iOS runtime fixes — no Windows-affecting changes.Version bump aligning with the serious_python_* 4.3.1 release.
serious_python_* 4.3.1 release.Bump dart_bridge to 1.5.0 (python-build snapshot 20260708): multiprocessing child-interception exports, including the Windows wide-char variants serio
dart_bridge to 1.5.0 (python-build snapshot 20260708): multiprocessing child-interception exports, including the Windows wide-char variants serious_python_is_mp_invocation_w / serious_python_main_w (→ Py_Main) consumed by the flet build template's wWinMain. See the serious_python 4.3.0 notes.PYTHONINSPECT=1 is no longer set by any platform implementation. It had no effect on the embedded interpreter, but it leaked into the process environment where any real interpreter child (e.g. a serviced multiprocessing worker) would inherit it and hang in interactive mode after its command completed.flet build windows failing with file INSTALL cannot find "C:/WINDOWS/System32/vcruntime140_1.dll" for users who have VS Build Tools installed rather than full Visual Studio. The plugin harvests the CRT runtime DLLs (msvcp140.dll / vcruntime140.dll / vcruntime140_1.dll) from %WINDIR%\System32, but Flutter drives the CMake install step with the 32-bit cmake.exe bundled in VS Build Tools. Under WOW64 file-system redirection that process sees System32 transparently rewritten to SysWOW64, which holds the x86 CRT and doesn't contain vcruntime140_1.dll at all — so the x64 build copied wrong-arch DLLs and then failed. The CRT directory is now resolved via the Sysnative pseudo-folder (visible only to 32-bit processes, mapping back to the real 64-bit System32) when present, falling back to System32 for native 64-bit cmake. See flet-dev/flet#6436.Bump the bundled python-build snapshot to 20260701; aligns with the serious_python_* 4.2.1 release. The Windows runtimes are byte-identical to 2026063
20260701; aligns with the serious_python_* 4.2.1 release. The Windows runtimes are byte-identical to 20260630 (the release only rebuilds the iOS runtime).Bump the bundled python-build snapshot to 20260630 (dart_bridge 1.4.1); aligns with the serious_python_* 4.2.0 release.
20260630 (dart_bridge 1.4.1); aligns with the 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.prepareApp() returns /app; the app's Python sources ship unpacked next to the bundled CPython Lib/DLLs/site-packages (no first-launch extraction). The
prepareApp() returns <exeDir>/app; the app's Python sources ship unpacked next to the bundled CPython Lib/DLLs/site-packages (no first-launch extraction). The CMakeLists copies SERIOUS_PYTHON_APP into the runner output.serious_python_* 4.0.0 release.Breaking change: requires Flutter 3.44.2.
dart_bridge.dll / dart_bridge.pyd (from flet-dev/dart-bridge 1.4.0) instead of a socket transport; both Release and Debug dart_bridge.pyd ship so 3.13/3.14 Debug builds resolve too.CMakeLists.txt resolves the Python version from the generated python_versions.properties (a snapshot of python-build's manifest.json): SERIOUS_PYTHON_VERSION selects the version; the full version and build date derive from the table, with SERIOUS_PYTHON_FULL_VERSION / SERIOUS_PYTHON_BUILD_DATE left as escape hatches. Downloads continue to use python-build's date-keyed release scheme.getPlatformVersion method.Breaking change: default bundled Python version is now 3.14 (was 3.12). The plugin downloads python-windows-for-dart-3.14.zip and bundles python314.dl…
python-windows-for-dart-3.14.zip and bundles python314.dll / python314.lib unless SERIOUS_PYTHON_VERSION=3.12 is set in the build environment.PYTHON_VERSION in windows/CMakeLists.txt reads from SERIOUS_PYTHON_VERSION; the python-build download URL and the python312.lib / python312.dll filenames are derived from it (e.g. python313.lib, python314.dll).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.runPython() method to support running Python script.
runPython() method to support running Python script.flet_example to catch program output and errors, sys.exit() support.package command to read dependencies from pyproject.toml.--exclude option for package command - to exclude directories and files from Python app package.
--exclude option for package command - to exclude directories and files from Python app package.package command.--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.
Initial release of serious_python_windows package.
serious_python_windows package.Your coding agent can read these notes before it upgrades. Set up the MCP server →