Skip to content

feat: upgrade flutter_rust_bridge to 2.13.0, release 3.3.2 - #26

Merged
iota9star merged 6 commits into
mainfrom
chore/upgrade-frb-2.13
Sep 30, 2026
Merged

iota9star merged 6 commits into
mainfrom
chore/upgrade-frb-2.13

Conversation

@iota9star

Copy link
Copy Markdown
Member

Summary

Upgrades flutter_rust_bridge from 2.12.0 to the latest 2.13.0 on both sides of the bridge and releases it as 3.3.2.

  • Regenerated bindings with codegen 2.13.0 (frb_generated.dart / frb_generated.rs); the bridge content hash is unchanged from 2.12.0, so the wire format stays compatible.
  • Rust side pins flutter_rust_bridge = "=2.13.0" (FRB writes this itself during codegen); the root Dart dependency pins the bare exact 2.13.0 — pub has no = operator, and a single-version constraint is deliberate because FRB enforces runtime == codegen at run time.
  • pub warns about that exact pin ("should allow more than one version"), which the previous no-warnings dry-run gate would reject. tool/prepare_darwin_release.sh now tolerates exactly that one expected warning and still fails the release on any other warning or error; the self-check asserts the whitelist stays wired (and --ignore-warnings remains forbidden).
  • CI installs codegen 2.13.0; the example lock moves to flutter_rust_bridge 2.13.0 (plus its new transitive logging dependency) and fjs 3.3.2 only.
  • Version bumped to 3.3.2 across pubspec, Cargo manifest/lock, and the three podspecs, with a CHANGELOG entry.

Local validation: 626 Rust tests, 129 build_tool Dart tests, FRB regeneration idempotence under codegen 2.13.0 + floating nightly + cargo-expand 1.0.126, structure self-check, and a clean-tree publish dry-run.

Regenerate the bindings with codegen 2.13.0, bump the runtime
dependency on both sides (the Rust side pins =2.13.0, the root Dart
dependency stays capped to the codegen minor line), install codegen
2.13.0 in CI, and release as 3.3.2. The bridge content hash is
unchanged from 2.12.0, so the wire format is compatible.
pub does not support the = operator and warns when a dependency is
pinned to a single version. The flutter_rust_bridge pin is deliberate
(the bridge enforces runtime == codegen), so the release script now
accepts exactly that one warning and still fails on anything else.
Copilot AI balanced review requested due to automatic review settings September 30, 2026 03:06

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The publish gate can accept duplicate whitelisted warnings or mask another nonzero publish failure.

Review effort: Balanced
Findings: 1 High severity

Open (1)
What changed in this PR

Upgrades Flutter Rust Bridge to 2.13.0 and prepares the synchronized 3.3.2 release.

Changes:

  • Synchronizes Dart, Rust, CI, lockfiles, podspecs, and generated bindings.
  • Adds selective publish-warning handling.
  • Updates analyzer exclusions and changelog.
File Description
tool/​prepare_darwin_release.sh Adds publish-warning filtering.
tool/​check_darwin_package_support.sh Updates release invariants.
pubspec.yaml Bumps package and FRB versions.
macos/​fjs.podspec Bumps macOS pod version.
libfjs/​src/​frb_generated.rs Regenerates Rust bindings.
libfjs/​Cargo.toml Bumps crate and FRB versions.
libfjs/​Cargo.lock Updates locked Rust dependencies.
lib/​src/​frb/​frb_generated.web.dart Updates generated web metadata.
lib/​src/​frb/​frb_generated.io.dart Updates generated native metadata.
lib/​src/​frb/​frb_generated.dart Updates generated bridge metadata.
lib/​src/​frb/​api/​value.dart Regenerates value API metadata.
lib/​src/​frb/​api/​source.dart Regenerates source API metadata.
lib/​src/​frb/​api/​runtime.dart Regenerates runtime API metadata.
lib/​src/​frb/​api/​error.dart Regenerates error API metadata.
lib/​src/​frb/​api/​engine.dart Regenerates engine API metadata.
lib/​src/​frb/​api/​bytecode.dart Regenerates bytecode API metadata.
ios/​fjs.podspec Bumps iOS pod version.
example/​pubspec.lock Updates example dependencies.
example/​analysis_options.yaml Excludes generated platform directories.
darwin/​fjs.podspec Bumps Darwin pod version.
CHANGELOG.md Documents release 3.3.2.
analysis_options.yaml Extends analyzer exclusions.
.github/​workflows/​build-all-platforms.yml Installs FRB codegen 2.13.0.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +98 to +101
frb_pin_warnings="$(grep -c 'should allow more than one version' "$publish_log" || true)"
unexpected_warnings=$((total_warnings - frb_pin_warnings))
if [ "$unexpected_warnings" -gt 0 ] ||
{ [ "$publish_status" -ne 0 ] && [ "$frb_pin_warnings" -eq 0 ]; } ||
The floating nightly installed locally was from June while CI
installs the current one, and the newer rustc prints one fewer
trait impl into the ignore header. Regenerate so both agree.
@iota9star
iota9star merged commit dd45988 into main Sep 30, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants