Skip to content

v0.7.0

Choose a tag to compare

@piodul piodul released this 15 Dec 16:56
· 3241 commits to main since this release

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

Some interesting statistics:

  • over 67k downloads on crates;
  • over 350 GitHub stars!

Notable changes

Bugs fixed:

  • The CachingSession used to cache not only prepared statement IDs but also query parameters (such as page size) and those parameters overrode the ones provdided to CachingSession::execute. This caused strange and inconsistent behavior. Now, query parameters are not cached but are always taken from the Query object provided to CachingSession::execute (#598)
  • Fixed a bug in a corner case of retry logic that could cause a panic in case query_iter/execute_iter is used to perform a write with a DowngradingConsistencyPolicy (#609)
  • The driver now advertises its version to nodes that it connects to. The driver version is now visible in the system.clients table (#611)
  • The derive macros in the scylla-macros crate can now be used on generic structs (#565)

New features/enhancements:

  • Token-awareness for batches is now supported. Batches are routed with respect to the routing key of the first statement of the batch (#573)
  • An optimization has been implemented which, in case of LWT queries, causes TokenAwareStrategy to choose the nodes for queries in a predefined order, bypassing any shuffling coming from the child policy. This reduces the number of retries needed to perform an LWT update in case when multiple clients try to update the same key (#578)
  • The LatencyAwarePolicy has been added which mimics the behavior of C++ driver's latency aware routing. The new policy measures latency on a per-node basis and prefers nodes with lower latencies. Although this policy may be useful for some use cases, caution is advised as it was deprecated in C++ driver and also removed from the Java driver (#536)
  • It is now possible to restrict the set of keyspaces for which metadata is being fetched. This can reduce the amount of network traffic needed during metadata refresh in case the metadata for some keyspaces is not needed by the user (#576)
  • It is now possible to implement other authentication schemes via the AuthenticatorProvider and AuthenticatorSession traits. The previous, hardcoded password authentication scheme is now offered as PlainTextAuthenticator (although the SessionBuilder::user method was kept for convenience) (#572)
  • The CachingSession now supports custom hashers for use in the internal hashmap. By default, the default hasher from the standard library is used, but a more efficient implementation can be chosen by the user (#577)
  • The impl_from_cql_value_from_method! macro is added that allows you to easily generate FromCqlValue impls from your extension trait methods (#601)
  • The Value trait used for serialization was implemented for Box and for references to unsized types, allowing to cover trait objects (dyn T) as well (#590)
  • Retry policies now support serial consistency (#585)

CI / developer tools:

  • Introduced scylla-proxy, a tool internal to the driver that allows intercepting and modifying requests and responses that are exchanged between the driver and the cluster. It is useful for simulating responses from the cluster that would be hard to trigger reliably without it - e.g. timeout errors (#496)
  • The tests now require a running 3-node Scylla cluster. In order to simplify testing, a Makefile has been added that sets up such a cluster with docker-compose before running the tests (#584)
  • The CI now also sets up a 3-node Cassandra cluster (#602)
  • Request serialization benchmarks have been added (#581)

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
63 Wojciech Przytuła
10 Michał Sala
10 Thomas BESSOU
9 Piotr Dulikowski
5 Colin O'Brien
2 Gor Stepanyan
2 colin-grapl
1 Jan Ciolek
1 Joseph Perez
1 Lucas Kent
1 Piotr Grabowski