Skip to content

Use synchronous runtime for the main wasm execution lane#5095

Merged
joshua-spacetime merged 5 commits into
masterfrom
joshua/wasm-sync
May 28, 2026
Merged

Use synchronous runtime for the main wasm execution lane#5095
joshua-spacetime merged 5 commits into
masterfrom
joshua/wasm-sync

Conversation

@joshua-spacetime
Copy link
Copy Markdown
Contributor

@joshua-spacetime joshua-spacetime commented May 21, 2026

Description of Changes

Before this change, we used a single async-enabled wasm runtime for all requests, even though procedures are the only operation that can yield. Now each module gets two separate runtimes. We continue to use the same async runtime for procedures, but now reducers are executed against a synchronous wasm runtime, backed by a single OS-thread instead of a Tokio runtime.

The purpose of this change is to remove from the critical path the overhead associated with async calls that really aren't async at all.

Also includes the following fix from #5135:

After #4973, WASM procedures can execute concurrently with later operations on the same WebSocket.

Before this change, the C# regression testsuite queued several procedures, then immediately queued UnsubscribeThen. After #4973, the unsubscribe could be applied before the SubscriptionEventOffset procedure callback ran, clearing MyTable from the local subscribed cache. The callback then failed while asserting that the offset-test: row was present.

This change treats unsubscribe as a separate phase. It is scheduled after the main work is queued, but only starts once waiting == 0, so all callbacks that inspect subscribed state run before the cache is cleared.

API and ABI breaking changes

None

Expected complexity level and risk

2.5

Testing

Pure refactor. Relies on current test coverage. #5078 will ensure the performance is on par with V8.

Comment thread crates/core/src/host/wasmtime/mod.rs
Comment thread crates/core/src/host/wasmtime/wasmtime_module.rs Outdated
@joshua-spacetime joshua-spacetime force-pushed the joshua/wasm-sync branch 2 times, most recently from 951af96 to a0f9d29 Compare May 27, 2026 04:38
Comment thread crates/core/src/util/jobs.rs
@joshua-spacetime joshua-spacetime added this pull request to the merge queue May 28, 2026
@joshua-spacetime joshua-spacetime removed this pull request from the merge queue due to a manual request May 28, 2026
@joshua-spacetime joshua-spacetime added this pull request to the merge queue May 28, 2026
Merged via the queue into master with commit 247a9eb May 28, 2026
51 of 52 checks passed
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