Release v1.12.0 - Client-side Typed Query Builder
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
- Added a Vue framework SDK. (#4037)
- Added a Svelte framework integration. (#4063)
-
Organizations support
- Introduced Organizations support. (#4087)
-
Operational tooling improvements
- Added
spacetime login --no-browserfor headless/CI environments. (#4142) - Core: added a method to query the replica IDs managed by the host controller. (#4160)
- Added
Developer experience & docs
- Added new authentication tutorials:
- Auth0 tutorial. (#4048)
- Clerk tutorial. (#4062)
- 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
- @Boegie19 (#4043)
- @douglance (#4056)
- @DKormann (#4104)
What's Changed
- Expose a couple things to enable some work in another repo by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/3986
eval_updates_sequential: no queries? => quit early by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/4049- Fix LLM benchmark Rust wrong struct name by @Boegie19 in https://github.com/clockworklabs/SpacetimeDB/pull/4043
- durability: Notify waiters after lockfile is dropped by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4051
- In-memory DatabaseLogger by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/3961
impl MemoryUsage for TxStateby @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/4054- Marks MutTxId as !Send by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4039
- CI - Fix hint for fixing llm benchmarks by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4040
- Further misc docs changes by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4029
- Move unity testsuite onto unity runner by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4061
- Add ~/.local/bin to GITHUB_PATH for llm benchmark workflow by @drogus in https://github.com/clockworklabs/SpacetimeDB/pull/4064
- Add Auth0 tutorial by @JulienLavocat in https://github.com/clockworklabs/SpacetimeDB/pull/4048
- Fix
Hashindices not working by @kistz in https://github.com/clockworklabs/SpacetimeDB/pull/4060 - fix: docs llm test. make tables that we sql query public by @Boegie19 in https://github.com/clockworklabs/SpacetimeDB/pull/4058
- Add a typed query builder for the typescript client by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/4021
- Add Clerk tutorial by @JulienLavocat in https://github.com/clockworklabs/SpacetimeDB/pull/4062
- Support
Uuidin React Hookwhereclause by @kistz in https://github.com/clockworklabs/SpacetimeDB/pull/4030 - Fixes C# benchmark test failures caused by table naming convention mismatches by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4059
- Empty commit basically by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4088
- Do not block CI on llm benchmarks by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4095
- Rust: client query builder by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4003
- Fix test failure in fresh checkout of repository by @douglance in https://github.com/clockworklabs/SpacetimeDB/pull/4056
- Pass --yes flag from dev command to generate command by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4069
New Contributors
- @Boegie19 made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4043
- @douglance made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4056
- @DKormann made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4104
Full Changelog: https://github.com/clockworklabs/SpacetimeDB/compare/v1.11.3...v1.12.0