Skip to content

Release v2.5.0

Latest

Choose a tag to compare

@rekhoff rekhoff released this 11 Jun 23:30
· 7 commits to master since this release
ca16958

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