From 3a5b552fd5db9349e46d0d7af0599e6c9a5bbe79 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 20 Aug 2026 11:20:59 -0700 Subject: [PATCH 1/2] Bump MSRV to 1.96.0 Coupled with today's release of Rust 1.98.0 prtest:full --- .github/actions/install-rust/action.yml | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/install-rust/action.yml b/.github/actions/install-rust/action.yml index 70d430ea6cd5..ba79b3d8d430 100644 --- a/.github/actions/install-rust/action.yml +++ b/.github/actions/install-rust/action.yml @@ -32,7 +32,7 @@ runs: elif [ "${{ inputs.toolchain }}" = "msrv" ]; then echo "version=1.$msrv.0" >> "$GITHUB_OUTPUT" elif [ "${{ inputs.toolchain }}" = "wasmtime-ci-pinned-nightly" ]; then - echo "version=nightly-2026-08-12" >> "$GITHUB_OUTPUT" + echo "version=nightly-2026-08-20" >> "$GITHUB_OUTPUT" elif [ "${{ inputs.toolchain }}" = "wasmtime-ci-oss-fuzz-pin" ]; then # Do not change this number unless OSS-Fuzz has updated. If you update # this version and do not update OSS-Fuzz then you will break our diff --git a/Cargo.toml b/Cargo.toml index af6699da0311..d3c89c665d65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -225,7 +225,7 @@ authors = ["The Wasmtime Project Developers"] edition = "2024" # Wasmtime's current policy is that this number can be no larger than the # current stable release of Rust minus 2. -rust-version = "1.95.0" +rust-version = "1.96.0" [workspace.lints.rust] # Turn on some lints which are otherwise allow-by-default in rustc. From fb5ed70c58e59a99767bc40fb5280985fef0af6f Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 20 Aug 2026 12:10:40 -0700 Subject: [PATCH 2/2] Attempt to workaround mingw issues --- crates/fiber/src/windows.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/crates/fiber/src/windows.rs b/crates/fiber/src/windows.rs index d1a0d565400b..f9bc319cc524 100644 --- a/crates/fiber/src/windows.rs +++ b/crates/fiber/src/windows.rs @@ -178,7 +178,19 @@ impl Fiber { impl Drop for Fiber { fn drop(&mut self) { unsafe { + let is_fiber = IsThreadAFiber() != 0; + if !is_fiber { + // DeleteFiber runs FLS destructors. Make those destructors + // observe a fiber so Rust does not run thread-local cleanup + // for the live thread. + let fiber = ConvertThreadToFiber(ptr::null_mut()); + assert!(!fiber.is_null(), "failed to make current thread a fiber"); + } DeleteFiber(self.fiber); + if !is_fiber { + let res = ConvertFiberToThread(); + assert!(res != 0, "failed to convert main thread back"); + } } } }