fix(bindings): declare the real MSRV (rust-version 1.81 → 1.91)#211
Merged
Conversation
The Dependabot security sweep (#198) bumped alloy 1.1.2 -> 1.8.3 — load-bearing for the lru 0.16 RUSTSEC fix (alloy-provider moves its lru pin ^0.13 -> ^0.16) — and alloy 1.8.3 declares rustc >= 1.91. The locked graph's true max MSRV is 1.91 (verified via cargo metadata), but bindings/ and fixtures/ still declared 1.81, so tnt-core-bindings — a published crate — advertised an MSRV it no longer met; a consumer on 1.81-1.90 hits 'rustc is unsupported' from alloy/ruint. Fixes the sole blocking finding on #198's multi-shot review. Verified the crate builds on exactly 1.91 (cargo +1.91 check -p tnt-core-bindings --locked, green). CHANGELOG documents the MSRV bump and the two accepted build-environment consequences of the alloy bump: aws-lc-rs now needs cmake + a C toolchain, and the TLS trust root moved from bundled webpki-roots to the OS-native store.
tangletools
approved these changes
Jul 24, 2026
tangletools
left a comment
Contributor
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — cc0a7f29
This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
tangletools · auto-approval · reason: drewstone_author · 2026-07-24T20:52:20Z
drewstone
added a commit
that referenced
this pull request
Jul 24, 2026
…was stale) (#212) crates.io tnt-core-bindings 0.19.0 was published 2026-07-07, two days before #209 (EventDriven per-job billing in the service settlement asset) merged and regenerated the ABI. So the published 0.19.0 ships an intermediate 0.19 ABI that was never deployed — its i_tangle.rs differs from the deployed contract's by ~900 lines. Any consumer pinning 0.19.0 (blueprint-sdk included) built against selectors that don't match the live 0.19 deployment; the operator only worked because it consumed bindings via a git patch, not the crates.io release. 0.19.1 carries main's current (deployed-matching) ABI. Also folds in the MSRV declaration fix from #211 (rust-version 1.91). Publish-verified: cargo publish --dry-run -p tnt-core-bindings packages + compiles clean on 1.91.
drewstone
added a commit
that referenced
this pull request
Jul 24, 2026
…ings version (#213) The drift this prevents actually shipped: tnt-core-bindings 0.19.0 was published 2026-07-07, then #209 regenerated the ABI on 2026-07-09 under the SAME version. crates.io versions are immutable, so the published crate kept an ABI ~900 lines out of date from the deployed contract. blueprint-sdk and every operator built from it linked selectors that don't exist on-chain, and nothing failed loudly — the live operator only worked because a git patch masked the staleness (fixed by republishing as 0.19.1 in #212). The gate is pure git (no build, <5s): if a PR touches bindings/abi/** or bindings/src/bindings/**, the version literal in bindings/Cargo.toml must differ from the base. Validated against real history — fires on #209, N/A on #211.
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.
Follow-up to #198, closing its multi-shot review's sole blocking finding (review comment).
The bug
#198's security sweep bumped
alloy1.1.2 → 1.8.3 — load-bearing: thelru0.16 RUSTSEC fix requiresalloy-provider≥1.4, which moves itslrupin^0.13→^0.16, which requiresalloy1.8.3. Andalloy1.8.3 declaresrustc >= 1.91. Butbindings/Cargo.tomlandfixtures/Cargo.tomlstill declaredrust-version = "1.81".tnt-core-bindingsis a published crate. Advertising1.81while the locked graph needs1.91means a consumer on Rust 1.81–1.90 hits confusingrustc X.Y is unsupportederrors from alloy/ruint instead of a clear MSRV error.I verified the true max MSRV is 1.91 (
cargo metadataover the locked graph — everyalloy1.8.3 sub-crate declares 1.91).The fix
rust-version1.81→1.91inbindings/Cargo.toml+fixtures/Cargo.toml— the declaration now matches what the graph requires.bindings/CHANGELOG.mddocuments the MSRV bump and the two build-environment consequences of the required alloy bump, as a conscious record (the reviewer asked these be a deliberate decision, not an accidentalcargo updateside effect):aws-lc-rs/aws-lc-sysviareqwest0.13 →rustls0.23.41).webpki-rootsto the OS-native store (rustls-platform-verifier).Why not cap alloy / force
ringlruadvisory that chore(security): sweep Dependabot advisories #198 fixed.ringcrypto backend (to drop cmake): alloy 1.8.3 defaults toaws-lc-rs; overriding a transitive crypto provider from a downstream crate is fragile (additive Cargo features, controlled by alloy/reqwest), CI already has cmake, and the protocol isn't live. Documenting the requirement is the right call; dropping cmake later is a deliberate alloy-feature change, not a security follow-up.The other review findings are non-issues on
main: the JS ones (vitest 3→4, esbuild override) were verified green in #198's own testing, and the remaining LOWs are informational/cosmetic.Verification
cargo +1.91 check -p tnt-core-bindings --locked→ green (35s; compiled alloy 1.8.3 + aws-lc-sys 0.42.0 against cmake 3.28.3). Three files changed, no lock change.