2.5.0 graduates procedures to stable availability, improves billing metric accuracy, and includes CLI usability fixes.
Features
**Procedures are now stable** (Ungated from `unstable`)
Procedures-scheduled, transaction-capable server-side functions-and the outgoing HTTP client (ctx.http) are now available without opting into unstable features (#5164).
- Rust: The
#[spacetimedb::procedure]macro,ProcedureContext,with_tx/try_with_tx, and scheduled procedures now work withoutfeatures = ["unstable"]. - C#:
[Experimental("STDB_UNSTABLE")]removed fromProcedureContext.WithTx/TryWithTx. - C++: Procedure ABI, transaction execution, and outgoing HTTP client are now available without
SPACETIMEDB_UNSTABLE_FEATURES.
HTTP handlers/webhooks, views, and RLS (client_visibility_filter) remain gated behind unstable.
**Primary key support for procedural views (C#)**
Following Rust and TypeScript support in v2.4.1, C# modules can now declare primary keys on procedural views, enabling clients to receive OnUpdate events when subscribed to them (#5246).
**Layout-altering automigrations for event tables**
Event tables now support a broader set of schema- and layout-altering automigrations, including column removal, reordering, and type changes that would be rejected for regular tables (#5269). This enables more flexible schema evolution for event-only tables without requiring manual migration.
Performance & Correctness
- Deterministic row insertion with BTreeSet storage (#5071): Non-full pages are now stored in a
BTreeSetsorted by available var-len granules rather than an unsortedVec. This fixes accidentally-quadratic behavior during bulk inserts and ensures deterministic row insertion locations across datastore restarts
Bug Fixes
wasm_memory_bytesmetric accuracy (#5131): The metric now correctly reports memory for all Wasmtime instances (cooperatively updated via increment/decrement) and no longer includes V8 instances. Billing impact: billing code should now charge for the sum ofwasm_memory_bytes+v8_used_heap_size_bytes. Expect recorded usage per database to increase as we now account for all instances, not just one.- Template version constraints (#5228): All templates now consistently use
major.minorversion constraints. Previously, inconsistent version constraints could cause the CLI to initialize templates expecting versions that did not exist. - CLI
publish --delete-dataconfig fallback (#5256): Removes the forced positional database name requirement, allowingspacetime.jsonto provide the database name. - CLI
callwith hex Identity arguments (#5254): Thecallcommand now accepts hex strings forIdentityparameters without requiring full JSON tuple syntax.
What's Changed
- CI - fix LLM benchmark workflows by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/5181
- Ungate procedures from the
unstablefeature by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/5164 - docs: consolidate outstanding docs fixes by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5166
- Fix durability test flake by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5233
- Fix confirmed reads test flake by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5237
- Add CLA Assistant retry workflow by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5234
- Fix publish --delete-data config fallback by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5256
- Improve accuracy and change semantics of metric
wasm_memory_bytesby @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/5131 - cli: Accept hex-ish strings as Identity parameters for call by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/5254
- Store non-full pages in a
BTreeSet, not aVecby @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/5071 - Add some tests of procedure concurrency by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4955
- Add primary keys to procedural views in C# by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5246
- LLM Benchmark: Sequential Upgrades Test by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4817
- Remove
cargo bump-versionsby @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5157 - Consolidate template versions by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5228
- Allow layout-altering automigrations of event tables by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/5269
New Contributors
- @MAST1999 made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/5052
Full Changelog: https://github.com/clockworklabs/SpacetimeDB/compare/v2.4.1...v2.5.0
