Skip to content

Upgrade wasmtime to v43#901

Open
zoosky wants to merge 1 commit into
extism:mainfrom
zoosky:upgrade-wasmtime-43
Open

Upgrade wasmtime to v43#901
zoosky wants to merge 1 commit into
extism:mainfrom
zoosky:upgrade-wasmtime-43

Conversation

@zoosky
Copy link
Copy Markdown

@zoosky zoosky commented Apr 26, 2026

v43.0.1 patches the 2026-04-09 security advisory cluster which
includes 41.0.4 in the affected range. Two of these are critical sandbox
escapes:

The 41.x line has no patch release for these advisories; the patched lines are
24 (LTS), 36 (LTS), 42 (42.0.2), and 43 (43.0.1).

Why v43 instead of v42 or v44

  • v42 vs v43: same MSRV (1.91.0). v43 includes the fix for converting
    wasmtime::Error into anyhow::Error and using downcast (upstream
    #12689
    ) — the runtime relies on this for the Trap, I32Exit,
    and WasmCoreDump downcasts in plugin.rs.
  • v43 vs v44: v44 requires Rust 1.92.0; v43 only needs 1.91.0.

Breaking change handled

v42 stopped re-exporting anyhow::Error and introduced wasmtime::Error/
wasmtime::Result. The runtime still exposes anyhow::Error as the public
SDK error type; conversion happens at the wasmtime boundary via
ToWasmtimeResult and the From<wasmtime::Error> for anyhow::Error impl.

Changes

  • wasmtime / wasi-common / wiggle: 41 → 43
  • rust-toolchain.toml: 1.90.0 → 1.91.0
  • Wrap pdk and user import host functions with .to_wasmtime_result() so the
    closures match the new Linker::func_new signature.
  • ResourceLimiter impl and catch_out_of_fuel! macro produce wasmtime::Error.
  • Drop deprecated Config::async_support(false) (a no-op since v42).

Verification

  • cargo build --release -p libextism
  • cargo build --release --benches -p extism
  • cargo fmt --check
  • cargo clippy --all --release --all-features --no-deps -- -D "clippy::all"
  • cargo test --release / --all-features / --no-default-features — 43/44 pass.
    tests::runtime::test_disable_cache is a pre-existing timing-based flake
    (passes in isolation, fails under parallel test load); confirmed to also fail
    on main before this change.

Release notes: v42, v43

Fixes #898

v43.0.1 patches the 2026-04-09 security advisory cluster which
includes 41.0.4 in the affected range, including two critical
sandbox-escape advisories (GHSA-jhxm-h53p-jm7w on aarch64 Cranelift,
GHSA-xx5w-cvp6-jv83 on Winch). The 41.x line has no patch release
for these.

v42 introduced its own wasmtime::Error/Result types instead of
re-exporting anyhow. The runtime keeps anyhow::Error as the public
SDK error type and converts at the wasmtime boundary using
ToWasmtimeResult and the From<wasmtime::Error> for anyhow::Error
impl that v43 fixed for downcasts (PR #12689 upstream), preserving
the existing Trap / I32Exit / WasmCoreDump downcast patterns.

- wasmtime / wasi-common / wiggle: 41 -> 43
- rust-toolchain: 1.90.0 -> 1.91.0 (wasmtime 43 MSRV)
- Wrap pdk and import host functions with .to_wasmtime_result()
- ResourceLimiter and catch_out_of_fuel now produce wasmtime::Error
- Drop deprecated Config::async_support(false) (no-op in v42+)

Release notes:
- v42: https://github.com/bytecodealliance/wasmtime/releases/tag/v42.0.0
- v43: https://github.com/bytecodealliance/wasmtime/releases/tag/v43.0.0
@nilslice
Copy link
Copy Markdown
Member

Thank you! I will get this reviewed this week

lacion added a commit to pixhaus-app/pixhaus that referenced this pull request May 8, 2026
…114)

Tauri 2.11.0 had an origin-confusion issue (medium) where remote pages
could invoke local-only IPC commands. The 2.11.1 release patches the
origin check in the IPC entry point. Caret range in app/Cargo.toml
already permits 2.11.1, so this is a lockfile-only update; tauri-build,
tauri-codegen, tauri-macros, tauri-runtime, tauri-runtime-wry, and
tauri-utils ride along with their matching companion bumps.

Closes Dependabot alert #5 (GHSA-7gmj-67g7-phm9). The remaining 12 open
alerts on wasmtime are blocked upstream on extism/extism#901 (extism
1.21.0 pins wasmtime ^41 and the 2026-04 advisory cluster only has
fixes in 42.0.2 / 43.0.2). Tracked separately - cargo's resolver
rejects a [patch.crates-io] override across major versions, so we
cannot resolve them without forking extism.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

Upgrade to wasmtime 42+

2 participants