[RELEASE] ScyllaDB Rust Driver 0.13.0

The ScyllaDB team is pleased to announce ScyllaDB Rust Driver 0.13.0,
an asynchronous CQL driver for Rust, optimized for Scylla, but also compatible with Apache Cassandra!

Some interesting statistics:

  • over 1,615k downloads on crates!
  • over 520 GitHub stars!

Changes

API cleanups / breaking changes:

  • Implemented support for Tablets, a new major architectural feature of Scylla that will be a part of upcoming 6.0 release. This support is required for token (and shard) awareness to work with Tablet-based tables. You can read more about Tablets in a blogpost by Tomasz Grabiec or watch a presentation by Avi Kivity (#937)
  • Enabled shard-selecting load balancing. Before, a LoadBalancingPolicy would return a Plan consisting of Nodes;
    now, together with a Node it can optionally specify the Shard to contact as well. This is crucial for proper Tablets support (see above). Main PR #944, with follow up #969
  • Token: added constructor and normalization to increase type-safety (#948)
  • Removed another unstable dependency, histogram::Histogram, from public API (#935)
  • Implemented CQL protocol-level optimisation: prepared statement result metadata can be now used to decode rows. This saves network bandwidth if that option is enabled, because result metadata need not be sent with each DB query result. (#925)
  • Removed num_enum dependency. It was unstable, and we managed to do without it, so it no longer appears in the public API. (#931)
  • Decreased pub visibility of scylla-cql definitions which weren’t intended for access from outside the driver. (#933)

New features / enhancements:

  • Improved the FromRow derive macro to suppport structs with unnamed fields. Before, only structs with named fields were supported. (#985)
  • testing: Increased timeout for fetching tracing info - Cassandra was so slow in tests that our CI used to fail sometimes… (#966)
  • Removed strum and strum_macros dependencies. They were unstable, and we managed to do without it. (#934)

Documentation:

  • Got rid of (most) uses of QueryResult::rows. The preferred method is the more type safe QueryResult::rows_typed. Moreover, QueryResult::rows is going to be deprecated in the next release, once the new lazy deserialization framework is introduced. We thus recommend switching to rows_typed wherever possible. (#955)

CI / developer tool improvements:

  • Removed unreachable pubs (#958)
  • Dealed with chrono deprecations (#951)
  • CI: run cargo clean before tests (#929)
  • CI: small fixes in semver checks (#942)
  • CI: semver_checks now edits its comment instead of posting new one, so that the PR wall is less cluttered. (#952)
  • CI: Tracing output is now shown for a test iff the test failed. This is a major aid in debugging in CI. (#959)
  • Reverted “CI/Makefile: disable uninlined_format_args clippy lint”, as rust-analyzer now properly supports semantic analysis of such format args. (#945)
  • Appeased Clippy again (#971)

Congrats to all contributors and thanks everyone for using our driver!


The source code of the driver can be found here:

The official crates.io registry entry is here:

Thank you for your attention, please do not hesitate to contact us if you have any questions, issues, feature requests, or are simply interested in our driver!

Contributors since the last release:

commits author
40 Karol Baryła
24 Mikołaj Uzarski
10 Wojciech Przytuła
1 Piotr Dulikowski
1 Piotr Grabowski