[RELEASE] ScyllaDB Rust Driver 0.9.0

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

Some interesting statistics:

  • over 403k downloads on crates;
  • over 440 GitHub stars!

Notable changes

API cleanups / breaking changes:

  • Removed Session::estimate_replicas_for_query. The same effect can be achieved via slightly longer session.get_cluster_data().get_token_endpoints(). #768
  • Removed Session::get_tracing_info_custom. The parameters passed to that function (number of retries, delay between retries, consistency level) can now be set on the per-session level basis, and get_tracing_info should be used instead. #768
  • Removed accidental reexports of Consistency and SerialConsistency from the scylla::statement::batch module. Those are already available through more convenient import paths. #767
  • Removed the reexport of QueryResult from scylla::transport::connection module. It is already reexported from the scylla module which should be more convenient. #763
  • Removed the scylla::routing::Node struct. It hasn’t been used by any of our APIs and had a very similar name to scylla::transport::Node, so it would only be a source of confusion if left alone any longer. #762
  • A bunch of constants have been un-pubbed from the scylla-cql crate, as well as two internal functions related to frame compression/decompression. #764
  • The CloudConfig struct has been exposed to the users. The purpose of this change is to aid in implementing Scylla Cloud support in the cpp-rust-driver project. #750
  • It is now not possible to set the SSL context when using Rust driver with Scylla Cloud; the SSL context should be determined fully by the Scylla Cloud configuration and should not be modified by users. #703

New features / enhancements:

  • In case when executing prepared queries, the partition key associated with the request is emitted in a tokio::tracing span in a human-readable form. Previously, it was also emitted, but in a form that is hard to parse by a human. #766
  • The function Session::calculate_token_for_partition_key is added. It allows to calculate a partition key only by using a partitioner and values of a partition key, no PreparedStatement object is needed. #757
  • The scale parameter in LatencyAwarePolicy, which is exposed in cpp driver but was missing from the rust implementation’s API, is now exposed. The previous default value has been changed. #733
  • The documentation theme has been updated. #737

Bug fixes:

  • The RoutingInfo struct to load balancing policies used to have incorrect consistency level set. This is now fixed, and a regression test has been added. #743
  • If one of the hostnames passed as a contact point cannot be resolved, the driver would fail to create a session, even if other nodes would resolve correctly. This is now fixed and the driver will succeed in such scenario. #753

CI / developer tool improvements:

  • The timeout of CI jobs has been reduced from the default 6 hours to 1 hour. #734

Others:

  • Non-public dependencies of the driver were updated. (#769, #755)
  • The clone.rs example has been removed. It promoted bad practices; we recommend only using one Session object per application. #728
  • Uses of SimpleStrategy has been removed from examples and documentation. This strategy will become deprecated in ScyllaDB in the future, and we no longer want to promote its use in learning materials. #726
  • The runners in our CI has been temporarily downgraded to use Ubuntu 20.04. The reason for this change is that the ccm tool, used by the CI, requires Python 2 which is no longer available in the ubuntu-latest runner. Requirement for Python 2 will be dropped with the next ScyllaDB release, and the system version will be upgraded again after this happens. #752
  • docker compose version has been upgraded from V1 to V2 in the CI. The old one stopped receiving updates. #761

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
20 Piotr Dulikowski
15 Wojciech Przytuła
11 Piotr Grabowski
3 Jan Ciolek
2 David Garcia
2 Gor Stepanyan
1 Lucas Kent
1 Like