v1.2.0

clockworklabs/SpacetimeDBv1.2.0Jun 17, 2025by bfops

AI Summary

Focuses on performance improvements and bug fixes, including correct Equals and GetHashCode implementation for C# types with lists/arrays and fixes for RLS and CLI commands.

Key Highlights

  • Performance improvements in server and generated client code
  • Fixed Equals and GetHashCode for types containing lists/arrays in C#
  • Fixed RLS stopping after opening the web dashboard
  • Fixed spacetime rename command

New Features

  • Performance optimizations
  • C# equality fixes
  • RLS fixes

Full Release Notes

We have another release for you! :tada: 

This one is quiet as far as new features go (stay tuned for those soon), but we're including a **ton** of performance improvements in both server code and generated client code. We've also fixed several important bugs, and made some quality of life improvements for generated code.

A few particular things that people have been asking about:
- We now use `import type` properly in generated TypeScript code
- Fixed `Equals` and `GetHashCode` for types containing lists and arrays in C# code
- Fixed SDK bug with overlapping subscriptions
- Fix a bug where `spacetime rename` would leave the old name in place
- Fix a bug where RLS would stop working after opening the web dashboard
- Added an unstable HTTP route for getting the current timestamp

## What's Changed
* Replication Smoketest Cleanups by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2675
* Allocate pages using a mult-tenant lock-free pool by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2587
* Add .DS_Store to gitignore by @rafaelGuerreiro in https://github.com/clockworklabs/SpacetimeDB/pull/2659
* Add the primary key type to typescript's `TableRuntimeTypeInfo` by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2671
* Split client codegen out into its own crate by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2593
* CI - Publishable crates check also checks for license file by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2681
* Avoid reflection when validating enums by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2676
* Do not double compress transaction update messages by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2668
* Add information about the CLI version to generated code. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2673
* Simple implementation of insert_or_update and try_insert_or_update by @rafaelGuerreiro in https://github.com/clockworklabs/SpacetimeDB/pull/2678
* Reduce allocations in C# when deserializing lists and arrays by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2688
* Fix subscription manager metadata for joins by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2705
* Use spacetimedb-standalone to get schema for spacetime generate by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2644
* Prevent `ahash` from pulling in `getrandom 0.3` by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2714
* Fix SDK bug with overlapping subscriptions by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2711
* snapshot: Provide streaming snapshot verification. by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2691
* sdk: fix `with_light_mode` docs by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2700
* snapshot: Improve memory utilization of snapshot fetcher by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2715
* Hash subscription queries before acquiring tx lock by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2712
* Log instead of panicking when missing a row from st_client by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2722
* Commitlog stream range fix. by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/2721
* Deal wih `AlgebraicType::Ref` in `Serialize for ValueWithType<ArrayValue>` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2708
* `PagePool::{default -> new_for_test}` + temporary hack for `IN_MEMORY_CONFIG` / `test_index_scans` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2707
* Use the --ignore-matching-lines flag of git diff. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2720
* Fix Equals and GetHashCode for types containing Lists and Arrays in C# by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2710
* Fix index scan rewrite rule by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2728
* Do not evaluate subscriptions that return empty result sets by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2731
* Use spawn_blocking for the fallback commit in identity_dis/connected  by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2730
* Move init_database out of wasm_common by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2732
* Reduce reflection use in generated C# code by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2725
* Fix row count stats for multi subscription responses. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2736
* Handle snapshot restore more robustly by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2735
* Call reducers on the blocking pool. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2737
* Follow-up: use asyncify in ModuleHost::call by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2740
* Add counters for client connections spawned and aborted. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2741
* Update quickstart-chat README.md by @Trobyss in https://github.com/clockworklabs/SpacetimeDB/pull/2727
* core: Asyncify commitlog compressor by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2743
* Reintroduce replication factor parameter by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2718
* commitlog: Include latest commit offset in segment metadata by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2733
* ci: Update dependencies for the `wasm_bindings` job by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2717
* core: Fix error handling when restoring snapshot by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2755
* `build_sequence_state`: clobber pre-existing in-memory `Sequence`s by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2760
* cli: Add value_parser for `num-replicas` by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2759
* Cache `with_label_values` more & don't do metrics while holding lock by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2734
* datastore: apply schema changes immediately to committed state. by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2685
* Fix TypeScript imports codegen by @toqueteos in https://github.com/clockworklabs/SpacetimeDB/pull/2747
* Make connection metrics keyed on database identity, not replica ID by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2765
* Fixed compile errors and warnings on Windows by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2646
* Bump version to 1.1.2 by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2767
* Commitlog: handle empty offset index lookup by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/2771
* Re-enable page bool with default size of 128 pages by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2769
* `commit_and_broadcast_event`: `read_tx.merge(update_metrics)` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2772
* Bump C# versions by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2774
* Don't yap about putting chunks into my pool by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2777
* Cheaper `Table::clone_structure` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2776
* add instrumentation to remove_multi_subscription by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2781
* Single-threaded subscription evaluation by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2682
* Run reducers on tokio blocking thread instead of rayon by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2785
* Datastore Extraction: TxMetrics refactor, small non-functional change to make datastore extraction easier by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2794
* Datastore Extraction: Remove reference to WORKER_METRICS inside db_metrics by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2797
* Datastore Extraction: StVarName refactor, small non-functional change in furtherance of datastore extraction by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2795
* Datastore Extraction: Create DatastoreError type by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2798
* `Page::reset_for`: stop zeroing pages by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2804
* Consider deleted committed rows in `MutTxId::create_index` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2805
* Per-database incoming and outgoing queue length metrics by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2773
* Aggregate and broadcast `DbUpdate`s off the main thread by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2793
* Build indexes over TxData for subscription eval by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2768
* core: Make `asyncify` preserve the current span by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2790
* commitlog: Fix index truncation test. by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2792
* commitlog: Reduce log noise when offset index cannot be used by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2791
* smoketests: Bring containers back up in tear down of replication tests by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2818
* Log every second a reducer takes to run by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2738
* Fix typos by @szepeviktor in https://github.com/clockworklabs/SpacetimeDB/pull/2812
* CI - Remove outdated `Contributor Membership Check` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2827
* Bump versions to 1.1.3 by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2828
* `spacetimedb_execution`: avoid `get_row_ref` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2806
* Fix typo in the log config toml file by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/2799
* Bump versions to 1.2.0 by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2837
* Pin db threads to cores by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2801
* Remove the lock around the `ClientsMap` in the `SubscriptionManager` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2821
* Add an HTTP route to get the current `Timestamp` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2850
* Reserve cores 0 and 1 for the OS by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2851
* client-api: Don't debug-print dropped outgoing Ws messages at info by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2819
* Tidy up ModuleKind conversions a tiny bit by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2840
* Send one-off responses through the broadcast queue. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2853
* Fixed rename by using put instead of post by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2764
* Always use identity when hashing queries from owners by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2859
* Wrap `try_init_host` futures in `tokio::spawn` so they don't get cancelled by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2857
* Add more subscription metrics by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2861
* Database-specific `Timestamp` route by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2864
* Use a scope guard for decrementing queue length. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2865
* Test subscription updates for dml by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2716
* Prune more queries when evaluating subscription updates by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2855

## New Contributors
* @rafaelGuerreiro made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/2659
* @Trobyss made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/2727
* @toqueteos made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/2747
* @szepeviktor made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/2812

**Full Changelog**: https://github.com/clockworklabs/SpacetimeDB/compare/v1.1.2...v1.2.0