The ScyllaDB team is pleased to announce ScyllaDB Rust Driver 1.4.0,
an asynchronous CQL driver for Rust, optimized for Scylla, but also compatible with Apache Cassandra!
Some interesting statistics:
- over 5.200k downloads on crates!
- over 650 GitHub stars!
Changes
New features / enhancements:
- Added support for Scylla’s result metadata id extension. This improves type safety (especially for
SELECT *queries), and in many cases performance (because driver won’t have to request result metadata for each request). (#1463).
Result metadata in PreparedStatementis now mutable in order to support the above extension. It was accessible to users withPreparedStatement::get_result_set_col_specs, which is now deprecated and will return initial result metadata. Useget_current_result_set_col_specsinstead (#1445).- Bumped MSRV to 1.85 (#1430).
- Thanks to the above bump, we were able to move to Rust 2024 edition (#1422).
- Pager requests (
execute_iter,query_iter) now respect client-side timeout settings, treating is as timeout for fetching a single page (#1458). DeserializeRowderive macro now supportsdefault_when_nullfield attribute (#1403).- Driver now reports the host that control connection is opened to when metadata fetch fails (#1460).
- Removed unnecessary
'staticbounds fromQueryPager::rows_streammethod (#1427).
Bug fixes:
- Fixed QueryPager panic that could happen during runtime shutdown (#1456).
- Allowed deserializing tuples with suffix of fields missing by interpreting those fields as nulls (#1453).
- Type checking in pager methods (
execute_iter,query_iter) is now performed for each page, not only the first one (#1449). - Fixed race condition that could potentially cause CachingSession to never drop statements from its cache (#1423).
- Removed panicking access to buffers in scylla-cql (#1465).
Internal cleanups/refactors:
- Use explicit matches for errors when the decision is crucial for correctness/performance (#1083).
- Request timeout improvements (#1457).
- Multiple refactors needed to support result metadata id extension:
idandlwtfields were moved to shared data ofPreparedStatement(#1442).- Data sharing between various
PreparedStatementvariants have been centralized to make reasoning about it easier (#1446). - Metadata in results is now deserialized eagerly, instead of being deserialized in
QueryResult::into_rows_result(#1461).
Documentation:
- Bumped sphinx-scylladb-theme from 1.8.7 to 1.8.8 (#1426).
- Documented features in
Cargo.toml(#1459).
CI / developer tool improvements:
- Integration tests now drop created keyspaces to not overwhelm database when running them multiple times (#1414).
- Fixed
test_default_policy_is_tablet_awarethat started to fail because of Scylla changes (#1412). - Fixed clippy 1.89 & 1.90 lints (#1428, #1437).
- Switched to using our fork of cargo-semver-checks to work around a bug in upstream (#1434).
- Made semver-checks not fail when
#[deprecated]attribute is added (#1450, #1464).
Others:
- Added an UntranslatedPeer constructor for Node.js driver (#1466).
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 |
|---|---|
| 127 | Karol Baryła |
| 24 | Wojciech Przytuła |
| 3 | Mikołaj Uzarski |
| 2 | Stanisław Czech |
| 1 | Collin Styles |
| 1 | spoorn |
| 1 | dependabot[bot] |