v1.0.0
clockworklabs/SpacetimeDBv1.0.0Mar 3, 2025by jdetter
AI Summary
This release marks the official stable launch of SpacetimeDB 1.0, introducing Maincloud and stabilizing APIs across all supported languages.
Key Highlights
- Official 1.0 release with stable APIs for TS, C#, and Rust.
- Launch of Maincloud, a managed cloud service.
- New mutable subscription APIs for incremental updates.
- OpenID Connect integration for identity management.
Breaking Changes
- Previous CLI versions cannot upgrade; requires uninstallation and reinstallation.
New Features
- Maincloud managed service
- Stable client SDKs
- Mutable subscription APIs
- OpenID Connect integration
Full Release Notes
<img width="1600" alt="Version 1.0 Illustration" src="https://github.com/user-attachments/assets/bffa92e7-4aa3-4a70-923e-f3e91bc64e69" /> # 🎉 SpacetimeDB 1.0 🎉 Today we're incredibly excited to officially release SpacetimeDB 1.0! [**Watch the keynote!**](https://www.youtube.com/watch?v=kzDnA_EVhTU) This is a milestone that the whole team has been working towards for years. A huge amount of engineering and effort has gone into stabilizing our APIs across all of our languages and libraries, as well as making SpacetimeDB a stable product that you can rely on in production. So today, we are leaving beta and are offering our **first production-ready release**! With this release you can host your own applications with SpacetimeDB Standalone and rest assured that the data formats and APIs will not be changing until the next major version release. For future major version releases we will also provide a migration path. Read more about the announcement at https://spacetimedb.com/blog/introducing-spacetimedb-1-0. ## Maincloud Alongside SpacetimeDB 1.0 we are also launching, Maincloud, our managed cloud service. Maincloud is just like Standalone except that you don't have to worry about any of the deployment! Just run the below command and we take care of the rest. ```sh spacetime publish -s maincloud your-app ``` We use an "energy"-based cloud credit system to show you exactly how to optimize your applications. Check out the [Maincloud announcement on our website](https://spacetimedb.com/maincloud) to find our how to **buy energy 90% off** during our launch sale. ## Install Install this release now via the instructions here ➡️ https://spacetimedb.com/install Also if you're new here please take a moment to star our repository! https://github.com/clockworklabs/SpacetimeDB ## Highlights - A new cloud hosted service called Maincloud - Streamlined stable client SDKs in TypeScript, C#, and Rust - Streamlined stable module APIs in C# and Rust - Big performance improvements for certain workloads - Brand new mutable subscription APIs allowing you to change your subscriptions incrementally - Beautiful new version manager CLI commands - Brand new website interface and account management - OpenID Connect integration and APIs ### Notes - Testnet is now deprecated and is replaced by Maincloud ## Upgrading from previous versions All previous versions of the `spacetime` CLI will not be able to upgrade to the new version using the previous upgrade procedure. You will need to uninstall the previous version of `spacetime` and re-run the installation instructions found here: https://spacetimedb.com/install Once you've installed the new version of `spacetime` you should verify that you're on the `Version 1.0.0` version via: ```sh spacetime --version ``` ## Join the Community Have questions on the best way to get started or just want to see what others are building on SpacetimeDB? Join us on Discord! <a href="https://discord.gg/spacetimedb"><img height="22" src="./images/social/discord.svg" alt="Discord"></a>https://discord.gg/spacetimedb ## What's Changed * query engine integration by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2074 * add signature of `datastore_update_bsatn` host call by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2102 * Add `SubscriptionBuilder::subscribe_to_all_tables` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2109 * Fix wording in `ReplayVisitor::visit_insert` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2123 * commitlog: Make offset index usable externally by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2108 * Add new crates to `publish-crates.sh` script by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2125 * Rework RLS macro for amended syntax by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2105 * Rust SDK: `with_credentials` -> `with_token` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2118 * Split binaries by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2011 * Run smoketests on windows in ci by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2129 * CLI - Replace clippy with a manual check by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1928 * Make the key of `Table.indexes` be `IndexId` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2124 * Lookup lifecycle reducers by lifecycle flag, not by name by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2132 * core: Make SNAPSHOT_FREQUENCY pub by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2135 * Use actual types for api responses, not ad-hoc `json!()` objects by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/1931 * Fix unique index + `MutTxId::insert` not un-deleteting by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2156 * Set `tracing` static level for binaries only by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2144 * snapshot: Invalidate newer snapshots on creation by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2143 * Query execution updates for cpu metrics by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2130 * Fix & test row deletion API by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/2146 * Fix autocomplete issues in bindings crate by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2157 * Fix sending of subscription errors. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2166 * Don't create indexes during bootstrapping; wait until after replay by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2161 * Fix ScheduleAt in C# by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2163 * Fixed issues with the Rust module quickstart-chat README.md by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2154 * Remove the client from subscription manager on a disconnect by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2170 * Add the `update` ABI by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2137 * Adds improvements & new crates to `publish-crates.sh` by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2173 * Bump version to `1.0.0-rc4` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2177 * Cache whether a `Table` is a scheduler table, avoiding fetching the schema by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2141 * Bump to Rust 1.84 by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2001 * Switch `DeleteTable` impl to one based on `FixedBitSet` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2183 * Meter wasm memory usage by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2187 * Track query and datastore cpu usage metrics by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2140 * Log errmsg if reducer fails by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2186 * Fix CI on master by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2193 * Make `check_and_insert` & `find_old_row` and friends do less checks by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2192 * CLI - Just-in-time login flow by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2158 * Track compute metrics for sql dml with new engine by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2190 * Implement incremental subscriptions on the client by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2111 * InstanceEnv: make the inspect_err closures cold by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2197 * Data size SKU for billing by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2098 * `prop_assume!(a != b)` in some tests to fix spurious failures by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2199 * Match datastore semantics more closely: `btree_scan` => `index_scan_range` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2203 * Update sql literals to match spec by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2196 * Fix ctrl-c handling by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2200 * Return errors for invariant violations during query planning by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2209 * Rust SDK: remove `anyhow`, use `thiserror` w/ structured error types by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2169 * Rust client SDK: rework `EventContext` into multiple types by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2189 * Make `MutTxId::update` really idempotent wrt. `TxData` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2212 * Rewrite C# codegen to the new Lang infra + fixes by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/2184 * add `direct` indices, except for in datastore & C# by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2205 * Fix multi-column index scan by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/2208 * Register data size metrics for standalone. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2216 * Handle optimization and execution errors on initial subscription by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2213 * Finish spacetimedb-update functionality by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2126 * CLI - Better module language inference by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2218 * CLI - Clarify helptext for `spacetime login` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2219 * Add `direct` indices to datastore by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2221 * Add metrics for fuel usage and reducer runtime totals. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2217 * Make `Timestamp` a special SATS type by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/1836 * Rework event contexts in C# SDK by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2226 * Error handling for incremental evaluation by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2223 * Implemented the new EventContext types in Typescript codegen by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2224 * Add /health endpoint by @drogus in https://github.com/clockworklabs/SpacetimeDB/pull/1989 * CLI - Warn when using an unstable command by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2227 * Standardized module names and added module-test-cs based on module-test by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2232 * Rename `Address` to `ConnectionId` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2220 * Use Into<String> instead of ToString by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/2127 * Fix confusing csharp workload-install error message by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2238 * Add metrics for index inserts and deletes by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2236 * Implement IComparable for Timestamp by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2239 * Remove janky schema from http API by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2181 * DBConnection -> DbConnection for the TypeScript API by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2230 * CLI - Default config lists maincloud, not testnet by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2237 * Refactor HTTP api to better adhere to REST guidelines (real) by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2243 * Remove some Identity conversions that could panic by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/1966 * Implemented error arguments in error callbacks by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2229 * Only support bearer auth by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2248 * Fixup comment for SpacetimeCreds by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2250 * C# SDK - Emit Event.UnknownTransaction rather than throwing on unknown reducer (#2241) by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2249 * Add fast ser/de paths for structs of prims with repr(C) by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2251 * Add `keynote-benchmarks` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2252 * Save 10 ms by using `Vec` instead of `VecDeque` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2254 * CI - Update `actions/cache@v2` -> `@v4` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2247 * CI - Fix the `SDK Tests` CI job after branch rename by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2258 * keynote-benchmarks: measure the hot latency in 'roundtrip' by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2264 * Send delete updates for unsubscribes by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2271 * Impose `FilterableValue` in `UniqueColumn::find` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2267 * CLI - Remove newlines from command helptext by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2277 * CLI - Add feature to print markdown docs by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2276 * Add README.md to all modules in SpacetimeDB/modules describing their usage by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/2282 * Add support for LIMIT by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2279 * Add support for COUNT by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2285 * Update Rust module documentation by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2050 * Update install script by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2265 * Fix docker container for standalone by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/2289 * Add multi-query version of subscribe messages, and dedup queries on the backend. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2278 * Fix some typos in the ts code gen. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2287 * Rust client SDK: send `SubscribeMulti` and `UnsubscribeMulti` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2281 * Use fixed term width for cli help test by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2293 * Rust SDK: Deduplicate rows accross queries by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2286 * fix: join order rewrite rule by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2295 * `bindings-csharp`: use the update ABI by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2269 * sdk: Basic connection metrics by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2299 * `MutTxId::update`: consider deleted commited row when replacing tx row by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2302 * Clear DB size gauges when shutting a module down by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2259 * Final C# codegen changes by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2303 * Add comment on Time Stamp Counter (TSC) for profiling with tracy by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2304 * Added in a SQL execution time calculation by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2297 **Full Changelog**: https://github.com/clockworklabs/SpacetimeDB/compare/v1.0.0-rc3-hotfix7...v1.0.0