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:
-
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_timeoutmethod onSessionBuilder(#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).
-
Schema agreement wait (performed by
Session::await_schema_agreementand 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_unstablecfg flag to gate all unstable features (#1505). -
Implemented unstable HostListener mechanism for CPP-RS Driver (#1496).
-
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_iterandSession::query_iternow correctly handleUSE keyspacerequests (by switching keyspace on all connections) and DDL requests (by awaiting schema agreement unless disabled). (#1548).frozenflag is no longer considered when type checking upon (de)serialization (#1500).MetadataError::FetchErrornow 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
vectorof collections - extremely niche use case (#1567).
Internal cleanups/refactors:
- Brought the first batch of internal metadata fetching improvements (#1526).
- Fully-qualified call to
collect_arrayincustom_type_parser(#1494). - Fixed variable shadowing in
value_tests.rs(#1511). - Small refactor of execution methods (#1514).
- Replaced
&Stringwith&strwhere 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:
Employed Nextest for running tests. Warning: using cargo testis now discouraged in favor of using nextest. Behaviors of the two may diverge, andcargo testcould possibly even break in the future (#1568).- Migrated docs to uv (#1528).
- Fix flaky
test_schema_await_with_unreachable_node(#1471). - Added test for
RequiredHostAbsenterror (#1475). - Added CCM TLS tests, replacing TLS workflow (#1482).
- Increased
test_pager_timeoutstimeouts 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:
Congrats to all contributors and thanks everyone for using our driver!
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:
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 |