Skip to content

Commit e0e0305

Browse files
committed
Re-pin dart_bridge to 1.6.1 (macOS framework symlink fix)
python-build's 20260725 manifest was updated in place to dart_bridge 1.6.1, so regenerate the version tables against it. 1.6.1 zips the Apple xcframework with -y so the macOS slice's versioned framework symlinks (Versions/Current -> A, dart_bridge and Resources -> Versions/Current/...) survive publishing. Under 1.6.0 they were followed and stored as real files/directories, producing a malformed bundle that macOS codesign rejected ('Couldn't resolve framework symlink for .../Versions/Current', 'code object is not signed at all'). iOS was unaffected -- its slices use a flat layout with no symlinks. See flet-dev/dart-bridge#12. Binaries are unchanged from 1.6.0; only the artifact packaging differs.
1 parent 00f4463 commit e0e0305

10 files changed

Lines changed: 11 additions & 11 deletions

File tree

src/serious_python/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## 4.4.0
22

33
* **iOS/macOS:** fix built iOS apps crashing at startup with `Failed to lookup symbol 'serious_python_run'`. `dart_bridge` now ships as a dynamic framework, so the FFI entry points Dart and Python resolve via `dlsym` stay exported; previously it was static-linked into the app executable, which exports nothing. Release/device builds only. See `serious_python_darwin` 4.4.0.
4-
* Bundled python-build snapshot re-pinned to **20260725** (`dart_bridge` **1.5.1 → 1.6.0**, which carries the dynamic-framework change above; Pyodide 3.14 **314.0.2 → 314.0.3**). Python versions (**3.12.13 / 3.13.14 / 3.14.6**) are unchanged.
4+
* Bundled python-build snapshot re-pinned to **20260725** (`dart_bridge` **1.5.1 → 1.6.1**, which carries the dynamic-framework change above; Pyodide 3.14 **314.0.2 → 314.0.3**). Python versions (**3.12.13 / 3.13.14 / 3.14.6**) are unchanged.
55

66
## 4.3.6
77

src/serious_python/lib/src/python_versions.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const dartBridgeVersionEnvironmentVariable = "DART_BRIDGE_VERSION";
1111

1212
/// python-build release the bundled runtimes come from (YYYYMMDD).
1313
const pythonReleaseDate = "20260725";
14-
const dartBridgeVersion = "1.6.0";
14+
const dartBridgeVersion = "1.6.1";
1515
const defaultPythonVersion = "3.14";
1616

1717
class PythonRelease {

src/serious_python_android/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 4.4.0
22

3-
* Re-pins the bundled python-build snapshot to **20260725** (`dart_bridge` **1.5.1 → 1.6.0**). 1.6.0 changes only how `dart_bridge` is packaged for Apple platforms (static library → dynamic framework, see `serious_python_darwin` 4.4.0); the Android runtime is byte-identical to 20260720.
3+
* Re-pins the bundled python-build snapshot to **20260725** (`dart_bridge` **1.5.1 → 1.6.1**). 1.6.1 changes only how `dart_bridge` is packaged for Apple platforms (static library → dynamic framework, see `serious_python_darwin` 4.4.0); the Android runtime is byte-identical to 20260720.
44

55
## 4.3.6
66

src/serious_python_android/android/python_versions.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# GENERATED by `dart run serious_python:gen_version_tables` from
22
# python-build manifest.json (release 20260725). Do not edit by hand.
33
default_python_version=3.14
4-
dart_bridge_version=1.6.0
4+
dart_bridge_version=1.6.1
55
python_build_release_date=20260725
66
3.12.full_version=3.12.13
77
3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a

src/serious_python_darwin/CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## 4.4.0
22

3-
* **iOS/macOS: `dart_bridge` now ships as a dynamic framework**, fixing built iOS apps crashing at startup with `Failed to lookup symbol 'serious_python_run': dlsym(RTLD_DEFAULT, serious_python_run): symbol not found`. `dart_bridge`'s FFI entry points (`serious_python_run`, `DartBridge_InitDartApiDL`, `DartBridge_EnqueueMessage`, `PyInit_dart_bridge`) are resolved at runtime via `dlsym` — from Dart through `DynamicLibrary.process()` and from Python through `import dart_bridge`. It previously shipped as a **static** archive linked into the host app *executable*, and an iOS executable exports nothing to the dynamic symbol table by default (the release build also strips local symbols), so those lookups failed. Only release/archive (device) builds were affected — debug/simulator builds don't dead-strip, so the failure did not reproduce there. Android was never affected: its `dart_bridge` is a dynamic `.so`, which exports its symbols. `dart_bridge` **1.6.0** now builds `dart_bridge.xcframework` as a dynamic framework (see flet-dev/dart-bridge#11), so it is embedded + signed into the app like `Python.xcframework` and its symbols stay exported. The SwiftPM `-all_load` / `-force_load` retention, the CocoaPods `-all_load`, and the plugin's dead-strip keep-alive references are all removed — a loaded image needs none of them.
4-
* Re-pins the bundled python-build snapshot to **20260725** (`dart_bridge` **1.5.1 → 1.6.0**). Python versions (**3.12.13 / 3.13.14 / 3.14.6**) are unchanged and the iOS/macOS CPython runtimes are byte-identical to 20260720.
3+
* **iOS/macOS: `dart_bridge` now ships as a dynamic framework**, fixing built iOS apps crashing at startup with `Failed to lookup symbol 'serious_python_run': dlsym(RTLD_DEFAULT, serious_python_run): symbol not found`. `dart_bridge`'s FFI entry points (`serious_python_run`, `DartBridge_InitDartApiDL`, `DartBridge_EnqueueMessage`, `PyInit_dart_bridge`) are resolved at runtime via `dlsym` — from Dart through `DynamicLibrary.process()` and from Python through `import dart_bridge`. It previously shipped as a **static** archive linked into the host app *executable*, and an iOS executable exports nothing to the dynamic symbol table by default (the release build also strips local symbols), so those lookups failed. Only release/archive (device) builds were affected — debug/simulator builds don't dead-strip, so the failure did not reproduce there. Android was never affected: its `dart_bridge` is a dynamic `.so`, which exports its symbols. `dart_bridge` **1.6.1** now builds `dart_bridge.xcframework` as a dynamic framework (see flet-dev/dart-bridge#11 and #12), so it is embedded + signed into the app like `Python.xcframework` and its symbols stay exported. The SwiftPM `-all_load` / `-force_load` retention, the CocoaPods `-all_load`, and the plugin's dead-strip keep-alive references are all removed — a loaded image needs none of them.
4+
* Re-pins the bundled python-build snapshot to **20260725** (`dart_bridge` **1.5.1 → 1.6.1**). Python versions (**3.12.13 / 3.13.14 / 3.14.6**) are unchanged and the iOS/macOS CPython runtimes are byte-identical to 20260720.
55

66
## 4.3.6
77

src/serious_python_darwin/darwin/python_versions.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# GENERATED by `dart run serious_python:gen_version_tables` from
22
# python-build manifest.json (release 20260725). Do not edit by hand.
33
default_python_version=3.14
4-
dart_bridge_version=1.6.0
4+
dart_bridge_version=1.6.1
55
python_build_release_date=20260725
66
3.12.full_version=3.12.13
77
3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a

src/serious_python_linux/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 4.4.0
22

3-
* Re-pins the bundled python-build snapshot to **20260725** (`dart_bridge` **1.5.1 → 1.6.0**). 1.6.0 is an Apple-only packaging change (see `serious_python_darwin` 4.4.0); the Linux runtime is byte-identical to 20260720.
3+
* Re-pins the bundled python-build snapshot to **20260725** (`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 Linux runtime is byte-identical to 20260720.
44

55
## 4.3.6
66

src/serious_python_linux/linux/python_versions.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# GENERATED by `dart run serious_python:gen_version_tables` from
22
# python-build manifest.json (release 20260725). Do not edit by hand.
33
default_python_version=3.14
4-
dart_bridge_version=1.6.0
4+
dart_bridge_version=1.6.1
55
python_build_release_date=20260725
66
3.12.full_version=3.12.13
77
3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a

src/serious_python_windows/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 4.4.0
22

3-
* Re-pins the bundled python-build snapshot to **20260725** (`dart_bridge` **1.5.1 → 1.6.0**). 1.6.0 is an Apple-only packaging change (see `serious_python_darwin` 4.4.0); the Windows runtime is byte-identical to 20260720.
3+
* Re-pins the bundled python-build snapshot to **20260725** (`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.
44

55
## 4.3.6
66

src/serious_python_windows/windows/python_versions.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# GENERATED by `dart run serious_python:gen_version_tables` from
22
# python-build manifest.json (release 20260725). Do not edit by hand.
33
default_python_version=3.14
4-
dart_bridge_version=1.6.0
4+
dart_bridge_version=1.6.1
55
python_build_release_date=20260725
66
3.12.full_version=3.12.13
77
3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a

0 commit comments

Comments
 (0)