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