Skip to content

chore(deps): bump wasmtime 43 -> 47 to fix RUSTSEC-2026-0222 - #137

Merged
ndreno merged 2 commits into
mainfrom
chore/wasmtime-47-rustsec-2026-0222
Aug 10, 2026
Merged

chore(deps): bump wasmtime 43 -> 47 to fix RUSTSEC-2026-0222#137
ndreno merged 2 commits into
mainfrom
chore/wasmtime-47-rustsec-2026-0222

Conversation

@ndreno

@ndreno ndreno commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Why

The scheduled supply-chain audit (run 31364240272) failed on RUSTSEC-2026-0222, "Stores can mix up type indices between engines" (GHSA-hgjw-h833-99q9), affecting wasmtime 43.0.2.

The 43.x line received no backport. The advisory's fixed ranges are >=24.0.12 <25, >=36.0.13 <37, >=46.0.2 <47 and >=47.0.3, so the only forward move is the 47 line. Pinned to 47.0.3 in the lockfile.

What changed

  • wasmtime and wasmtime-wasi 43 -> 47 in the workspace dependencies, Cargo.lock updated
  • Workspace MSRV 1.91 -> 1.94, since wasmtime 47 requires rustc 1.94. Propagated to the msrv CI job, the README badge, CONTRIBUTING.md and docs/contributing/development.md

No source changes were needed: the API surface we use (Config, Engine, Module, Linker, Store, Caller, Memory, TypedFunc, ResourceLimiter, OptLevel) is unchanged across 43 -> 47.

Verification

Run locally before pushing:

  • cargo deny check advisories -> advisories ok
  • cargo check --workspace --all-targets -> clean
  • cargo clippy --workspace --lib --bins -- -D warnings -> clean
  • cargo clippy --workspace --all-targets -- -D warnings -A clippy::unwrap_used -A clippy::expect_used -A clippy::panic -> clean
  • cargo test -p barbacane-wasm -> 195 passed, 0 failed, plus 1 doctest

Out of scope

Two remaining cargo-deny warnings, neither of which fails the audit:

  • spin 0.9.8 is yanked, pulled in via multer <- axum 0.8.8. No upgrade path until axum bumps multer.
  • Duplicate winnow 0.7.15 / 1.0.1 (toml 0.8 on our side vs toml 0.9 inside wasmtime). bans.multiple-versions is set to warn.

Note for reviewers

The MSRV bump is the real cost here: building Barbacane now requires Rust 1.94.

Summary by CodeRabbit

  • Chores

    • Updated the minimum supported Rust version to 1.94.
    • Upgraded Wasmtime components to version 47.
    • Updated continuous integration settings to test against Rust 1.94.
  • Documentation

    • Updated Rust version references and badges across project documentation.

The scheduled supply-chain audit failed on RUSTSEC-2026-0222 ("Stores can
mix up type indices between engines", GHSA-hgjw-h833-99q9) affecting
wasmtime 43.0.2. The 43.x line received no backport; the advisory's fixed
ranges are >=24.0.12 <25, >=36.0.13 <37, >=46.0.2 <47 and >=47.0.3, so the
only forward move is the 47 line.

wasmtime 47 requires rustc 1.94, so the workspace MSRV moves 1.91 -> 1.94
along with the msrv CI job, the README badge and the contributor docs.

No source changes were needed: the API surface we use (Config, Engine,
Module, Linker, Store, Caller, Memory, TypedFunc, ResourceLimiter,
OptLevel) is unchanged across 43 -> 47.

Verified locally: cargo deny check advisories passes, cargo check
--workspace --all-targets is clean, both CI clippy invocations are clean,
and cargo test -p barbacane-wasm passes (195 tests + 1 doctest).
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@ndreno, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 46 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 6b84fc8a-42d8-4c6d-b5d7-4d7c00549705

📥 Commits

Reviewing files that changed from the base of the PR and between 5cd56c8 and 148e146.

📒 Files selected for processing (5)
  • Dockerfile
  • Dockerfile.control
  • Dockerfile.standalone
  • adr/0019-packaging-and-release-strategy.md
  • docs/guide/fips.md
📝 Walkthrough

Walkthrough

The project MSRV increased from Rust 1.91 to 1.94. Workspace dependencies upgraded wasmtime and wasmtime-wasi from version 43 to 47. CI and documentation now use the new MSRV.

Changes

Rust Toolchain Upgrade

Layer / File(s) Summary
Workspace version and dependencies
Cargo.toml
The workspace requires Rust 1.94. The wasmtime and wasmtime-wasi dependencies use version 47.
Toolchain and documentation alignment
.github/workflows/ci.yml, CONTRIBUTING.md, README.md, docs/contributing/development.md
The MSRV workflow, prerequisites, and Rust version badge now reference Rust 1.94.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the primary Wasmtime dependency upgrade and its security advisory purpose.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/wasmtime-47-rustsec-2026-0222

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Cargo.toml`:
- Around line 24-26: Update the Dockerfile builder image from Rust 1.93 to Rust
1.94 or newer, and revise its adjacent toolchain comment to match the selected
version while preserving the existing build configuration.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 278641a4-e91f-4c04-82a3-f65b8ed5da31

📥 Commits

Reviewing files that changed from the base of the PR and between eb92bcd and 5cd56c8.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock, !**/*.lock, !**/Cargo.lock
📒 Files selected for processing (5)
  • .github/workflows/ci.yml
  • CONTRIBUTING.md
  • Cargo.toml
  • README.md
  • docs/contributing/development.md

Comment thread Cargo.toml
The Dockerfiles pinned rust:1.93-slim-bookworm, one minor below the
workspace MSRV that wasmtime 47 raised to 1.94, so every image build would
have failed on the rust-version gate. Docker builds do not run on pull
requests, so CI did not catch it.

Covers Dockerfile, Dockerfile.control and both builder stages of
Dockerfile.standalone, plus the copy-pasteable snippets in ADR-0019 and
the FIPS guide.
@ndreno

ndreno commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

Good catch, fixed in 148e146.

All three Dockerfiles pinned rust:1.93-slim-bookworm, one minor below the new 1.94 MSRV, so every image build would have failed on the rust-version gate. Docker builds don't run on pull requests, so CI wouldn't have caught this before a release.

Bumped to rust:1.94-slim-bookworm in:

  • Dockerfile (builder stage)
  • Dockerfile.control (rust-builder stage)
  • Dockerfile.standalone (both binary-builder and plugin-builder stages)

Also updated the copy-pasteable snippets that carried the same pin, since they'd otherwise hand readers a broken build:

  • adr/0019-packaging-and-release-strategy.md
  • docs/guide/fips.md

The adjacent comments referencing the old "wasmtime 43 / cranelift 0.130 floor" rationale were updated to the wasmtime 47 floor at the same time. Swept the tree for any other Rust version pin below 1.94; none remain.

@ndreno
ndreno merged commit 66bddf0 into main Aug 10, 2026
15 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.

1 participant