The end of 1.0 is nigh! 🤩
v1.12 will be the last minor version before we drop SpacetimeDB 2.0! SpacetimeDB 2.0 will come with code breaking changes (you may need to change your modules and clients), but it will not require a migration of the existing data directory, and include backwards compatibility with existing clients and modules, so all existing databases and modules will continue working on both Standalone deploys and Maincloud.
If you're not subscribed to our YouTube channel, you should be. Trust me on that one.
We've got some great updates today in v1.12!
Typed Query Builder
- Added a typed query builder for the TypeScript client. (#4021)
- Added a Rust client query builder. (#4003)
- Added a typed query builder for the C# client, plus additional regression coverage. (#3982, #4123)
You can now subscribe to your server's data with type safe queries from clients:
TypeScript
import { queries } from "./module_bindings";
conn.subscriptionBuilder().subscribe([queries.user.build()]);C#
conn.SubscriptionBuilder().AddQuery(ctx => ctx.From.User().Build()).Subscribe();Rust
conn.subscription_builder().add_query(|ctx| ctx.from.user().build()).subscribe();NOTE: We would like to remove the .build() for 2.0, but you can try it out with the existing API.
Other highlights
-
New front-end framework SDKs
-
Organizations support
- Introduced Organizations support. (#4087)
-
Operational tooling improvements
Developer experience & docs
- Added new authentication tutorials:
- Documentation updates and clarifications, including explaining “maincloud” context. (#4029, #4071, #4168)
Performance & internal improvements
- Multiple datastore and update-path optimizations (construction, view evaluation fast paths, layout usage, and small data-structure refinements). (#4133, #4134, #4138, #4136)
- Reduced JS worker request/reply sizes and improved data-structure choices for better cache efficiency. (#4150, #4151)
Reliability & correctness
- Fixed
Hashindices not working. (#4060) - Durability: notify waiters after lockfile drop. (#4051)
- Fixed occasional panic when a client disconnects. (#4162)
- Improved blob handling flexibility (
copy_filterand related). (#4096) - Marked
MutTxIdas!Sendto avoid incorrect cross-thread usage. (#4039) - Added support and filtering improvements around
Uuid(including React Hookwheresupport and making the newUuidtype filterable). (#4030, #3991)
New contributors
What's Changed
- Expose a couple things to enable some work in another repo by @gefjon in #3986
eval_updates_sequential: no queries? => quit early by @Centril in #4049- Fix LLM benchmark Rust wrong struct name by @Boegie19 in #4043
- durability: Notify waiters after lockfile is dropped by @kim in #4051
- In-memory DatabaseLogger by @kim in #3961
impl MemoryUsage for TxStateby @Centril in #4054- Marks MutTxId as !Send by @Shubham8287 in #4039
- CI - Fix hint for fixing llm benchmarks by @bfops in #4040
- Further misc docs changes by @cloutiertyler in #4029
- Move unity testsuite onto unity runner by @jdetter in #4061
- Add ~/.local/bin to GITHUB_PATH for llm benchmark workflow by @drogus in #4064
- Add Auth0 tutorial by @JulienLavocat in #4048
- Fix
Hashindices not working by @kistz in #4060 - fix: docs llm test. make tables that we sql query public by @Boegie19 in #4058
- Add a typed query builder for the typescript client by @jsdt in #4021
- Add Clerk tutorial by @JulienLavocat in #4062
- Support
Uuidin React Hookwhereclause by @kistz in #4030 - Fixes C# benchmark test failures caused by table naming convention mismatches by @cloutiertyler in #4059
- Empty commit basically by @cloutiertyler in #4088
- Do not block CI on llm benchmarks by @jdetter in #4095
- Rust: client query builder by @Shubham8287 in #4003
- Fix test failure in fresh checkout of repository by @douglance in #4056
- Pass --yes flag from dev command to generate command by @cloutiertyler in #4069
- Add
cargo ci dllscommand for building C# DLLs and NuGet packages by @rekhoff in #4033 copy_filter& co: make blob handling more flexible by @Centril in #4096- Add
PointerMap::{iter, merge_from}by @Centril in #4092 - Make new
Uuidtype Filterable by @kistz in #3991 - Reduce
Test Suitetest concurrency to reduce test flakes by @jdetter in #3979 - Bump to v8 145 by @coolreader18 in #4073
- Add
HashMapBlobStore::merge_fromby @Centril in #4091 - Templates naming standarization by @drogus in #4042
- fix cross reducer call TS reference by @DKormann in #4104
- Removing1.5.0 DLLs by @rekhoff in #4100
- Re-run the LLM benchmarks update by @bfops in #4110
- Make all
VmMetricsfor the reducers and views of a module inInstanceCommon::newby @Centril in #4106 - feat: create Vue framework sdk by @clockwork-tien in #4037
- Allow setting custom v8 flags by @coolreader18 in #4126
- Hide LLM benchmark files in git diffs by @bfops in #4111
- Fix the upgrade version tool by @jdetter in #4085
- CI: Fix of C# tests failures by @jdetter in #4121
- optimize datastore by using
ty.layout.fixedmore by @Centril in #4133 eval_updates_sequential: comment out tracing by @Centril in #4132- optimize
view_for_updateto do nothing when there are no views by @Centril in #4134 - define
SmallHashMapinspacetimedb_data_structuresby @Centril in #4136 - Upgrade version to 1.12.0 by @jdetter in #4084
- [TS] Implement ctx.random() by @coolreader18 in #3907
- Optimize
TxData+DatabaseUpdatefor fast construction by @Centril in #4138 - Small docs improvement by @cloutiertyler in #4071
- Define
TableNameandReducerNamebacked byEcoStringby @Centril in #4137 - C# client typed query builder by @rekhoff in #3982
- [1/3]
RawModuleDefV10definition and validation. by @Shubham8287 in #4098 - [2/3] [Rust] Host changes for
RawModuleDefV10by @Shubham8287 in #4105 - Shrink
JsWorkerReplyto 48, making replies fit in a cache line by @Centril in #4151 - Revert "Upgrade version to 1.12.0 (#4084)" by @bfops in #4147
- Skip LLM check for now by @bfops in #4152
- Add
spacetime login --no-browserby @bfops in #4142 - RLS section in
RawModuleDefV10. by @Shubham8287 in #4149 - Shrink
JsWorkerRequest& use the right HashMap/Set by @Centril in #4150 - core: Add a method to query the replica ids managed by the host controller by @kim in #4160
- add missing category specifier [Unreal] by @KirstenWF in #4156
- feat: create Svelte framework integration by @clockwork-tien in #4063
- Added query-with-index C# regression tests by @rekhoff in #4123
- Organizations by @kim in #4087
- Fix occasional panic when client disconnects by @coolreader18 in #4162
- Make
global.jsonglobal again by @bfops in #4166 - Adding Abort to C# Websocket by @rekhoff in #3352
- add connection log category [Unreal] by @KirstenWF in #4157
- Explain maincloud in context by @aasoni in #4168
- templates/basic-rs properly uses workspace versions by @bfops in #4170
- [C#] Update module bindings to use new View ABI by @rekhoff in #4146
- CI - more hacky v8 fixes by @bfops in #4171
- Use VM-based github runners by @jdetter in #4045
- Bump version to v1.12.0 attempt #2 by @bfops in #4164
New Contributors
- @Boegie19 made their first contribution in #4043
- @douglance made their first contribution in #4056
- @DKormann made their first contribution in #4104
Full Changelog: v1.11.3...v1.12.0