The Scylla team is pleased to announce Scylla Rust Driver 0.2.0,
an asynchronous CQL driver for Rust, optimized for Scylla, but also
compatible with Apache Cassandra!
Our Rust driver now also has an official documentation page:
https://rust-driver.docs.scylladb.com/ , thanks to Laura Novich and
David Garcia's contributions.
=== Notable changes ===
Features:
* Waiting for schema agreement
The driver is now capable of awaiting schema agreement after schema
changes:
> session.await_schema_agreement().await?
* Speculative execution support
The driver now supports setting various speculative execution
policies, used when responses do not arrive in time. Currently, the
speculative execution can be based on a simple timeout or on specific
percentile values.
* More control over paging
Except for the existing iterator-based API, queries can now return
their paging state. The paging state can be later used to resume the
next query from where the previous one left off.
* Configurable connect timeout
Sessions can now specify how long they are willing to wait for
connections. It can be done via a new connect_timeout parameter in
SessionConfig
* Support for schema change events
The driver is now capable of receiving schema change CQL events from
the cluster
* Reusable SessionBuilder
The session builder now supports calling .build() on it multiple
times, which allows preparing the configuration once and then using it
to establish multiple CQL sessions.
* Automatic shard-aware port picking (Scylla-only)
The driver will now probe the cluster for its shard-aware port
configuration, and if it finds one, it will automatically switch to
using more efficient shard-aware ports
* Default port: 9042
It's now possible to omit the explicit port specification when
creating a session. In that case, CQL's default 9042 port will be used.
Performance:
Various performance fixes were applied, based on benchmarks and
profiling results. Most notably, a couple of synchronization bottlenecks
were avoided with the help of the arc_swap crate. We also reduced the
number of writes needed to send a request from 2 to 1, which speeds up
the operation and also avoid the pitfall of using Nagle's algorithm and
delayed ACK at the same time. Also, tcp nodelay option is now set to
true by default in order to avoid latency spikes.
Fixes:
Lots of small fixes are introduced in this release. A problem with
picking source ports (that we hit on Windows) is now solved. We also
properly propagate authentication errors to the users.
===
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 last release:
commits|author
26 Michał Sala
25 Piotr Sarna
18 Piotr Dulikowski
5 Kejmer
3 Jan Ciołek
3 altanozlu
2 Pekka Enberg
1 Anita Śledź
1 David Garcia
1 Jasperav
1 Kajetan Husiatyński
1 dgarcia360
1 lauranovich