From a9404895ceb32cf910b7bd7881417267afc0c5f4 Mon Sep 17 00:00:00 2001 From: slopbot9k Date: Mon, 19 Oct 2026 16:23:22 -0600 Subject: [PATCH] Pin Rust 1.99.1 so Apple dylibs load on iOS 27 and macOS 27 Rust releases before 1.98 strip release-profile debuginfo on Apple targets with the bundled rust-objcopy, which can leave the Mach-O __LINKEDIT string pool 4-byte aligned. Libraries built that way against the iOS 27 / macOS 27 SDKs are rejected by dyld ("mis-aligned LINKEDIT string pool") and by Xcode 27's ld. Rust 1.98.0 fixed the layout (rust-lang/rust#157750), so pin 1.99.1 and update the references to the previous version. --- .github/workflows/ci.yml | 6 +++--- .github/workflows/release.yml | 14 +++++++------- CHANGELOG.md | 3 +++ README.md | 2 +- rust/rust-toolchain.toml | 2 +- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b95e9c0..d064003 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: - toolchain: "1.89.0" + toolchain: "1.99.1" - uses: Swatinem/rust-cache@v2 with: @@ -79,7 +79,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: - toolchain: "1.89.0" + toolchain: "1.99.1" - uses: Swatinem/rust-cache@v2 with: @@ -115,7 +115,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: - toolchain: "1.89.0" + toolchain: "1.99.1" - uses: Swatinem/rust-cache@v2 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0763729..aa34bbb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,8 +35,8 @@ jobs: - name: Select Rust toolchain run: | - rustup toolchain install 1.89.0 --profile minimal --target "${{ matrix.target }}" - rustup default 1.89.0 + rustup toolchain install 1.99.1 --profile minimal --target "${{ matrix.target }}" + rustup default 1.99.1 - uses: Swatinem/rust-cache@v2 with: @@ -81,8 +81,8 @@ jobs: - name: Select Rust toolchain run: | - rustup toolchain install 1.89.0 --profile minimal --target "${{ matrix.target }}" - rustup default 1.89.0 + rustup toolchain install 1.99.1 --profile minimal --target "${{ matrix.target }}" + rustup default 1.99.1 - uses: Swatinem/rust-cache@v2 with: @@ -126,7 +126,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: - toolchain: "1.89.0" + toolchain: "1.99.1" targets: ${{ matrix.target }} - uses: Swatinem/rust-cache@v2 @@ -162,7 +162,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: - toolchain: "1.89.0" + toolchain: "1.99.1" targets: ${{ matrix.target }} - uses: Swatinem/rust-cache@v2 @@ -192,7 +192,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: - toolchain: "1.89.0" + toolchain: "1.99.1" targets: x86_64-pc-windows-msvc - uses: Swatinem/rust-cache@v2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 77f6ef5..bf04277 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## Unreleased +- Pin Rust 1.99.1. Earlier toolchains strip Apple dynamic libraries with a + misaligned `__LINKEDIT` string pool, which iOS 27 and macOS 27 refuse to + load. - Add opt-in verified native downloads and release manifests. - Require Flutter 3.47 and Dart 3.13. - Build and bundle the Rust dynamic library with Flutter Native Assets. diff --git a/README.md b/README.md index 40798b9..da44863 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ instead of the former plugin packaging and platform-specific download scripts. - Flutter 3.47 or newer - Dart 3.13 or newer -- For source builds: Rust 1.89.0 through `rustup` (selected by +- For source builds: Rust 1.99.1 through `rustup` (selected by [`rust/rust-toolchain.toml`](rust/rust-toolchain.toml)) - The normal native build tools for the target platform: Xcode on Apple platforms, the Android NDK for Android, a C/C++ toolchain and CMake on diff --git a/rust/rust-toolchain.toml b/rust/rust-toolchain.toml index aa11bc4..44d92be 100644 --- a/rust/rust-toolchain.toml +++ b/rust/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "1.89.0" +channel = "1.99.1" profile = "minimal" targets = [