Skip to content

Releases: clockworklabs/SpacetimeDB

Release v1.3.2

04 Sep 17:46
Compare
Choose a tag to compare

Just a small bugfix release to re-enable and fix functionality for adding new enum variants!

Full Changelog: v1.3.1...v1.3.2

Release v1.3.1

22 Aug 14:18
Compare
Choose a tag to compare

Just a quick release today - a few bugfixes related to database reloading. We're also temporarily disabling the functionality to add enum variants, due to it causing other issues.

Note: This release we forgot to bump the patch number so the version number will display as 1.3.0 instead of 1.3.1. Verify your commit hash starts with cc4a1 if you want to be sure you're using 1.3.1.

Full Changelog: v1.3.0...v1.3.1

Release v1.3.0

01 Aug 18:06
e107144
Compare
Choose a tag to compare

We have a new release with a variety of goodies for you 🎁

As of this release, users can add new values at the end of an enum without clearing the database data.

This release also includes lots of performance improvements to CPU usage, memory usage, and network behavior.

We've also addressed several bugs that were reported, especially:

  • Fixed a bug where clients making similar queries could prevent each other from getting query updates
  • Fixed #2894
  • Fixed #2891
  • Fix spacetime version list not showing the current version

What's Changed

  • Fix an outdated docstring on identity and try_identity in the Rust SDK by @gefjon in #2871
  • Remove incorrect const qualifiers on two imports in bindings.c by @gefjon in #2862
  • Use database identity not owner identity for metrics by @joshua-spacetime in #2868
  • messages::serialize: take/put buffers from/into a SerializeBufferPool by @Centril in #2823
  • Relax conditions for query pruning by @joshua-spacetime in #2873
  • Track metadata updates for unsubscribes by @joshua-spacetime in #2876
  • Record the size of a client's outgoing message queue on drop by @joshua-spacetime in #2877
  • Fix two places we grab blocking locks on tokio runtime worker threads by @jsdt in #2881
  • Speed up metadata update on unsubscribe by @joshua-spacetime in #2880
  • Log when a websocket connection has ended by @joshua-spacetime in #2883
  • Improve serialization speed of enums without data in C# by @kazimuth in #2762
  • TypedIndex: add special cases for F{32,64} by @Centril in #2885
  • Bump C# versions to 1.2.1 by @bfops in #2890
  • Remove unnecessary .clone() in pipelined.rs by @Centril in #2897
  • Track disconnects initiated by the client by @joshua-spacetime in #2893
  • Fix query overwrites in the subscription manager by @joshua-spacetime in #2905
  • core: Allow adjusting CPU reservation pools by @kim in #2907
  • durability: Fix task leak by @kim in #2875
  • Auto-migrate: Allow adding new variants at the tail by @Centril in #2874
  • (perf) send_one_computed_queries: reuse aggregation HashMaps by @Centril in #2909
  • Filter out dropped clients in the send worker by @joshua-spacetime in #2899
  • tools/upgrade-version updates the Change Date in LICENSE.txt by @bfops in #2895
  • Wrap websocket flush in timeout by @joshua-spacetime in #2908
  • Record transaction metrics off the main thread by @joshua-spacetime in #2910
  • core: Allow caller to decide whether or not IRQ cores should be reserved by @kim in #2913
  • Remove unused get_column_by_field by @Centril in #2917
  • update_database: is_unique should only use the table's constraints by @Centril in #2915
  • Extract spacetimedb-memory-usage & Nix bindings dep on spacetimedb-data-structures by @Centril in #2919
  • Extract object_pool module from PagePool by @Centril in #2920
  • SATS: Move some method bodies to be provided in 'Serializer' instead by @Centril in #2921
  • Move sats::de::serde::NoneAccess to sats::de::NoneAccess by @Centril in #2922
  • Fix equality comparison between Row::Ptr and Row::Ref by @jsdt in #2914
  • SATS: make field_names/variant_names return iterator + add FieldNameVisitor::visit_seq by @Centril in #2927
  • Add V8Runtime skeleton + HostType::Js by @Centril in #2923
  • core: Tone down MessageExecutionError by @kim in #2926
  • SATS: add Impossible helper type by @Centril in #2929
  • client-api: Rewrite websocket loop by @kim in #2906
  • Fix AlgebraicTypeLayout::is_compatible_with by @Centril in #2932
  • Split datastore into its own crate by @cloutiertyler in #2933
  • Enable the datastore crate's test feature where necessary by @gefjon in #2937
  • Move locking operations onto the module's thread by @jsdt in #2866
  • Bump rust-toolchain to rust 1.88 by @coolreader18 in #2749
  • Add v8 crate + initialize v8 by @Centril in #2939
  • Extract ModuleCommon + use in wasm & v8 runtimes by @Centril in #2940
  • Import TypeScript SDK repo by @bfops in #2941
  • Make websocket configurable via config.toml by @kim in #2944
  • Fix up GitHub files related to TypeScript SDK by @bfops in #2943
  • [V8] Define trait ToValue for primitive types by @Centril in #2946
  • commitlog: Set up options for toml configuration by @kim in #2942
  • Import docs repo by @bfops in #2948
  • Docs import - Update GitHub-related files by @bfops in #2949
  • Import Blackholio by @bfops in #2945
  • Blackholio import - README updates by @bfops in #2947
  • Import C#/Unity SDK by @bfops in #2951
  • smoketest: Retry if there is no current leader by @kim in #2950
  • Update GitHub files for C#/Unity SDK by @bfops in #2952
  • ci: Temporarily disable zz_docker tests by @kim in #2974
  • V8: add FromValue, error traits, roundtrip tests by @Centril in #2971
  • smoketests: Adjust for node table rename by @kim in #2970
  • smoketests: Fix server restarts and make more robust by @kim in #2977
  • Fix spacetime version list not showing current version by @bfops in #2680
  • Upgrade jemalloc_pprof and tempfile crates by @kim in #2982
  • Update tungstenite to get client read performance improvement by @ResuBaka in #2966
  • Moved Remove operation to start of Table.Apply by @rekhoff in #2967
  • Update quickstart-chat client module bindings from server by @alex47 in #2976
  • ci: Skip the Unity tests if the PR is an external contribution by @kim in #2978
  • Docs CI - Check that nav.js matches the .md files list by @bfops in #2984
  • CI - Check C# quickstart-chat bindings are up to date by @bfops in #2979
  • Adding reject-client-connections doc. by @rekhoff in #2973
  • cli: Close the websocket connection gracefully by @kim in #2925
  • smoketests: Make gathering container ports None-safe by @kim in #2991
  • Generate Websocket token from auth in Unity WebGL build by @FME849 in #2988
  • Snapshotdir tx_offset method by @Shubham8287 in #2992
  • Add a recursion limit to the evaluation of type_expr & parse_expr by @mamcx in #2935
  • Update docs to point to SpacetimeDB monorepo by @bfops in #2989
  • Add React Native support to the Typescript SDK by @JulienLavocat in #2955
  • Bump C#/Unity Client SDK versions to 1.2.2 by @...
Read more

Release 1.2.0

17 Jun 16:41
Compare
Choose a tag to compare

We have another release for you! 🎉

This one is quiet as far as new features go (stay tuned for those soon), but we're including a ton of performance improvements in both server code and generated client code. We've also fixed several important bugs, and made some quality of life improvements for generated code.

A few particular things that people have been asking about:

  • We now use import type properly in generated TypeScript code
  • Fixed Equals and GetHashCode for types containing lists and arrays in C# code
  • Fixed SDK bug with overlapping subscriptions
  • Fix a bug where spacetime rename would leave the old name in place
  • Fix a bug where RLS would stop working after opening the web dashboard
  • Added an unstable HTTP route for getting the current timestamp

What's Changed

  • Replication Smoketest Cleanups by @kim in #2675
  • Allocate pages using a mult-tenant lock-free pool by @Centril in #2587
  • Add .DS_Store to gitignore by @rafaelGuerreiro in #2659
  • Add the primary key type to typescript's TableRuntimeTypeInfo by @jsdt in #2671
  • Split client codegen out into its own crate by @coolreader18 in #2593
  • CI - Publishable crates check also checks for license file by @bfops in #2681
  • Avoid reflection when validating enums by @joshua-spacetime in #2676
  • Do not double compress transaction update messages by @joshua-spacetime in #2668
  • Add information about the CLI version to generated code. by @jsdt in #2673
  • Simple implementation of insert_or_update and try_insert_or_update by @rafaelGuerreiro in #2678
  • Reduce allocations in C# when deserializing lists and arrays by @kazimuth in #2688
  • Fix subscription manager metadata for joins by @joshua-spacetime in #2705
  • Use spacetimedb-standalone to get schema for spacetime generate by @coolreader18 in #2644
  • Prevent ahash from pulling in getrandom 0.3 by @kim in #2714
  • Fix SDK bug with overlapping subscriptions by @gefjon in #2711
  • snapshot: Provide streaming snapshot verification. by @kim in #2691
  • sdk: fix with_light_mode docs by @Centril in #2700
  • snapshot: Improve memory utilization of snapshot fetcher by @kim in #2715
  • Hash subscription queries before acquiring tx lock by @joshua-spacetime in #2712
  • Log instead of panicking when missing a row from st_client by @gefjon in #2722
  • Commitlog stream range fix. by @Shubham8287 in #2721
  • Deal wih AlgebraicType::Ref in Serialize for ValueWithType<ArrayValue> by @Centril in #2708
  • PagePool::{default -> new_for_test} + temporary hack for IN_MEMORY_CONFIG / test_index_scans by @Centril in #2707
  • Use the --ignore-matching-lines flag of git diff. by @jsdt in #2720
  • Fix Equals and GetHashCode for types containing Lists and Arrays in C# by @kazimuth in #2710
  • Fix index scan rewrite rule by @joshua-spacetime in #2728
  • Do not evaluate subscriptions that return empty result sets by @joshua-spacetime in #2731
  • Use spawn_blocking for the fallback commit in identity_dis/connected by @coolreader18 in #2730
  • Move init_database out of wasm_common by @coolreader18 in #2732
  • Reduce reflection use in generated C# code by @kazimuth in #2725
  • Fix row count stats for multi subscription responses. by @jsdt in #2736
  • Handle snapshot restore more robustly by @kim in #2735
  • Call reducers on the blocking pool. by @jsdt in #2737
  • Follow-up: use asyncify in ModuleHost::call by @coolreader18 in #2740
  • Add counters for client connections spawned and aborted. by @jsdt in #2741
  • Update quickstart-chat README.md by @Trobyss in #2727
  • core: Asyncify commitlog compressor by @kim in #2743
  • Reintroduce replication factor parameter by @kim in #2718
  • commitlog: Include latest commit offset in segment metadata by @kim in #2733
  • ci: Update dependencies for the wasm_bindings job by @kim in #2717
  • core: Fix error handling when restoring snapshot by @kim in #2755
  • build_sequence_state: clobber pre-existing in-memory Sequences by @gefjon in #2760
  • cli: Add value_parser for num-replicas by @kim in #2759
  • Cache with_label_values more & don't do metrics while holding lock by @Centril in #2734
  • datastore: apply schema changes immediately to committed state. by @Centril in #2685
  • Fix TypeScript imports codegen by @toqueteos in #2747
  • Make connection metrics keyed on database identity, not replica ID by @gefjon in #2765
  • Fixed compile errors and warnings on Windows by @cloutiertyler in #2646
  • Bump version to 1.1.2 by @bfops in #2767
  • Commitlog: handle empty offset index lookup by @Shubham8287 in #2771
  • Re-enable page bool with default size of 128 pages by @joshua-spacetime in #2769
  • commit_and_broadcast_event: read_tx.merge(update_metrics) by @Centril in #2772
  • Bump C# versions by @bfops in #2774
  • Don't yap about putting chunks into my pool by @Centril in #2777
  • Cheaper Table::clone_structure by @Centril in #2776
  • add instrumentation to remove_multi_subscription by @joshua-spacetime in #2781
  • Single-threaded subscription evaluation by @joshua-spacetime in #2682
  • Run reducers on tokio blocking thread instead of rayon by @joshua-spacetime in #2785
  • Datastore Extraction: TxMetrics refactor, small non-functional change to make datastore extraction easier by @cloutiertyler in #2794
  • Datastore Extraction: Remove reference to WORKER_METRICS inside db_metrics by @cloutiertyler in #2797
  • Datastore Extraction: StVarName refactor, small non-functional change in furtherance of datastore extraction by @cloutiertyler in #2795
  • Datastore Extraction: Create DatastoreError type by @cloutiertyler in #2798
  • Page::reset_for: stop zeroing pages by @Centril in #2804
  • Consider deleted committed rows in MutTxId::create_index by @Centril in #2805
  • Per-database incoming and outgoing queue length metrics by @gefjon in #2773
  • Aggregate and broadcast DbUpdates off the main thread by @gefjon in #2793
  • Build indexes over TxData for subscription eval by @joshua-spacetime in #2768
  • core: Make asyncify preserve the current span by @kim in #2790
  • commitlog: Fix index truncation test. by @kim in #2792
  • commitlog: Reduce log noise when offset index cannot be used by @kim in #2791
  • smoketests: Bring containers back up in tear down of replication tests by @kim in #2818
  • Log every second a reducer takes to run by @coolreader18 in #2738
  • Fix typos by @szepeviktor in #2812
  • CI - Remove outd...
Read more

Release 1.1.2

14 May 17:33
Compare
Choose a tag to compare

Hello again everyone! This release is primarily to fix an issue related to building rust modules where a dependency of SpacetimeDB was updated and is causing compilation issues for some users.

What's Changed

Full Changelog: v1.1.1...v1.1.2

v1.1.1

22 Apr 20:59
Compare
Choose a tag to compare

We're releasing a small collection of performance improvements and bugfixes!

Most notable is that we've fixed two outstanding TypeScript code generation bugs.

What's Changed

Full Changelog: v1.1.0...v1.1.1

Release 1.1.0

16 Apr 01:51
Compare
Choose a tag to compare

We're releasing our first version bump since 1.0! 🎉

Row-level security

This release includes public access for row-level security.

See https://spacetimedb.com/docs/rls for more info on how to use it!

Improved usability for timestamps and durations

From the PR #2502:

Specifically, we add methods and trait impls for T x U -> V, where x is a binary operator, either + or -:

  • Timestamp x TimeDuration -> Timestamp
  • Timestamp x Duration -> Timestamp.
    • This one is kind of weird, since we convert the Duration into a TimeDuration before doing math with it, which may be a lossy conversion depending on platform.
  • TimeDuration x TimeDuration -> TimeDuration.

Other notable improvements

  • Features to save disk space and reduce memory usage
  • Support for enums as index keys
  • Restore CLI functionality for printing the number of rows affected by an operation

What's Changed

Full Changelog: v1.0.1...v1.1.0

Release 1.0.1

24 Mar 16:55
Compare
Choose a tag to compare

Release 1.0.1

This is a collection of small bugfixes on top of 1.0.0. Thank you to everyone who reported issues and helped us hunt these down! 🎉

In particular, we fixed an issue with primary keys not working properly in generated typescript code.

Among other issues reported in Discord and elsewhere by our wonderful users, we fixed these:

What's Changed

New Contributors

Full Changelog: v1.0.0...v1.0.1

v1.0.0

03 Mar 19:01
Compare
Choose a tag to compare
Version 1.0 Illustration

🎉 SpacetimeDB 1.0 🎉

Today we're incredibly excited to officially release SpacetimeDB 1.0!

Watch the keynote!

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! Discordhttps://discord.gg/spacetimedb

What's Changed

Read more

v1.0.0 Release Candidate 3

14 Jan 18:08
Compare
Choose a tag to compare

🥇 We're getting close! 🥇

We're full steam ahead toward our 1.0 release soon! This release candidate brings a sneak peek at lots of upcoming changes.

This release will require a data wipe, because we restructured the SpacetimeDB directory structure.

Some highlights:

  • Lots of performance improvements!
  • Removed the println! and eprintln macros in favor of log::info! and log::error!
  • Fix defining multiple tables on the same struct in Rust modules
  • CLI
    • Fixed spacetime energy balance not working at all
    • The spacetime dns subcommand is now spacetime rename
    • When updating the cli.toml config file, comments and formatting are preserved
  • C#
    • New C# index syntax
    • Reduce noisy C# compilation errors
    • Fixed a bug where C# modules would not build if .NET 9 was installed on the system

What's Changed

Read more