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 toSerializeRow
derive macro. The attribute is inspired and analogous to the one found inserde
#1144 - Introduced CQL Vector type full support #1165.
- Added
nil()
method forCqlTimeuuid
#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 existingIterator
’s methods instead of hand-crafted logic #1330.- Renamed
PreparedIteratorConfig
toPreparedPagerConfig
, 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 toSerializeRow
, 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()
toexpect()
, removed unnecessary lints and enabled of checking public API with Clippy #1359.
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 |
---|---|
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 |