You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Piotr Sarna <sa...@scylladb.com> on 2021/06/25 13:11:09 UTC

New open-source CQL driver for Rust released - 0.2.0

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!
>
>