I'm pleased to announce Scylla Rust Driver 0.2.0, an asynchronous CQL
driver for Rust, fully 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.
===
The source code of the driver can be found here:
* https://github.com/scylladb/scylla-rust-driver
Contributions are most welcome!
The official crates.io registry entry is here:
* https://crates.io/crates/scylla
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
On 4/8/21 9:19 AM, Piotr Sarna wrote:
I am pleased to announce the first release of a brand new,
asynchronous CQL driver for Rust, fully compatible with Apache
Cassandra™ - Scylla Rust Driver 0.1.0.
Our new driver is capable of the following, and much more:
* Asynchronous API based on Tokio (tokio.rs)
* Token-aware routing
* Shard-aware routing (specific to Scylla)
* Prepared statements
* Query paging
* Compression (LZ4 and Snappy algorithms)
* CQL binary protocol version 4
* Batch statements
* Configurable load balancing policies
* Driver-side metrics
* TLS support (based on openssl)
* Configurable retry policies
* Authentication support
* CQL tracing
The source code of the driver can be found here:
> https://github.com/scylladb/scylla-rust-driver
Contributions are most welcome!
The official crates.io registry entry is here:
> https://crates.io/crates/scylla
The original release note:
> https://groups.google.com/g/scylladb-users/c/IW9mevyygis
Thank you, please don't hesitate to download and test the driver,
we're waiting for your feedback!