π SpacetimeDB 1.0 π
Today we're incredibly excited to officially release SpacetimeDB 1.0!
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.
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 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:
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! 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_bsatnhost call by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2102 - Add
SubscriptionBuilder::subscribe_to_all_tablesby @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2109 - Fix wording in
ReplayVisitor::visit_insertby @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.shscript 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_tokenby @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.indexesbeIndexIdby @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::insertnot un-deleteting by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2156 - Set
tracingstatic 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
updateABI by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2137 - Adds improvements & new crates to
publish-crates.shby @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2173 - Bump version to
1.0.0-rc4by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2177 - Cache whether a
Tableis 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
DeleteTableimpl to one based onFixedBitSetby @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_rowand 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_rangeby @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, usethiserrorw/ structured error types by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2169 - Rust client SDK: rework
EventContextinto multiple types by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2189 - Make
MutTxId::updatereally idempotent wrt.TxDataby @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
directindices, 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 loginby @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2219 - Add
directindices 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
Timestampa 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
AddresstoConnectionIdby @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2220 - Use Into
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-benchmarksby @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2252 - Save 10 ms by using
Vecinstead ofVecDequeby @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2254 - CI - Update
actions/cache@v2->@v4by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2247 - CI - Fix the
SDK TestsCI 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
FilterableValueinUniqueColumn::findby @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
SubscribeMultiandUnsubscribeMultiby @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
