v2.3.0
LizardByte/Sunshinev2.3.0May 27, 2026by bfops
AI Summary
This release introduces first-party Godot SDK support and major WebSocket performance improvements through batching and pipelining. It also includes Rust `DbContext` generics, HTTP/2 backend support, and various commitlog optimizations.
Key Highlights
- First-party Godot SDK and Blackholio tutorial for multiplayer game development.
- Faster WebSocket Transport with Batched Responses using the v3 protocol.
- HTTP/2 Backend Support for more efficient client connections.
- Rust `DbContext` Generics enabling code reuse between client and server contexts.
- Significant commitlog performance improvements including non-blocking compression.
Breaking Changes
- Deprecated `ReducerContext::identity` in favor of `database_identity`.
New Features
- First-party Godot C# SDK integration.
- Vue `useProcedure` composable for calling procedures.
- Unity 6 WebGL Compatibility.
- Configurable commitlog compression knobs.
- AWS distribution for client binaries.
Full Release Notes
This release brings first-party Godot support and major WebSocket performance improvements. We've also landed significant pipeline optimizations, commitlog enhancements, and expanded our framework coverage. ## Features ### First-party Godot SDK and Blackholio Tutorial SpacetimeDB now officially supports Godot with a complete C# SDK integration. The new Blackholio tutorial walks through building a multiplayer asteroids-style game, demonstrating best practices for entity replication, player input handling, and game state management in Godot (#4920). ### Faster WebSocket Transport with Batched Responses The WebSocket layer now pipelines and batches responses using the v3 protocol, significantly reducing per-message overhead under high load. Combined with pipelined JavaScript module operations (#4962), WASM module operations (#4973), and a fully pipelined WebSocket send path (#5051), this delivers substantially improved throughput for real-time applications. ### HTTP/2 Backend Support The SpacetimeDB server now supports HTTP/2, enabling more efficient client connections with multiplexed streams and header compression (#5027). ### Vue `useProcedure` Hook Following the React pattern, Vue developers now have a first-class `useProcedure` composable for calling SpacetimeDB procedures with full TypeScript support (#4999). ### Unity 6 WebGL Compatibility C# modules and clients now support Unity 6's WebGL runtime, automatically selecting between `getWasmTableEntry` and `dynCall` as appropriate for the Unity version (#4961). ### Commitlog Performance and Operations The durability layer gained several improvements: - Configurable commitlog compression knobs for operational tuning (#5074) - Compression deferred when under write load to prioritize throughput (#4974) - Non-blocking compression that doesn't hold locks (#4981) - Proper handling of empty tail segments on resumption (#4863) ### Rust `DbContext` Generics Rust modules can now be generic over `DbContext`, enabling code reuse between client and server contexts while maintaining type safety (#4707). ## API Changes - **Deprecated:** `ReducerContext::identity` is deprecated in favor of `database_identity` to clarify that this represents the module's identity, not the caller's (#4843) ## Bug Fixes - Fixed a segfault in the V8 JavaScript runtime that could crash the server (#4986) - Fixed connection lifecycle callbacks not firing correctly in all disconnection scenarios (#4935) - Fixed panics during unsubscribe operations (#4938) - Fixed view auto-migration when using canonical names (#4985) - Eliminated unnecessary `msync` calls on the entire offset index file, improving write performance (#5018) - Fixed directory fsync issues on Windows snapshots (#4939) - Fixed auth error details leaking in debug output (#5000) - Prepared statements are now properly rolled back on transaction failure (#4979) ## Infrastructure - Client binaries are now distributed from AWS instead of DigitalOcean for improved reliability (#5077) - Internal: `cargo ci dlls` renamed to `cargo regen csharp dlls` (#4972) # What's Changed * Remove old script by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4928 * CI - C# test scripts accept `SPACETIMEDB_SERVER_URL` override by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4929 * Add railway section to the docs by @aasoni in https://github.com/clockworklabs/SpacetimeDB/pull/4904 * fix: connection lifecycle callbacks by @onx2 in https://github.com/clockworklabs/SpacetimeDB/pull/4935 * [Rust] Add possibility to be generic over `DbContext` by @kistz in https://github.com/clockworklabs/SpacetimeDB/pull/4707 * fix(update): check version exists before confirming uninstall by @euxaristia in https://github.com/clockworklabs/SpacetimeDB/pull/4774 * Deprecate ReducerContext::identity in favor of database_identity by @Mr-Dust0 in https://github.com/clockworklabs/SpacetimeDB/pull/4843 * CI - Try to fix Internal Tests on `master` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4942 * CI - version upgrade check happens in `ci.yml` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4950 * fix: unsubscribe panics by @onx2 in https://github.com/clockworklabs/SpacetimeDB/pull/4938 * Fix some warnings in C# by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4956 * commitlog: Basic write throughput benchmarks by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/3838 * Minor docs additions based on a discussion in the public Discord by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4963 * Remove distributed benchmark harness by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4967 * Pipeline js module operations by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4962 * commitlog: Handle empty tail segments upon resumption by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4863 * Update keynote readme with updated benchmark figures by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4975 * Defer commitlog compression when under load by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4974 * [C#] [Unity 6] Added logic to use either `getWasmTableEntry` or `dynCall` for C# WebGL by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4961 * Pipeline wasm module operations by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4973 * Compression stats and commitlog compression function by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4708 * `cargo ci dlls` -> `cargo regen csharp dlls` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4972 * CI - Fix `gen-quickstart` check by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4977 * Rollback prepared statements by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4979 * commitlog: Don't lock while compressing by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4981 * Fix segfault in v8 by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4986 * Use cli.toml for default start listen address by @0monish in https://github.com/clockworklabs/SpacetimeDB/pull/4900 * Do not defer commitlog compression by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4987 * snapshot: Don't fsync directories on Windows by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4939 * Docs: Update docs to new designs by @clockwork-tien in https://github.com/clockworklabs/SpacetimeDB/pull/4917 * LLM Benchmark Improvements + More Evals by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4740 * Avoid leaking auth error debug output by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5000 * Abstract `SnapshotWorker` and `durability::Local` by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4982 * added useProcedure export to tanstack index file (#4957) by @ClemensWon in https://github.com/clockworklabs/SpacetimeDB/pull/4984 * Keynote 2 benchmark updates & refinements by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4997 * CI - enforce minimum pnpm package age by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5032 * Do not `msync` the entire offset index file on every transaction by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5018 * Pipeline the websocket send path by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5051 * Fix view auto-migrate with canonical names by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4985 * Add vue `useProcedure` hook by @kistz in https://github.com/clockworklabs/SpacetimeDB/pull/4999 * Client binaries from DigitalOcean -> AWS by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5077 * Add commitlog knobs to server config by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5074 * Batch websocket responses using the v3 protocol by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5061 * Undo `.npmrc` in templates by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5084 * chore: enable HTTP/2 support for backend server by @onx2 in https://github.com/clockworklabs/SpacetimeDB/pull/5027 * Drop serde_json arbitrary_precision from workspace by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5001 * CI - `DOCKERHUB_PASSWORD` -> `DOCKERHUB_TOKEN` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5096 * Document Steam Session Tickets authentication with SpacetimeAuth by @JulienLavocat in https://github.com/clockworklabs/SpacetimeDB/pull/4908 * Revert recursive mounts from module def by @aasoni in https://github.com/clockworklabs/SpacetimeDB/pull/5098 * Docs: Fix double logos when docs loading by @clockwork-tien in https://github.com/clockworklabs/SpacetimeDB/pull/5101 * Godot SDK and Blackholio tutorial by @lisandroct in https://github.com/clockworklabs/SpacetimeDB/pull/4920 * Update broken links in csharp SDK README by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4952 ## New Contributors * @onx2 made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4935 * @euxaristia made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4774 * @Mr-Dust0 made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4843 * @0monish made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4900 * @ClemensWon made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4984 * @lisandroct made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4920 **Full Changelog**: https://github.com/clockworklabs/SpacetimeDB/compare/v2.2.0...v2.3.0