From fbd28b3a0c6e6476a70207c0a87dc12eda2a8863 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Thu, 15 Jan 2026 15:26:56 -0800 Subject: [PATCH 1/5] back msrv off to 1.88 --- Cargo.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6129835..4fbb58b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,8 +59,7 @@ license = "Apache-2.0 WITH LLVM-exception" repository = "https://github.com/bytecodealliance/wstd" keywords = ["WebAssembly", "async", "stdlib", "Components"] categories = ["wasm", "asynchronous"] -# Rust-version policy: stable N-2, same as wasmtime. -rust-version = "1.89" +rust-version = "1.88" authors = [ "Yoshua Wuyts ", "Pat Hickey ", From 9aaf79fd3fa3401965a1711981697226dbb05465 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Thu, 15 Jan 2026 15:30:31 -0800 Subject: [PATCH 2/5] ci: matrix build on msrv, stable, nightly --- .github/actions/install-rust/action.yml | 2 +- .github/workflows/ci.yaml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/actions/install-rust/action.yml b/.github/actions/install-rust/action.yml index 5aa8505..e421f25 100644 --- a/.github/actions/install-rust/action.yml +++ b/.github/actions/install-rust/action.yml @@ -10,7 +10,7 @@ inputs: runs: using: composite steps: - - name: Install Rust + - name: Select Rust shell: bash id: select run: | diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 726a7cf..f9e8a27 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -21,11 +21,14 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] + rust: [msrv, stable, nightly] steps: - uses: actions/checkout@master - uses: ./.github/actions/install-rust + with: + toolchain: ${{ matrix.rust }} - name: Install wasmtime uses: bytecodealliance/actions/wasmtime/setup@v1 From 3857d7135a49d81b6635f547c7b701cf9ff4b885 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Thu, 15 Jan 2026 15:32:45 -0800 Subject: [PATCH 3/5] ci: no need to matrix on host os this is entirely cross-compiled. Duplicating testing on multiple OSs takes a bunch of time and is what the wasmtime project is supposed to do so we don't have to. If we regret this later its not hard to re-enable, but for now it doesn't seem warranted --- .github/workflows/ci.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f9e8a27..026420a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -17,10 +17,9 @@ permissions: jobs: build_and_test: name: Build and test - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest strategy: matrix: - os: [ubuntu-latest, windows-latest, macOS-latest] rust: [msrv, stable, nightly] steps: From a2c1f2ea75c27d2ed01e658ed158c9316f885979 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Thu, 15 Jan 2026 15:46:48 -0800 Subject: [PATCH 4/5] install-rust action: fix msrv sed --- .github/actions/install-rust/action.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/install-rust/action.yml b/.github/actions/install-rust/action.yml index e421f25..0d11907 100644 --- a/.github/actions/install-rust/action.yml +++ b/.github/actions/install-rust/action.yml @@ -14,12 +14,12 @@ runs: shell: bash id: select run: | - # Determine MSRV as N in `1.N.0` by looking at the `rust-version` - # located in the root `Cargo.toml`. - msrv=$(grep 'rust-version.*1' Cargo.toml | sed 's/.*\.\([0-9]*\)\..*/\1/') + # Determine MSRV by looking at the `rust-version` located in the root + # `Cargo.toml`. + msrv=$(grep 'rust-version.*1' Cargo.toml | sed 's/rust-version *\= *"\([^"]*\)"/\1/') if [ "${{ inputs.toolchain }}" = "msrv" ]; then - echo "version=1.$msrv.0" >> "$GITHUB_OUTPUT" + echo "version=$msrv" >> "$GITHUB_OUTPUT" else echo "version=${{ inputs.toolchain }}" >> "$GITHUB_OUTPUT" fi From e834380f2ebec8212a0404b4cf8ec66ddd88a948 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Thu, 15 Jan 2026 16:05:12 -0800 Subject: [PATCH 5/5] test programs: compat with 1.88 --- test-programs/Cargo.toml | 3 +++ test-programs/src/lib.rs | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/test-programs/Cargo.toml b/test-programs/Cargo.toml index ba431b4..f280352 100644 --- a/test-programs/Cargo.toml +++ b/test-programs/Cargo.toml @@ -16,6 +16,9 @@ ureq.workspace = true cargo_metadata.workspace = true heck.workspace = true +[dependencies] +fs2 = "0.4" + [features] default = [] no-aws = [] diff --git a/test-programs/src/lib.rs b/test-programs/src/lib.rs index 0d4a83f..a62d166 100644 --- a/test-programs/src/lib.rs +++ b/test-programs/src/lib.rs @@ -6,6 +6,9 @@ use std::process::{Child, Command}; use std::thread::sleep; use std::time::Duration; +// Required until msrv over 1.89, at which point locking is available in std +use fs2::FileExt; + const DEFAULT_SERVER_PORT: u16 = 8081; /// Manages exclusive access to port 8081, and kills the process when dropped @@ -31,7 +34,8 @@ impl WasmtimeServe { let mut lockfile = std::env::temp_dir(); lockfile.push(format!("TEST_PROGRAMS_WASMTIME_SERVE_{port}.lock")); let lockfile = File::create(&lockfile)?; - lockfile.lock()?; + // Once msrv reaches 1.89, replace with std's `.lock()` method + lockfile.lock_exclusive()?; // Run wasmtime serve. // Enable -Scli because we currently don't have a way to build with the