Resolve dart wrapper deps with MSRV awareness - #1868
Closed
chavic wants to merge 1 commit into
Closed
Conversation
The dart native-assets build resolves dependencies fresh on every
run: no lockfile ships to pub.dev consumers and contrib/test.sh
deletes native/Cargo.lock to match. With the old resolver a
transitive dependency that raises its MSRV in a patch release
breaks the build outright, as encoding_rs 0.8.40 (requires rustc
1.88) did on 2026-09-07 against the pinned 1.85.1 toolchain,
failing dart CI on every branch and pub.dev installs alike.
Declare rust-version and switch the wrapper workspace to resolver
v3 (as the root workspace already does) so cargo falls back to
MSRV-compatible versions instead:
Adding encoding_rs v0.8.35 (available: v0.8.40, requires Rust 1.88)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017MzBuv1zoMURfNEKKDka8d
chavic
requested review from
DanGould,
benalleng and
spacebear21
as code owners
September 8, 2026 16:55
DanGould
requested changes
Sep 8, 2026
DanGould
left a comment
Member
There was a problem hiding this comment.
remove claude co-authorship please because we can't hold claude accountable
Comment on lines
+2
to
7
| # MSRV-aware dependency resolution: this build resolves fresh (no lockfile | ||
| # ships to pub.dev consumers), so prefer dependency versions compatible | ||
| # with rust-version instead of failing when a transitive dependency raises | ||
| # its MSRV in a patch release. | ||
| resolver = "3" | ||
|
|
Member
There was a problem hiding this comment.
comment w/ rationale in commit pls rather than here
Collaborator
Coverage Report for CI Build 34254017169Coverage remained the same at 86.64%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
Collaborator
Collaborator
|
Closed as fixed in #1863 |
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.
Dart CI has failed on every branch since 2026-09-07 (last green run 2026-09-03):
encoding_rs 0.8.40was published withrust-version = 1.88, and the dart wrapper build hits it because it is the one build in CI that intentionally resolves dependencies fresh —dart/contrib/test.shdeletesnative/Cargo.lockto mirror pub.dev consumers, whose native-assets hook builds the crate with no lockfile. The wrapper crate had norust-versionand the old resolver, so cargo picked 0.8.40 and hard-failed against the pinned 1.85.1 toolchain:This also means pub.dev installs on rustc < 1.88 are failing the same way right now, not just CI.
Fix: declare
rust-version = "1.85"and use resolver v3 innative/Cargo.toml(the root workspace already uses v3), making the fresh resolution MSRV-aware so cargo falls back instead of failing:This addresses the failure class generically — the next transitive dependency to raise its MSRV in a patch release gets the same fallback — rather than pinning
encoding_rsone-off. Complementary to #1815, which commits a lockfile for reproducible in-repo builds: consumers building through the pub.dev hook still benefit from MSRV-aware resolution. Same disease #1797 treated in the ubrn build.Verified locally that resolution now selects 0.8.35; the dart CI jobs on this PR are the end-to-end check.
Disclosure: co-authored by Claude Fable
🤖 Generated with Claude Code
https://claude.ai/code/session_017MzBuv1zoMURfNEKKDka8d