build: fix the bridge version constraint and run the packaged suite - #137
Merged
Adel-Ayoub merged 3 commits intoJul 30, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Installing this package and starting it fails today.
RustLib.init()throws, becausepubspec.yamlaccepted a range of bridge runtimes while the committed bindings are stamped with one exact version, and the bridge compares those two strings and refuses a mismatch. The constraint is exact now, and the Dart runtime, the Rust crate, the generator and the bindings all move to the current release together. The new CI job is what found it, by building a throwaway app outside the repository against the assembled publish payload and running the containment subset against the library that app links.The pin stays exact. While bindings are committed and the runtime compares versions by string, any range at all ships something a consumer can install and not start, so pub's complaint about a tight constraint is permanent rather than a stopgap.
Assembling the payload also turned up two things it should not have been carrying.
/build/stopped being excluded once.pubignorereplaced the root.gitignoreinstead of extending it, which shipped 44 MB of whatever the last localflutter testleft behind, andrust/.gitignorenamedsrc/frb_generated.rs, a tracked file, which is what the dry run had been exiting 65 over. The published archive goes from 14 MB to 620 KB.One line in the regeneration is worth a look. Four
sse_decodesites moved fromvec![]toVec::with_capacity(len_ as usize), andlen_is ani32read off the wire, so a hand-built frame carrying a negative length used to yield an empty vector and now asks the allocator for something absurd. Reaching it needs process access already, and neither outcome reads or writes out of bounds.