runtime: close out Wasmtime concurrency coverage gaps - #378
Merged
Merged
Conversation
lannbot
enabled auto-merge
September 14, 2026 15:40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete the disposition of the remaining supplementary Wasmtime concurrency subset: fix executable runtime gaps, recognize narrowly proved diagnostic equivalents, and document compatible/native-only residuals.
Runtime
catch_allcannot intercept them. Exact carrier identities retain the original cause and physical/logical origin across nested and JSPI boundaries; no global pending-cause slot. Core exceptions caught within a component remain ordinary exceptions.Explicit limitation
thread.new-indirectvalidates ordinary canonical-final(i32|i64) -> ()start types before execution. Valid structurally equivalent non-final/derived types may still be rejected. This is not spec-compatible full thread support: the current JS interface exposes nominal type tests rather than structural function-signature reflection. Complete support requires translator metadata/table instrumentation beyond this interface; the restriction and executable boundary tests remain tracked under #12.Harness
wasmtime/gconly to the destructor-context fixture as a real host boundary, matching its purpose with eager logical frames rather than pretending to force JS GC.just shells.fn()unreachable diagnostic exactly, without broadening matching.Final Wasmtime concurrency disposition
Starting async inventory:42 failures +4 skipped setups. Final:13 classified failures,0 skips:
-11 future-write diagnostic differences: spec-compatible rejection of non-IDLE operations.
-1 unavailable native table-capacity setup +1 dependent no-instance assertion; purpose covered separately by bounded-reuse regression.
-The excluded async massive-send file remains a documented native resource-policy test.
All executed async exception and explicit-thread cases now pass. Residual file/line keys remain in
harness/src/wasmtime-expectations.ts; reasoning is inharness/README.mdandcontracts/intrinsics.md.Verification
just gates < /dev/null: PASS,/tmp/opencode/concurrency-closeout-final-gates.log.No convention goldens, manifests, protocol marks, or plan format version changed. Automerge will be armed and watched through delivery. Related tracking: #12, #372.