v1.0.0-rc3-hotfix7

clockworklabs/SpacetimeDBv1.0.0-rc3-hotfix7Jan 14, 2025by bfops

AI Summary

This hotfix release focuses on performance, logging macro changes, and CLI improvements for the RC3 candidate.

Key Highlights

  • Significant performance improvements across the codebase.
  • Replaced `println!` and `eprintln!` with `log::info!` and `log::error!`.
  • CLI fixes including `spacetime energy balance` and renaming `dns` to `rename`.
  • New C# index syntax and fixes for C# compilation with .NET 9.

Breaking Changes

  • Directory structure restructured, requiring a data wipe.

New Features

  • Performance improvements
  • New logging macros
  • CLI rename command
  • New C# index syntax

Full Release Notes

## 🥇 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
* commitlog: Introduce epoch by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/1851
* Remove jdetter as codeowner for now by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/1939
* Fix benches for ia_loop, circles by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/1922
* Logical to physical plan lowering by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/1910
* Be more careful about endianness with Identity and Address by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/1926
* Simplify benchmarking wrappers by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/1951
* Decode identity correctly by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/1952
* Removing dead code: Relational ops and cursor by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/1956
* Get `jsonwebtoken` and `jwks` forks from crates.io by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1958
* Add LICENSE file to `sql-parser` crate by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1959
* Add missing LICENSE by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/1960
* Bump version to 1.0.0-rc2 by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1962
* Add typing context for lowering by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/1963
* Add test for light update by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/1953
* Clean up benchmark .spacetime in CI by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/1968
* refactor: encode type info implicitly in the physical plan by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/1938
* CLI - Remove unused `default_identity` stuff by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1969
* CLI - Tell users if they're already logged in by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1955
* CLI - Fix stale helptext instructing users to use `spacetime identity` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1954
* commitlog: Small tweaks by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/1978
* NFC: Remove unused fsync param in benchmarks by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/1981
* Directory structure impl by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/1879
* Bump C# versions to `-hotfix1` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1984
* Light updates test: Ensure subcriptions have been applied before calling reducers by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/1979
* Optimize integrate_generated_columns by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/1895
* Update run_standalone_temp.sh to the new folder specification by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/1990
* Clean up auth related code with traits, and reuse existing key generation code. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/1988
* core: Make NDV non-zero by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/1985
* test: No divide by zero for row estimation of empty index by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/1986
* Run and test benchmarks against C# as well by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/1965
* Preserve reducer order in schema conversion by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/1987
* Durability Provider by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/1864
* Fix flaky oidc tests by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2000
* C# endianness fixes by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/1964
* Rip useless names out of RawDef by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/1918
* commitlog: Fix set_epoch by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2005
* create commitlog dir in fs::New by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/2006
* Don't autogen schedule fields by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/1894
* Remove problematic debug assertions by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2010
* CLI should not depend on rustup by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/1996
* Speed up `state_view::Iter` by special casing committed-with-no-deletes by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2003
* Rust SDK: Actual client-side indices for unique constraints by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/1909
* Decide that BSATN `byte` that ain't 0 or 1 is not a valid `AV::Bool` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2026
* Add `Layout.fixed: bool` for a fast path in `eq_row_in_page` & `row_type_visitor` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2025
* Add `static_bsatn_validator` & `validate_bsatn` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2029
* Add `Static(Bsatn)Layout::deserialize_row_into` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2032
* Remove IO macros by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1929
* Migrate C# client-side reducer enum to the new syntax by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/2033
* Rust SDK: no more reducer args structs by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2036
* Fix subscription benchmarks by fixing `create_table_for_test_with_the_works` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2027
* move unique constraint checking until after optimistic insertion by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2037
* Allocation pool the chunked iters in `InstanceEnv` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2038
* Avoid a multimap when the index is unique by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2044
* Fix declaration order of ScheduleAt in C# by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2007
* commitlog: Provide `segment_len` method for segments by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2042
* Fix some places where trying to parse an empty string could panic. by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2051
* Fix spacetime server clear by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2055
* query rewriter by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2031
* Migrate C# ModuleDef to V9 by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/1670
* fix: filter pushdown over table scan by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2063
* commitlog: Fix offset index truncation by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2073
* fix: qualified projection columns by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/2070
* commitlog: Make memory segment behave like `O_APPEND` by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/2072
* CLI - Remove deprecated use of the `--project-path` flag by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/915
* Reduce noisy C# compilation errors by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/2067
* Split Iter & IterByColRange types into Tx and MutTxId versions by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/2043
* Tweak scheduled_at macro syntax by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2054
* Server-side implementation of incremental subscription changes by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/2030
* Implement the `identity` host call and `ctx.identity()` in Rust by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2085
* Preserve the comments of the "cli.toml" on changes by @mamcx in https://github.com/clockworklabs/SpacetimeDB/pull/2002
* CLI - Confirm before publishing to non-local servers by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2086
* C#: fix class names for unique column indices by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/2088
* CLI - Fix `spacetime energy balance` not working by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/2087
* Use a spinner to show that wasm is compiling in spacetime generate by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/2057
* Enforce .NET 8 SDK for new C# modules by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/2046
* Implement `ctx.Identity` for C# by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/2091
* Implement new C# index syntax by @RReverser in https://github.com/clockworklabs/SpacetimeDB/pull/2078
* CLI - `dns` subcommand becomes `rename` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/1694
* datastore: insert via BSATN instead of via PV by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2069
* Extract `MutTxId::tx_state_removed_index(&self, index_id) -> bool` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2095
* Extract `InstanceEnv::project_cols_bsatn` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2096
* Updated version to 1.0.0-rc3 by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/2059
* Use `println`/`eprintln` in the quickstart-chat client, not `log` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2099
* perf(2019): skip `PointerMap` given a unique index by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/2092
* Make automatic migrations deterministic by @kazimuth in https://github.com/clockworklabs/SpacetimeDB/pull/2104
* Fix defining multiple tables on the same `struct` in Rust modules by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2103


**Full Changelog**: https://github.com/clockworklabs/SpacetimeDB/compare/v1.0.0-rc2-hotfix2...v1.0.0-rc3-hotfix7