github clockworklabs/SpacetimeDB v2.5.0
Release v2.5.0

6 hours ago

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 without features = ["unstable"].
  • C#: [Experimental("STDB_UNSTABLE")] removed from ProcedureContext.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 BTreeSet sorted by available var-len granules rather than an unsorted Vec. This fixes accidentally-quadratic behavior during bulk inserts and ensures deterministic row insertion locations across datastore restarts

Bug Fixes

  • wasm_memory_bytes metric 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 of wasm_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.minor version constraints. Previously, inconsistent version constraints could cause the CLI to initialize templates expecting versions that did not exist.
  • CLI publish --delete-data config fallback (#5256): Removes the forced positional database name requirement, allowing spacetime.json to provide the database name.
  • CLI call with hex Identity arguments (#5254): The call command now accepts hex strings for Identity parameters without requiring full JSON tuple syntax.

What's Changed

New Contributors

Full Changelog: v2.4.1...v2.5.0

Don't miss a new SpacetimeDB release

NewReleases is sending notifications on new releases.