[RELEASE] ScyllaDB Rust Driver 1.5.0

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

Some interesting statistics:

  • over 5.7M downloads on crates!
  • over 663 GitHub stars!

Changes

New features / enhancements:

  • :warning: Enabled hostname verification for OpenSSL. This is an important security improvement, and brings our OpenSSL usage to parity with Rustls (which doesn’t even allow disabling verification in any easy way). Warning: it may cause the driver to be unable to connect to your cluster if you use OpenSSL and your node certs don’t have node IP in SAN (#1491).

  • Introduced configurable DNS resolution timeout. Check out hostname_resolution_timeout method on SessionBuilder (#1113).

  • Internal requests performed by the driver that fetch schema and topology are now prepared. It may slightly lower the load on cluster in some scenarios, especially when there is a great amount of driver sessions existing at the same time. (#1530).

    • We wanted other internal statements (schema version fetch and tracing-related statements) to also be prepared, but it turned out to interact badly with switching Session keyspace (#1561). Simple workaround that we tried (#1562) didn’t work with all cases, so this had to be reverted (#1569).
  • Schema agreement wait (performed by Session::await_schema_agreement and automatically after DDL requests unless disabled) no longer fails immediately after any error. Instead, it retries when the error is classified as non-permanent (#1473, #1479).

  • Implemented Debug for ColumnSpecsGuard (#1522).

  • Added support for secrecy 0.10, including SecretString and SecretSlice (#1523).

  • Implemented SerializeValue for MaybeEmpty (#1525).

  • Allowed (de)serialization of Cow<'_, T> values (#1545).

  • Introduced scylla_unstable cfg flag to gate all unstable features (#1505).

  • Implemented unstable HostListener mechanism for CPP-RS Driver (#1496).

  • Introduced unstable ReconnectPolicy (#1508, #1509).

  • :warning: Removed “unstable cloud” feature, as it was abandoned long time ago. The removed feature was marked as unstable, so this is not a semver-major change, but it may cause compilation error if your code used this feature (#1487).

Bug fixes:

  • Session::execute_iter and Session::query_iter now correctly handle USE keyspace requests (by switching keyspace on all connections) and DDL requests (by awaiting schema agreement unless disabled). (#1548).
  • frozen flag is no longer considered when type checking upon (de)serialization (#1500).
  • MetadataError::FetchError now has correct message when printed. Before this fix, it was accidentally hardcoded to “transparent” (#1539).
  • Frozen modifer is now correctly parsed in custom types. This is relevant pretty much only for vector of collections - extremely niche use case (#1567).

Internal cleanups/refactors:

  • Brought the first batch of internal metadata fetching improvements (#1526).
  • Fully-qualified call to collect_array in custom_type_parser (#1494).
  • Fixed variable shadowing in value_tests.rs (#1511).
  • Small refactor of execution methods (#1514).
  • Replaced &String with &str where possible (#1529).

Documentation:

  • Added a new step to the release procedure: updating the list of supported driver versions (#1476).
  • Clarified metrics docs w.r.t client-side vs server-side metrics (#1470).
  • Slightly improved data-types.md (#1474).
  • Updated docs on permit_dc_failover (#1489).
  • Updated dead link in duration.md (#1516).
  • Documented best practice: prepare statements once, execute multiple times (#1524).
  • Documented DefaultPolicy replica shuffling (#1547).
  • Removed multilingual option for md book (#1478).

CI / developer tool improvements:

  • :warning: Employed Nextest for running tests. Warning: using cargo test is now discouraged in favor of using nextest. Behaviors of the two may diverge, and cargo test could possibly even break in the future (#1568).
  • Migrated docs to uv (#1528).
  • Fix flaky test_schema_await_with_unreachable_node (#1471).
  • Added test for RequiredHostAbsent error (#1475).
  • Added CCM TLS tests, replacing TLS workflow (#1482).
  • Increased test_pager_timeouts timeouts to prevent flakiness (#1484).
  • Small fixes/improvements to ccm lib. Apart from small fixes, this adds node decommission capability (#1501).
  • Changed defaults for SCYLLA_URI* env variables to make running tests much easier (#1555).
  • Fixed flakiness of schema agreement tests: (#1565).
  • Silenced warnings for uninhabited types (#1507).

Others:

  • Updated docs dependencies (#1490).
  • Added .DS_Store to .gitignore (#1493).

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
122 Karol Baryła
48 Wojciech Przytuła
5 Stanisław Czech
4 dependabot[bot]
3 Mikołaj Uzarski
3 Yaniv Kaul
2 Piotr Dulikowski
2 copilot-swe-agent[bot]
1 Andres Medina