Skip to content

Bump Wasmtime to v49.0.0 prerelease - #3710

Draft
spinframeworkbot wants to merge 4 commits into
mainfrom
bump-wasmtime/prerelease-49.0.0
Draft

Bump Wasmtime to v49.0.0 prerelease#3710
spinframeworkbot wants to merge 4 commits into
mainfrom
bump-wasmtime/prerelease-49.0.0

Conversation

@spinframeworkbot

Copy link
Copy Markdown
Collaborator

Bumps Wasmtime to v49.0.0 prerelease

@alexcrichton alexcrichton left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, although if more is needed other than a Rust update in CI I can look more closely at the other changes too

Comment thread Cargo.toml
Comment on lines +207 to 210
wasmtime = { git = "https://github.com/bytecodealliance/wasmtime", branch = "release-49.0.0" }
wasmtime-wasi = { git = "https://github.com/bytecodealliance/wasmtime", branch = "release-49.0.0", features = ["p3"] }
wasmtime-wasi-http = { git = "https://github.com/bytecodealliance/wasmtime", branch = "release-49.0.0", features = ["p3", "component-model-async"] }
wit-component = "0.247.0"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I realize this is automation-generated but one possible tweak, now that this is the first release this is in effect, would be to use 49.0.0-rc.1 on crates.io which would avoid the need for git deps

@itowlson

itowlson commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

I've re-run the tests in case of flakiness, but internal_http_p3_p2 (service chaining across P3 / P2 boundary, https://github.com/spinframework/spin/tree/main/tests/runtime-tests/tests/internal-http-p3-p2) seems to be failing consistently. (Both failed jobs are the same test, just different OSes.) My only changes were sync/async chores in the sockets stack, so if this is real then I think it is likely down to something in Wasmtime. Giving it one more for luck but I think this might need some @dicej / @alexcrichton love - thanks!

@alexcrichton

Copy link
Copy Markdown
Contributor

Definitely looks like a Wasmtime-side issue, I'll poke at it today

@alexcrichton

Copy link
Copy Markdown
Contributor

Ok I've attempted a draft fix for that issue at bytecodealliance/wasmtime#14302, will report back here when that's ready.

pull Bot pushed a commit to eduardomourar/wasmtime that referenced this pull request Sep 9, 2026
This commit adjust the previous `check_recursive_run` function found in
`concurrent.rs` to instead be a check of the now-present
`event_loop_running` bool. This allows disparate stores to run
recursively as there should be no issue with that but still requires
a single store just once and never recursively.

This was discovered in Spin's update to Wasmtime 49 at
spinframework/spin#3710 where delegation of an HTTP request from a p3
component (executed with `run_concurrent`) to a p2 component
(instantiated with `instantiate_async`) started panicking with this
recursive check in Wasmtime 49. The cause of this was the refactoring
in bytecodealliance#14146 where all instantiation now simulates the concurrent event
loop where enabled for the `start` function. Spin executes the
components in different stores, however, which is how this commit fixes
that case.
alexcrichton added a commit to bytecodealliance/wasmtime that referenced this pull request Sep 9, 2026
* Seed alias analysis worklist in reverse post-order (#14290)

This visits a block's predecessors before the block itself, which minimizes the
number of times we need to reprocess a block to reach the fixed point (ignoring
backedges).

Here are the Sightglass results (faster on 13/26 of the PCA subset; up to 1.02x
faster), plus some extra benchmarks that use 1000 different globals in order to
create benchmarks with many alias regions (up to 16.27x faster).

<details>

```
compilation :: cycles :: Sum Total

    Δ = 8422617.35 ± 280685.06 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.15x to 1.16x faster than 5e00554-baseline.dylib!

    ┌──────────┬──────────┬─────────────┬──────────┬─────────────────────────────┐
    │ Min      │ Max      │ Mean        │ Median   │ Engine                      │
    ├──────────┼──────────┼─────────────┼──────────┼─────────────────────────────┤
    │ 60331062 │ 64369397 │ 61754473.07 │ 61678752 │ 5e00554-baseline.dylib   │
    ├──────────┼──────────┼─────────────┼──────────┼─────────────────────────────┤
    │ 51846162 │ 55688043 │ 53331855.72 │ 53253352 │ c86906f168-A-rpo-seed.dylib │
    └──────────┴──────────┴─────────────┴──────────┴─────────────────────────────┘

compilation :: instructions-retired :: Sum Total

    Δ = 7583044017.87 ± 17783614.28 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.05x to 1.05x faster than 5e00554-baseline.dylib!

    ┌──────────────┬──────────────┬─────────────────┬──────────────┬─────────────────────────────┐
    │ Min          │ Max          │ Mean            │ Median       │ Engine                      │
    ├──────────────┼──────────────┼─────────────────┼──────────────┼─────────────────────────────┤
    │ 168815527589 │ 168999930832 │ 168907183902.21 │ 168906273009 │ 5e00554-baseline.dylib   │
    ├──────────────┼──────────────┼─────────────────┼──────────────┼─────────────────────────────┤
    │ 161221272391 │ 161466420307 │ 161324139884.34 │ 161323996892 │ c86906f168-A-rpo-seed.dylib │
    └──────────────┴──────────────┴─────────────────┴──────────────┴─────────────────────────────┘

compilation :: instructions-retired :: globals-1000-cfg

    Δ = 3488395020.90 ± 330370.05 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 16.27x to 16.27x faster than 5e00554-baseline.dylib!

    ┌────────────┬────────────┬───────────────┬────────────┬─────────────────────────────┐
    │ Min        │ Max        │ Mean          │ Median     │ Engine                      │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 3714492504 │ 3720971964 │ 3716830864.19 │ 3716697153 │ 5e00554-baseline.dylib   │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 227560263  │ 229543940  │ 228435843.29  │ 228446605  │ c86906f168-A-rpo-seed.dylib │
    └────────────┴────────────┴───────────────┴────────────┴─────────────────────────────┘

compilation :: instructions-retired :: globals-1000-loop

    Δ = 3676743569.51 ± 269112.72 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 14.98x to 14.99x faster than 5e00554-baseline.dylib!

    ┌────────────┬────────────┬───────────────┬────────────┬─────────────────────────────┐
    │ Min        │ Max        │ Mean          │ Median     │ Engine                      │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 3938271014 │ 3942494061 │ 3939646001.25 │ 3939498236 │ 5e00554-baseline.dylib   │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 262014252  │ 264993857  │ 262902431.74  │ 262817743  │ c86906f168-A-rpo-seed.dylib │
    └────────────┴────────────┴───────────────┴────────────┴─────────────────────────────┘

compilation :: cycles :: globals-1000-cfg

    Δ = 4080711.94 ± 12420.75 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 11.78x to 11.85x faster than 5e00554-baseline.dylib!

    ┌─────────┬─────────┬────────────┬─────────┬─────────────────────────────┐
    │ Min     │ Max     │ Mean       │ Median  │ Engine                      │
    ├─────────┼─────────┼────────────┼─────────┼─────────────────────────────┤
    │ 4353068 │ 4563437 │ 4458098.75 │ 4457209 │ 5e00554-baseline.dylib   │
    ├─────────┼─────────┼────────────┼─────────┼─────────────────────────────┤
    │ 325067  │ 427413  │ 377386.81  │ 377755  │ c86906f168-A-rpo-seed.dylib │
    └─────────┴─────────┴────────────┴─────────┴─────────────────────────────┘

compilation :: cycles :: globals-1000-loop

    Δ = 4104661.05 ± 14351.30 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 10.61x to 10.68x faster than 5e00554-baseline.dylib!

    ┌─────────┬─────────┬────────────┬─────────┬─────────────────────────────┐
    │ Min     │ Max     │ Mean       │ Median  │ Engine                      │
    ├─────────┼─────────┼────────────┼─────────┼─────────────────────────────┤
    │ 4397623 │ 4666018 │ 4530267.27 │ 4533174 │ 5e00554-baseline.dylib   │
    ├─────────┼─────────┼────────────┼─────────┼─────────────────────────────┤
    │ 370362  │ 491900  │ 425606.22  │ 428477  │ c86906f168-A-rpo-seed.dylib │
    └─────────┴─────────┴────────────┴─────────┴─────────────────────────────┘

compilation :: instructions-retired :: tinygo-json

    Δ = 107193076.80 ± 815883.64 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.02x to 1.02x faster than 5e00554-baseline.dylib!

    ┌────────────┬────────────┬───────────────┬────────────┬─────────────────────────────┐
    │ Min        │ Max        │ Mean          │ Median     │ Engine                      │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 5439283619 │ 5450038733 │ 5445123463.82 │ 5445131000 │ 5e00554-baseline.dylib   │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 5332483991 │ 5345446881 │ 5337930387.02 │ 5337890931 │ c86906f168-A-rpo-seed.dylib │
    └────────────┴────────────┴───────────────┴────────────┴─────────────────────────────┘

compilation :: instructions-retired :: kotlin-richards

    Δ = 12093387.57 ± 584630.03 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.02x to 1.02x faster than 5e00554-baseline.dylib!

    ┌───────────┬───────────┬──────────────┬───────────┬─────────────────────────────┐
    │ Min       │ Max       │ Mean         │ Median    │ Engine                      │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 634797689 │ 643565242 │ 639630353.10 │ 639744730 │ 5e00554-baseline.dylib   │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 623934476 │ 631123628 │ 627536965.53 │ 627528340 │ c86906f168-A-rpo-seed.dylib │
    └───────────┴───────────┴──────────────┴───────────┴─────────────────────────────┘

compilation :: instructions-retired :: meshoptimizer

    Δ = 2362359.47 ± 404322.82 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.01x to 1.01x faster than 5e00554-baseline.dylib!

    ┌───────────┬───────────┬──────────────┬───────────┬─────────────────────────────┐
    │ Min       │ Max       │ Mean         │ Median    │ Engine                      │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 383858384 │ 390770689 │ 388053353.33 │ 388001245 │ 5e00554-baseline.dylib   │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 383261763 │ 387923421 │ 385690993.86 │ 385615471 │ c86906f168-A-rpo-seed.dylib │
    └───────────┴───────────┴──────────────┴───────────┴─────────────────────────────┘

compilation :: instructions-retired :: shootout-minicsv

    Δ = 601519.85 ± 472227.74 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.01x faster than 5e00554-baseline.dylib!

    ┌───────────┬───────────┬──────────────┬───────────┬─────────────────────────────┐
    │ Min       │ Max       │ Mean         │ Median    │ Engine                      │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 117035013 │ 123844363 │ 120882817.37 │ 121027989 │ 5e00554-baseline.dylib   │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 116974294 │ 123132924 │ 120281297.52 │ 120136429 │ c86906f168-A-rpo-seed.dylib │
    └───────────┴───────────┴──────────────┴───────────┴─────────────────────────────┘

compilation :: instructions-retired :: quicksort

    Δ = 881381.59 ± 416211.85 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.01x faster than 5e00554-baseline.dylib!

    ┌───────────┬───────────┬──────────────┬───────────┬─────────────────────────────┐
    │ Min       │ Max       │ Mean         │ Median    │ Engine                      │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 223787543 │ 229133325 │ 225969513.23 │ 225822591 │ 5e00554-baseline.dylib   │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 222127742 │ 228398304 │ 225088131.64 │ 225055771 │ c86906f168-A-rpo-seed.dylib │
    └───────────┴───────────┴──────────────┴───────────┴─────────────────────────────┘

compilation :: instructions-retired :: bz2

    Δ = 2312715.06 ± 480227.08 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌───────────┬───────────┬──────────────┬───────────┬─────────────────────────────┐
    │ Min       │ Max       │ Mean         │ Median    │ Engine                      │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 737107590 │ 743849687 │ 740178352.09 │ 740078124 │ 5e00554-baseline.dylib   │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 734533054 │ 741353972 │ 737865637.03 │ 737898085 │ c86906f168-A-rpo-seed.dylib │
    └───────────┴───────────┴──────────────┴───────────┴─────────────────────────────┘

compilation :: instructions-retired :: sqlite3

    Δ = 17102938.31 ± 978800.03 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌────────────┬────────────┬───────────────┬────────────┬─────────────────────────────┐
    │ Min        │ Max        │ Mean          │ Median     │ Engine                      │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 6543461309 │ 6560165030 │ 6551934323.03 │ 6551923670 │ 5e00554-baseline.dylib   │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 6529868907 │ 6542054900 │ 6534831384.72 │ 6534691956 │ c86906f168-A-rpo-seed.dylib │
    └────────────┴────────────┴───────────────┴────────────┴─────────────────────────────┘

compilation :: instructions-retired :: spidermonkey-regex

    Δ = 118389649.00 ± 4827636.02 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌─────────────┬─────────────┬────────────────┬─────────────┬─────────────────────────────┐
    │ Min         │ Max         │ Mean           │ Median      │ Engine                      │
    ├─────────────┼─────────────┼────────────────┼─────────────┼─────────────────────────────┤
    │ 45963049179 │ 46016697865 │ 45985854571.04 │ 45984800772 │ 5e00554-baseline.dylib   │
    ├─────────────┼─────────────┼────────────────┼─────────────┼─────────────────────────────┤
    │ 45839879682 │ 45907160559 │ 45867464922.04 │ 45866804291 │ c86906f168-A-rpo-seed.dylib │
    └─────────────┴─────────────┴────────────────┴─────────────┴─────────────────────────────┘

compilation :: instructions-retired :: rust-compression

    Δ = 6712163.12 ± 856022.61 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌────────────┬────────────┬───────────────┬────────────┬─────────────────────────────┐
    │ Min        │ Max        │ Mean          │ Median     │ Engine                      │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 3870353384 │ 3882887385 │ 3875855295.33 │ 3876293061 │ 5e00554-baseline.dylib   │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 3863295580 │ 3875095656 │ 3869143132.21 │ 3869057316 │ c86906f168-A-rpo-seed.dylib │
    └────────────┴────────────┴───────────────┴────────────┴─────────────────────────────┘

compilation :: instructions-retired :: regex

    Δ = 5669354.36 ± 632864.99 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌────────────┬────────────┬───────────────┬────────────┬─────────────────────────────┐
    │ Min        │ Max        │ Mean          │ Median     │ Engine                      │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 3285972090 │ 3294088345 │ 3289597651.01 │ 3289541728 │ 5e00554-baseline.dylib   │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 3279840034 │ 3287764296 │ 3283928296.65 │ 3283956957 │ c86906f168-A-rpo-seed.dylib │
    └────────────┴────────────┴───────────────┴────────────┴─────────────────────────────┘

compilation :: instructions-retired :: tract-onnx-image-classification

    Δ = 135367927.19 ± 14795683.99 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌─────────────┬─────────────┬────────────────┬─────────────┬─────────────────────────────┐
    │ Min         │ Max         │ Mean           │ Median      │ Engine                      │
    ├─────────────┼─────────────┼────────────────┼─────────────┼─────────────────────────────┤
    │ 81407549211 │ 81562568478 │ 81475588637.09 │ 81473382979 │ 5e00554-baseline.dylib   │
    ├─────────────┼─────────────┼────────────────┼─────────────┼─────────────────────────────┤
    │ 81256299647 │ 81465756514 │ 81340220709.90 │ 81335906227 │ c86906f168-A-rpo-seed.dylib │
    └─────────────┴─────────────┴────────────────┴─────────────┴─────────────────────────────┘

compilation :: instructions-retired :: hex-simd

    Δ = 779004.92 ± 525403.40 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌───────────┬───────────┬──────────────┬───────────┬─────────────────────────────┐
    │ Min       │ Max       │ Mean         │ Median    │ Engine                      │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 508671283 │ 515352203 │ 512220005.11 │ 512185404 │ 5e00554-baseline.dylib   │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 508728739 │ 515958257 │ 511441000.19 │ 511357702 │ c86906f168-A-rpo-seed.dylib │
    └───────────┴───────────┴──────────────┴───────────┴─────────────────────────────┘

compilation :: instructions-retired :: libsodium-scalarmult_ed25519

    Δ = 885006.64 ± 499263.19 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌───────────┬───────────┬──────────────┬───────────┬─────────────────────────────┐
    │ Min       │ Max       │ Mean         │ Median    │ Engine                      │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 746252373 │ 753029861 │ 749924541.79 │ 749970953 │ 5e00554-baseline.dylib   │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 745419599 │ 752737391 │ 749039535.15 │ 749090622 │ c86906f168-A-rpo-seed.dylib │
    └───────────┴───────────┴──────────────┴───────────┴─────────────────────────────┘

compilation :: instructions-retired :: hashset

    Δ = 1571708.63 ± 1175700.98 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌────────────┬────────────┬───────────────┬────────────┬─────────────────────────────┐
    │ Min        │ Max        │ Mean          │ Median     │ Engine                      │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 1463796111 │ 1480612250 │ 1472991690.94 │ 1473144505 │ 5e00554-baseline.dylib   │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 1464040534 │ 1477349536 │ 1471419982.31 │ 1471875364 │ c86906f168-A-rpo-seed.dylib │
    └────────────┴────────────┴───────────────┴────────────┴─────────────────────────────┘

compilation :: instructions-retired :: rust-html-rewriter

    Δ = 3230981.96 ± 641798.83 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌────────────┬────────────┬───────────────┬────────────┬─────────────────────────────┐
    │ Min        │ Max        │ Mean          │ Median     │ Engine                      │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 3228518318 │ 3238197616 │ 3232722284.22 │ 3232812395 │ 5e00554-baseline.dylib   │
    ├────────────┼────────────┼───────────────┼────────────┼─────────────────────────────┤
    │ 3225242344 │ 3234092078 │ 3229491302.26 │ 3229350214 │ c86906f168-A-rpo-seed.dylib │
    └────────────┴────────────┴───────────────┴────────────┴─────────────────────────────┘

compilation :: instructions-retired :: rust-protobuf

    Δ = 705588.07 ± 582552.52 (confidence = 99%)

    c86906f168-A-rpo-seed.dylib is 1.00x to 1.00x faster than 5e00554-baseline.dylib!

    ┌───────────┬───────────┬──────────────┬───────────┬─────────────────────────────┐
    │ Min       │ Max       │ Mean         │ Median    │ Engine                      │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 722339594 │ 731951556 │ 728193145.67 │ 728326686 │ 5e00554-baseline.dylib   │
    ├───────────┼───────────┼──────────────┼───────────┼─────────────────────────────┤
    │ 723792262 │ 731022735 │ 727487557.60 │ 727470029 │ c86906f168-A-rpo-seed.dylib │
    └───────────┴───────────┴──────────────┴───────────┴─────────────────────────────┘
```

<details>

* Fix subtle ISLE extractor issue leading to incorrect matching in `*mul_overflow` lowering. (#14295)

* Fix subtle ISLE extractor issue leading to incorrect matching in `*mul_overflow` lowering.

In #14293, a test case that uses the *first* result (i.e., the product)
of an `smul_overflow` operator as a condition (e.g. as part of `icmp eq`
comparing to zero) incorrectly triggers the lowering rule I added in #14254
which was meant to match only compare-to-zero on the *second* (overflow)
result.

This was a result if a fairly subtle issue involving auto-conversions in
ISLE. I had written

```
(rule (is_nonzero (second_result umul @ (smul_overflow ...)))
      ...)
```

where the intent was to match an `is_nonzero` (which is a helper term)
lowering with the second result (overflow flag) of the `smul_overflow`.

`second_result` has a term signature `(Value) Inst`, in other words it
takes an `Inst` and returns an `Option<Value>`.` `is_nonzero` takes a
`Value`. So we auto-convert the `Value` in the first arg position of
`is_nonzer` to an `Inst`; that uses `def_inst`, which looks up the
defining instruction of the given value. Then `second_result` takes that
`Inst` and gives the second value. But then the next level,
`(smul_overflow ...)`, *again* uses `def_inst` and goes from the (second
result) `Value` back to the inst and matches.

In other words, we're too permissive with the autoconversions on `Value`
to `Inst`; all of this was designed at a time when we more or less only
handled single-result instructions with any nontrivial lowering rule, so
the two were mostly interchangeable. The handling for the overflow-flag
ops changes that.

The specific step in that chain above that is unambiguously wrong wrt
intent is (first result) `Value` -> `Inst` -> `second_result` matching.
So this PR instead introduces `is_second_result` that is `Value` ->
`Option<Value>` and matches only when the specific `Value` is the second
result of an instruction.

This does have me thinking a bit more about the role that the `Value` ->
`Inst` autoconvert matching plays. It is absolutely essential to the
ergonomics of ISLE: without it, we couldn't write

```
(rule (lower (iadd (imul a b) c)) ...)
```

because `iadd`'s args are `Value`s and we need to match back to an
`Inst` for `imul`. *But* we also have cases like the one in this PR
where we really shouldn't be so permissive. Perhaps we want a kind of
type modifier (`=Value` ?) that means "exactly this type, not
autoconverted". I'll bring this up in the Cranelift meeting this week.

Fixes #14293.

* Review feedback.

* Test minimization.

* Adjust the recursive `run_concurrent` check (#14302)

This commit adjust the previous `check_recursive_run` function found in
`concurrent.rs` to instead be a check of the now-present
`event_loop_running` bool. This allows disparate stores to run
recursively as there should be no issue with that but still requires
a single store just once and never recursively.

This was discovered in Spin's update to Wasmtime 49 at
spinframework/spin#3710 where delegation of an HTTP request from a p3
component (executed with `run_concurrent`) to a p2 component
(instantiated with `instantiate_async`) started panicking with this
recursive check in Wasmtime 49. The cause of this was the refactoring
in #14146 where all instantiation now simulates the concurrent event
loop where enabled for the `start` function. Spin executes the
components in different stores, however, which is how this commit fixes
that case.

---------

Co-authored-by: Nick Fitzgerald <fitzgen@gmail.com>
Co-authored-by: Chris Fallin <chris@cfallin.org>
@alexcrichton

Copy link
Copy Markdown
Contributor

Ok that PR is now merged so if you update the git rev of the release-49.0.0 branch, I think CI might then be passing

@itowlson

itowlson commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

Thanks Alex. Updated!

spinframeworkbot and others added 4 commits September 10, 2026 08:11
Signed-off-by: spinframeworkbot <202838904+spinframeworkbot@users.noreply.github.com>
Signed-off-by: itowlson <ivan.towlson@fermyon.com>
Signed-off-by: itowlson <ivan.towlson@fermyon.com>
Signed-off-by: itowlson <ivan.towlson@fermyon.com>
@itowlson
itowlson force-pushed the bump-wasmtime/prerelease-49.0.0 branch from 1f3b13c to 379c2cf Compare September 9, 2026 20:14
@itowlson

itowlson commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

further bumpings for a Cargo.lock conflict

people I must insist no merging to main from the 5th of the month to the 20th

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.

3 participants