Skip to content

Pipeline wasm module operations#4973

Merged
jdetter merged 8 commits into
masterfrom
joshua/pipelined-wasm
May 8, 2026
Merged

Pipeline wasm module operations#4973
jdetter merged 8 commits into
masterfrom
joshua/pipelined-wasm

Conversation

@joshua-spacetime
Copy link
Copy Markdown
Contributor

Description of Changes

The equivalent changes as #4962 but for wasm.

API and ABI breaking changes

See #4962

Expected complexity level and risk

4

Testing

See #4962

Copy link
Copy Markdown
Contributor

@Centril Centril left a comment

Choose a reason for hiding this comment

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

Looks good, although I'll leave it to Noa to also review and approve.

Copy link
Copy Markdown
Contributor

@jdetter jdetter left a comment

Choose a reason for hiding this comment

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

Quick q on this

Comment thread crates/cli/src/subcommands/subscribe.rs
Copy link
Copy Markdown
Contributor

@coolreader18 coolreader18 left a comment

Choose a reason for hiding this comment

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

LGTM!

Comment thread crates/core/src/host/module_host.rs Outdated
Comment thread crates/core/src/host/module_host.rs Outdated
Copy link
Copy Markdown
Contributor

@jdetter jdetter left a comment

Choose a reason for hiding this comment

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

Cli changes look fine to me, not tested by me

@joshua-spacetime joshua-spacetime force-pushed the joshua/pipelined-wasm branch from 747b226 to dc989eb Compare May 7, 2026 17:59
@joshua-spacetime joshua-spacetime added the api-break A PR that makes an API breaking change label May 7, 2026
@joshua-spacetime joshua-spacetime enabled auto-merge May 7, 2026 18:03
@joshua-spacetime joshua-spacetime added this pull request to the merge queue May 8, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to no response for status checks May 8, 2026
@jdetter jdetter added this pull request to the merge queue May 8, 2026
Merged via the queue into master with commit 312dfaa May 8, 2026
119 of 141 checks passed
@joshua-spacetime joshua-spacetime deleted the joshua/pipelined-wasm branch May 8, 2026 15:35
pull Bot pushed a commit to age-rs/SpacetimeDB that referenced this pull request May 28, 2026
…bs#5095)

# 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 clockworklabs#5135:

> After clockworklabs#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 clockworklabs#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. clockworklabs#5078 will ensure the
performance is on par with V8.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api-break A PR that makes an API breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants