Releases: clockworklabs/SpacetimeDB
v0.7.3-beta
v0.7.3 Patch Release
Hello everyone! Today we're happy to announce another patch release. This release focuses on some quality of life fixes and performance improvements. This is another stepping stone on our way to our much larger patch coming later this month.
If you have version v0.7.2, this upgrade is as simple as:
spacetime upgrade
Or if you've installed through brew on macOS we recommend upgrading via:
brew install clockworklabs/tap/spacetime
Thanks for checking it out!
What's Changed
- Expose delete_by_rel in #515
- Add OptIn serialization attribute for C# generated types in #516
- Fix benchmarks run on master in #487
- fix(518): Label connected clients metric by database in #523
- refactor(520): Change histogram units from nanos to fractional secs in #520
- Refactor commit encoding / decoding in #495
- lib: Provide Arbitrary impls for Hash and DataKey
- perf(505): Track the number of rows in each table in #525
- refactor(531): Label transaction count metric with boolean flag in #532
- perf(507): Add disk and memory usage metrics in #529
- Added multi column index usage to the rust-wasm-test module in #500
- Cherry Pick for Publish Primitives Fixes in #514
- Track instance_queue_length by reducer in #530
- Version upgrade to v0.7.3
- Builds CLIs on release/* branches
- Downgrade a log line from info to debug in #540
- InstanceEnv::delete_by_col_eq: return u32 instead of NonZeroU32 in #539
Full Changelog: v0.7.2-beta...v0.7.3-beta-hotfix1
v0.7.2-beta
v0.7.2 - SpacetimeDB Spooky Release! 🎃👻👻🪦👻🪦👻👻🎃
We wanted to do a spooky Halloween release for you all with some tasty 🍬 treats 🍫 including the new spacetime upgrade
command!
Check out out the other cool updates as well below! Hope you all have a happy Halloween and eat lots of candy!
What's Changed
- Remove commented out code by @kulakowski in #444
- Switch rows to IndexMap by @RReverser in #448
- lib: Don't panic in RelValueRef::get by @kim in #450
- Follow-up incremental joins by @kim in #437
- Use newtypes
ColId
,TableId
,IndexId
,SequenceId
everywhere (*) by @Centril in #408 DataRef
: borrow for great perf by @Centril in #434- Switch allocator to mimalloc for the DB CLI by @RReverser in #447
- Replace hex Strings with Identity/Address where applicable by @coolreader18 in #300
- Fix "identity not yet recieved" intermittent failure in tests by @gefjon in #445
- Update/upgrade dependencies by @coolreader18 in #266
- [Resubmit] vm: Make UPDATE actually update by @kim in #454
- core: Fix commit log concurrency by @kim in #465
- perf(461): Record metrics for rows [inserted|deleted] on commit by @joshua-spacetime in #462
- perf(463): Add metric for the number of committed rows scanned by @joshua-spacetime in #467
- chore: Add _cumulative suffix to counter metrics by @joshua-spacetime in #474
- Use gh actions for benchmarks please by @coolreader18 in #464
- Fix C# generics support by @RReverser in #475
- Fix benchmarks please contributor check by @coolreader18 in #479
- Ok NOW fix benchmarks please by @coolreader18 in #480
- Fix benchmarks please 100% by @coolreader18 in #481
- Improved Clairity of CI Names by @jdetter in #455
- Simplify/deabstract module_host_actor and wasmer_module by @coolreader18 in #417
- refactor(485): Label metrics with database address and reducer name by @joshua-spacetime in #486
- perf(473): Add db address label to reducer queue length by @joshua-spacetime in #489
- perf(468): Add metric counters for committed transactions and rollbacks by @joshua-spacetime in #478
- Fix wasm-opt for C# modules by @RReverser in #482
- perf(470): Add metrics for transaction cpu and elapsed time by @joshua-spacetime in #483
- Move optimizations from sql to vm by @mamcx in #484
- spacetimedb-data-structures: new crate + nstr! by @Centril in #491
- perf(469): Add metric for delayed transaction execution by @joshua-spacetime in #488
- Version Upgrade to v0.7.2-beta by @jdetter in #498
- Create multi-column indexes defined in modules by @kim in #494
- perf(471): Add duration metrics for wasm abi calls by @joshua-spacetime in #499
- perf(472): Add metric for index seeks and keys scanned by @joshua-spacetime in #501
Full Changelog: v0.7.1-beta-hotfix1...v0.7.2-beta
v0.7.1-beta
We've got another update for you all! This is a quick follow up to our past release we substantially improves performance by moving closer towards our planned memory architecture overhaul.
The main highlights are below!
Highlights
- 5x performance improvements in certain cases while iterating from inside your module
- Improved performance tracking
- General bug fixes and performance improvements
What's Changed
- Add some comments to
FutureQueue
and thesubscribe
route by @gefjon in #378 - SATS: misc refactoring by @Centril in #382
build_csharp
: ensure project path exists by @Centril in #380- Reduce cloning of
Header
& co by @Centril in #384 - Extract
ArrayValue
,ArrayType
,MapValue
,MapType
to own files by @Centril in #387 - Simplify the
encoding_roundtrip
tests by @Centril in #385 - Move the two
Box
es inMapType
to one inBuiltinType
by @Centril in #388 - Flatten
BuiltinValue
intoAlgebraicValue
by @Centril in #389 - Get benchmarks type checking again by @Centril in #392
- Refactor
locking_tx_datastore
tests by @Centril in #393 - More
AlgebraicType
conversions + usederive_more::From
more by @Centril in #395 - Dedup some
locking_tx_datastore
tests by @Centril in #394 - Bump log up to trace in the hopes of catching the "identity not yet received" thing by @gefjon in #314
- feat(397): Add min and max value helpers for builtin types by @joshua-spacetime in #398
- Benchmark modules in release mode by @RReverser in #396
- Add a section to the PR template requiring an estimate of complexity and risk by @gefjon in #407
- Less
BuiltinType
by @Centril in #405 - Run Clippy first and share profile by @RReverser in #413
- Compile benchmarks in separate folder by @RReverser in #411
- Switch to using imported module idents for marking version requirements by @coolreader18 in #335
- Bump C# version for release by @RReverser in #416
- Put out benchmark fires by @kazimuth in #404
- Switch cursive to cross-platform backend by @RReverser in #412
- Simplify and document WasmInstanceEnv's interface by @kulakowski in #422
- test(414): multi-column index scan by @joshua-spacetime in #415
- 🐮 Optimize
decode_column
and friends usingCow
🐮 by @Centril in #424 - fix(428): Return only one message per table in subscription by @joshua-spacetime in #429
- Reuse Wasm-side buffer while reading iterators by @RReverser in #435
- Collect iterator into chunks early by @RReverser in #433
- Fix authorization check for CrudCode by @kim in #431
- Incremental Evaluation of JOIN queries by @kim in #425
- Improve benchmark result reporting by @kazimuth in #357
- [ABI] Remove the special first element of iterator by @RReverser in #420
- Run docker build on tags too by @drogus in #421
- Optimise binaries with wasm-opt by @RReverser in #423
- Debugging info for odb / mlog inconsistencies by @kim in #438
- Track time spent in each wasm instance env call by @kulakowski in #427
- Prometheus stuff by @coolreader18 in #301
- Version upgrade: v0.7.1-beta by @jdetter in #441
Full Changelog: v0.7.0-beta...v0.7.1-beta-hotfix1
v0.7.0-beta
We've been hard at work stabilizing and improving SpacetimeDB since our announcement of the product two months ago! And we sure have a mondo update for you all! In just two months we've done hundreds of bug fixes and performance improvements. We've even gotten some contributions from the community!
We've got some highlighted features below, but the complete PR listing in the "What's Changed" section was too long so I've cut it down some!
Highlights
- Multi-column indexes!
- Much better CLI version tracking so we can identify the exact binary someone is using if they run into an issue
- Implemented a more intelligent and performant system for disk
fsync
s for 2x faster transactions - Greatly improved error and database event reporting in module logs
INFO: spacetimedb: Creating table `ResourcesLog`
INFO: spacetimedb: Creating table `Tool`
INFO: spacetimedb: Creating table `Food`
INFO: spacetimedb: Invoking `init` reducer
INFO: src/lib.rs:69: Initialized bitcraft spacetimedb.
INFO: spacetimedb: Database initialized
- Implemented
on_connect
andon_disconnect
callbacks in the Rust SDK - Multiple
spacetime server
configs for connecting to different servers 👍
DEFAULT HOSTNAME PROTOCOL NICKNAME
testnet.spacetimedb.com https testnet
*** localhost:3000 http local
- Completely reworked the multithreading model to reduce memory usage with a large amount of modules on a single node
- Subscribe to all tables functionality!
SELECT * FROM *
- Initializing and updating a database is now done in a single transaction, eliminating a whole class of issues
- Added non-subscription based type safe querying support!
- Implemented index scans for the SQL execution engine for greatly improved query performance
- Bootstrapped the Control DB into a SpacetimeDB database in SpacetimeDB Cloud!
- Positional arguments on the CLI! No more messing around with JSON for simple reducer calls!
$ spacetime call my_database my_reducer "Foo" "Bar" 27
- Added the concept of SpacetimeDB
Address
es which are now passed in with every reducer call. These allow you to disambiguate between clients with the sameIdentity
but running on different devices.
What's Changed
- Separate the global location of files per OS & create a configuration trait to read them by @mamcx in #171
- Add SPACETIMEDB_TRACY var to dev environment by @joshua-spacetime in #200
- Fix ABI check for module with split data by @RReverser in #197
- Better Version Logging by @jdetter in #206
- Add
identity/:id/verify
route to verify identity/token pairs by @gefjon in #155 - Fix
SpacetimeType
forAddress
by @kim in #209 - Remove the bitrotted trace replay functionality by @kulakowski in #219
- Provide serialization for
Result
by @kim in #210 - Fix Windows Build by @jdetter in #227
- Cloud related fixes by @drogus in #218
- Ensure legacy
DomainName
can be deserialized from JSON by @kim in #208 - [rust-sdk]: gracefully close websocket by @coolreader18 in #228
- Remove unused RelationalDB::table_exist by @kulakowski in #236
- Fix logspam by @coolreader18 in #229
- Make ColumnIndexAttribute bitflags in the ABI by @RReverser in #212
- Update wasmer by @kulakowski in #220
- chore: add more tracing to vm by @joshua-spacetime in #246
- Fix reopening of db in test, keep the binary data on files stable by @mamcx in #190
- Create st_constraints system table by @mamcx in #225
- Add
/identity/public-key
route to get ECDSA public key by @gefjon in #165 - Fix recovery of sequences after restart by @mamcx in #158
- test: Only update active toolchain by @kim in #223
- perf: compute DataKey only when necessary by @joshua-spacetime in #268
- Add debug logs with load progress by @aasoni in #143
- Fixed json serializer getting progressively slower by @SteveBoytsun in #226
- SDK test suites by @gefjon in #258
- perf: read DataKey instead of recomputing it in subscriptions by @joshua-spacetime in #276
- Update indexes when updating a database by @kim in #257
- perf: remove table headers from rows in query engine by @joshua-spacetime in #271
- Refactor with
#[derive(derive_more::From)]
by @Centril in #281 - Add C# integration test by @RReverser in #291
- Refactor Option<Vec<_>> in Config by @RReverser in #292
- Avoid relying on global CLI in tests by @RReverser in #294
- feat(296): index range iterator by @joshua-spacetime in #303
- feat(311): Make right hand side of join generic by @joshua-spacetime in #312
- [SDK] Separate client cache from connection to avoid a deadlock in cloud-next by @gefjon in #248
- feat(297): generate index scans for range predicates by @joshua-spacetime in #306
- perf(308): Push index scans below join by @joshua-spacetime in #313
- fix(320): Incremental evaluation of index scan plans by @joshua-spacetime in #321
- feat(318): Push selections below joins in the general case by @joshua-spacetime in #319
- feat(298): Index nested loop semijoin by @joshua-spacetime in #316
- Add SDK test that verifies connect/disconnect callbacks happen by @gefjon in #326
- Add smoke test for private tables by @kim in #331
- Fix Describe Reducer + Table by @jdetter in #323
- Store the current module hash in a system table by @kim in #290
- feat(332): Support incremental evaluation for index joins by @joshua-spacetime in #336
- Return the formatted error from
log_and_500
, so the CLI can report it by @gefjon in #338 - [SDK] generate
struct Module
to hold dispatch functions by @gefjon in #239 - connect/disconnect reducers called when executing reducer from from CLI by @jdetter in #334
- Fix bootstrapping of ST_MODULE by @kim in #342
- Wrangle benchmarks by @kazimuth in #289
- Benchmarks: report tx/s as elements/s by @gefjon in #345
- Fix the printing of ascii codes on tracy and improve some tracing by @mamcx in #341
- Added Git Commit Hash to Version Command by @jdetter in #340
- Fix derive(Deserialize) on void enum by @coolreader18 in #330
- Add simple READMEs for SDK test clients by @gefjon in #350
- Preliminary module-side interface for timing execution by @gefjon in #351
- Commit test clients' module_bindings by @gefjon in #346
- Print the elapsed time & # of returned rows in the interactive repl by @mamcx in #344
- Fix typo in README.md by @eltociear in #193
- Bindings: improve docs precision by @Centril in #146
- New Upgrade Version Util by @jdetter in #354
- core: Provide read access to commit/message log and odb by @kim in #265
- Version Upgrade to 0.7.0 by @jdetter in #355
- Move connection events to reducers by @RReverser in #309
- Fix arm64 builds on Linux by @kurtismullins in https://github.com/clockworklabs/Spacetim...
v0.6.1-beta
This is the first patch release post-announcement! We're already at work fixing all the issues that you all have been reporting. There'll be much more to come over the next few weeks and months!
Highlights
- Fancy banner for
spacetime start
- Logging fixes and improvements
- Bug fixes and performance improvements
What's Changed
- Print banner during spacetime start by @jdetter in #138
- In identity recovery routes, use
IdentityForUrl
by @gefjon in #139 - Fix openssl bindings to always use the feature 'vendored' by @mamcx in #141
- Allow spacetimedb to run in an in-memory mode by @kulakowski in #137
- Remove sendgrid from standalone by @kulakowski in #142
- Build docker image in CI by @drogus in #124
- Tag docker images with git tag by @drogus in #145
- Fix up the standalone and CLI command line flags by @kulakowski in #148
- Improve the help docs for the --in-memory cli flag by @kulakowski in #150
- Auto-upgrade C# deps on installation by @RReverser in #147
- Fix URL for the docker badge by @mamcx in #144
- Move energy budget reporting to log::info! by @kulakowski in #140
- Default docker command by @jdetter in #149
- Fix serde impls for Address + add some tests by @kim in #159
- Implement
Display
forNameOrAddress
by @kim in #160 - Point C# to API reference for now by @RReverser in #164
- Remove unused datastore traits by @kulakowski in #157
- Terminate background smoke tests on exit by @kim in #153
- Allow smoke tests to opt out of docker by @kim in #154
- Return parsed
DomainName
alongsideAddress
when resolvingNameOrAddress
by @kim in #161 - More compact representation of
DomainName
by @kim in #163 - [SDK] Add cursive-chat example by @gefjon in #152
- Install from source instructions by @jdetter in #170
- sdk: Lower client cache log severities by @kim in #162
- Fix some insertion and deletion state transitions by @kulakowski in #167
- Move cargo deps to the workspace by @mamcx in #172
- Fix nit by @mamcx in #178
- Version upgrade to 0.6.1 by @jdetter in #180
- Fix python generation for C# server modules by @dbrinkmanncw in #166
- Fix Docker Build by @jdetter in #181
Full Changelog: v0.6.0-beta...v0.6.1-beta
v0.6.0-beta
The first publicly released version of SpacetimeDB. 0.6.0
v0.6.0-beta Release Notes