Support explicit cancellation of Wasm execution#28
Merged
chaploud merged 3 commits intoclojurewasm:mainfrom Apr 24, 2026
Merged
Support explicit cancellation of Wasm execution#28chaploud merged 3 commits intoclojurewasm:mainfrom
chaploud merged 3 commits intoclojurewasm:mainfrom
Conversation
c643a26 to
d5b5615
Compare
3438e30 to
04e81c8
Compare
chaploud
added a commit
that referenced
this pull request
Apr 15, 2026
Establishes a reference point on main (201d13c, after PRs #32/#33/#35 merged) for comparison against upcoming changes that touch the VM hot path — notably PR #28's cancellation checks in consumeInstructionBudget. Delta vs previous baseline w45-simd-loop-persist (2026-03-26, 1e406db): major speedups in realworld C benchmarks (rw_c_matrix -82%, rw_c_math -69%, rw_cpp_sort -28%) from unrelated interim commits; sub-ms regressions on st_ackermann and st_nestedloop are at-or-below the noise floor and not attributable to PR #32 (its invoke() change adds three null-branch guards with no observable cost when persistent fields are unset, which is the bench configuration).
04e81c8 to
4b07665
Compare
perf: optimize atomic memory ordering in cancellation logic and add VS Code project settings
4b07665 to
27579aa
Compare
27579aa to
aab626f
Compare
aab626f to
48b3f53
Compare
This was referenced Apr 24, 2026
chaploud
added a commit
that referenced
this pull request
Apr 24, 2026
…lation Merge PR #28: Execution cancellation API (jtakakura) + refinements
2 tasks
Contributor
|
Hi @jtakakura — thanks again for this contribution. Shipped in v1.9.0 (commit 231c7ca) via #43, which preserves your three commits verbatim as the base of the feature branch. Refinements added on top (6 follow-up commits)
Verified
v1.9.0 is tagged and pushed. ClojureWasm bump PR: clojurewasm/ClojureWasm#3. Thanks for the patient and well-scoped work — the FFI thread-safety test in particular was a great addition. Closing this PR as merged. |
Contributor
Author
|
@chaploud Thrilled to see v1.9.0 shipped ㊗️ |
pull Bot
pushed a commit
to DaviRain-Su/zwasm
that referenced
this pull request
Apr 24, 2026
Captures the design behind PR clojurewasm#28: atomic flag piggybacking on the existing deadline checkpoints, JIT fuel cap to periodically fire the helper, reset-at- invoke semantics, and the cancellable=false opt-out for peak-throughput hosts.
pull Bot
pushed a commit
to DaviRain-Su/zwasm
that referenced
this pull request
Apr 24, 2026
Document the Zig/C/CLI surface added by PR clojurewasm#28 and the default-on JIT checkpoint behaviour so v1.9.0 release notes can be assembled from the Unreleased block without archaeology.
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
This PR implements a mechanism to explicitly cancel a running WebAssembly instance from an external thread, as requested in #27.
Previously, execution could only be stopped via pre-set fuel limits or deadline timeouts. This change introduces a thread-safe cancelled flag in the Vm struct, allowing host applications to interrupt long-running or infinite loops from a different thread.
Proposed Changes
Core VM Implementation
Public API
Testing
Related Issue
Closes #27