The ScyllaDB team is pleased to announce ScyllaDB Rust Driver 1.8.0,
an asynchronous CQL driver for Rust, optimized for ScyllaDB, but also compatible with Apache Cassandra!
Some interesting statistics:
- over 8.1M downloads on crates.io!
- over 682 GitHub stars!
Changes
New features / enhancements:
QueryPager(used bySession::execute_iterandSession::query_iter) was optimized for single-page queries. Now it only starts atokio::taskif there is more than one page (#1739).QueryPagernow treats each page as a fully separate request: new execution plan is produced for each page, downgraded consistency is reset. Driver still tries to stick to the same coordinator for subsequent pages: the first element of the plan for the next page will be the coordinator of the previous page (#1739).QueryPager(used bySession::execute_iterandSession::query_iter) now supports Speculative Execution (#1783).- Internal metadata fetching procedures were greatly improved, dropping many unnecessary false dependencies between internal driver tasks, which should improve the delay of some of them (#1792, #1823, #1835).
- Metadata fetching now supports client-side timeouts (#1837).
- Driver will now temporarily stop using shard-aware port on shard mismatch (indicating NAT usage) (#1804).
- On STATUS_CHANGE DOWN event a keepalive is now immediately requested on connection to the affected node (#1806).
- Driver now correctly resolves DNS names to multiple IP addresses, both v4 and v6 (#1805).
Client Routesfeature now choose an IP randomly for each connection if DNS resolves to multiple IPs (#1805).CqlTimestampnow implementsOrdandHash(#1834).- A new crate
scylla-ccm-bridgeis extracted for reuse in different projects (#1810). - Driver can now be configured to fetch only the minimal subset of metadata that doesn’t break token-awareness (#1815).
Keyspacestruct now has a newtabletsfield, indicating if the keyspace is vnode- or tablet-based. This info fetched from system tables and used by the driver for more precise routing (#1720).- Added new metrics accessors that properly distinguish between unpaged, manually paged and automatically paged requests (#1775).
- Bugs in our examples are fixed, some examples are restructured. Examples now run in CI to keep them working (#1813).
RetrySessionis now created lazily when needed, to save an allocation on the hot path (#1833).
Bug fixes:
- Fixed a deadlock happening when driver was flooded with CQL events during metadata refresh (#1835).
- Tablet-awareness now correctly works with materialized views (#1778).
- Out-of-range shard ids in ShardingInfo are now correctly rejected (#1712).
- Shard set in Coordinator is now set to the real shard from Connection, not the shard requested by LBP (#1765).
- Fix bug in
Metrics::get_latency_percentile_msthat caused it to return completely wrong value (#1749). - Scylla with
enable_shard_aware_drivers: falseis now recognized as Scylla, not Cassandra (#1719). Client Routes: non-sticky routes are now correctly overwritten on updates (#1822).RequestInfopassed toRetrySessionnow gets current (so potentially downgraded) consistency, instead of the original consistency (#1758, #1770).- Fixed trace span not being finalized when RetrySession issues a
IgnoreWriteErrordecision (#1761).
Internal refactors:
- Internal request execution paths were deduplicated into a common module. Now all variants (unpaged, QueryPager, ControlConnection) use the same logic to handle retries, tracing, speculative execution, query history, and other mechanism (#1774, #1783, #1786, #1789, #1830, #1751).
- Reduced
cfgsprawl frommetricsfeature across the codebase (#1750). - Return client routes in Metadata instead of applying them in ControlConnection (#1820).
- Fixed issues pointed out by Clippy after its 1.97 release (#1779).
- Removed unused dependencies from
scylla-proxy(#1744). CqlTimeuuid::lsb_signedis now properly documented.Timeuuidordering test is hardened (#1766).- Various small fixes related to unification of execution paths (#1770).
Documentation:
- Updated dependencies of documentation (#1724).
- Bumped sphinx-scylladb-theme from 1.9.2 to 1.9.3 (#1791).
CI / tests / developer tool improvements:
- Added Valgrind-based benchmarks, running in CI to catch regressions (#1780).
- Renovate was configured to keep our dependencies up to date (#1753, #1812, #1746, #1740).
- Updated Scylla version used in tests to v2026.2.3 (#1826).
- Speed up vector type integration test by running subtests concurrently (#1759).
- Speed up vector type integration test by using a single table for all subtests (#1760).
- Unified handling of Scylla versions between tests categories (#1821).
- Vastly expanded and improved our Tablets tests (#1777).
- Cleanly handle startup failures in
Client Routestest utils (#1795). - Connection: changed
#[expect(deprecated)]to#[allow(deprecated)]onset_lingerbecause older Tokio verions don’t mark is as deprecated (#1787). - Remove misleading comment in test (#1808).
Dependencies:
- Updated scylladb/github-automation action multiple times (#1743, #1747, #1752, #1754, #1755, #1757, #1768, #1773, #1797, #1800, #1807).
- Updated actions-rust-lang/setup-rust-toolchain action to v1.16.1 (#1825).
- Updated taiki-e/install-action action to v2.77.0 (#1798, #1802, #1803).
- Updated Rust crate criterion to 0.8 (#1722).
- Updated Rust crate darling to 0.24.0 (#1725, #1811).
- Updated Rust crate hashbrown to 0.17 (#1726).
- Updated Rust crate itertools to 0.15.0 (#1727).
- Updated Rust crate socket2 to 0.6.0 (#1735).
- Updated Rust crate syn to v3 (#1796, #1811, #1827).
- Updated Rust crate lz4_flex to 0.14.0 (#1728, #1785).
- Updated histogram to 1.0 (#1748).
Others:
- Added public methods required for python-rs driver (#1771, #1790).
- Conditionally published APIs for C# RS Driver (#1717).
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 |
|---|---|
| 116 | Karol Baryła |
| 112 | Wojciech Przytuła |
| 25 | renovate[bot] |
| 19 | Patrycja Ziemkiewicz |
| 2 | Dawid Pawlik |
| 2 | Floze |
| 2 | phalat |
| 2 | Paulina Czajkowska |
| 1 | Anna Stuchlik |
| 1 | Photon101 |
| 1 | Vismay |
| 1 | dependabot[bot] |