[RELEASE] ScyllaDB Rust Driver 1.2.0

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

Some interesting statistics:

  • over 3.877k downloads on crates!
  • over 633 GitHub stars!

Changes

New features / enhancements:

  • Added flatten attribute to SerializeRow derive macro. The attribute is inspired and analogous to the one found in serde #1144
  • Introduced CQL Vector type full support #1165.
  • Added nil() method for CqlTimeuuid #1314.
  • Added MaybeUnset::from_option() convenience constructor to reduce boilerplate #1317.
  • Exposed coordinator that served the request #1287.
  • Enabled enforcing a coordinator for the request #1326.
  • Derived Debug for timestamp generator types #1341.
  • Introduced CachingSessionBuilder #1345.
  • Preparation now is done on exactly one shard on each node (instead of all shards), which reduces unnecessary overhead #1320.
  • Fetching schema version when awaiting for schema agreement is now done on one connection per node only (as opposed to all connnections), which reduces unnecessary overhead #1323.
  • PreparedStatement is materialized only where needed, avoiding unnecessary allocations #1329.
  • Exposed an option to allow skipping result metadata when executing prepared statements using CachingSession #1340.

Bug fixes:

  • Fixed a bug that the driver panicked if the shard returned by the LoadBalancingPolicy was out of range for the chosen node #1325.
  • Fixed a bug that Metrics::percentiles() would return the number of observations in the corresponding bucket instead of the mean value of the bucket #1327.
  • Nodes with all connections broken are now ignored during schema agreement. This fixes the bug that such nodes made schema agreement awaiting fail #1355.

Internal API cleanups/refactors:

  • LatencyAwareness uses existing Iterator’s methods instead of hand-crafted logic #1330.
  • Renamed PreparedIteratorConfig to PreparedPagerConfig, because it was a remnant of the legacy naming #1335
  • Removed Node::is_down() and related code, as the event-based node status mechanism is error prone and was not used anyway #1358.

Documentation:

  • Described scylla-cql API’s considerations - versioning requirements, guarantees, etc. #1322.
  • Updated dependencies of the docs #1333.
  • Fixed md redirections for multiversion support in the docs #1334.
  • Moved flatten attribute docs to SerializeRow, as it had been put in a wrong place #1144.

CI / developer tool improvements:

  • Proxy now supports negotiated compression #1246.
  • Added test for the UDT case when metadata is present but the value is missing #1315.
  • Fixed warnings in serverless tests #1316.
  • Reorganised integration tests into a clear tree-like structure (#1350, #1351).
  • Clippy was appeased again, after new lints were introduced in Rust 1.87 #1357.
  • Improved our use of Clippy: migrated from allow() to expect(), removed unnecessary lints and enabled of checking public API with Clippy #1359.

Others:

  • MSRV was raised to 1.80 #1319, and then to 1.81 #1356.

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
108 Wojciech Przytuła
20 Mikołaj Uzarski
19 Karol Baryła
8 Andres Medina
8 smoczy123
4 Andrés Medina
2 David Garcia
2 Vartan Babayan
1 Dmitry Kropachev
1 Like