v0.14.0
The ScyllaDB team is pleased to announce ScyllaDB Rust Driver 0.14.0,
an asynchronous CQL driver for Rust, optimized for Scylla, but also compatible with Apache Cassandra!
Some interesting statistics:
- over 2.103k downloads on crates!
- over 556 GitHub stars!
Changes
API cleanups / breaking changes:
- Our session & paging API was revamped so that it is more intuitive and robust. Now the type of the query (paged / unpaged) is tied to the method used to execute it (
execute_unpaged
/execute_single_page
/execute_iter
) rather than the page size associated with the statement object. Other changes include (#1061):- Introduced strongly typed paging state instead of using
Bytes
. - Paging state is explicitly returned from
execute_single_page
instead of being a field inQueryResult
. - Made
page_size
on the statements mandatory and providing the default value. - Updated our docs and examples to point users towards paged queries and explaining the issues with unpaged SELECTs. (#1069, #1068)
- Introduced strongly typed paging state instead of using
- Trait
SerializeCql
was renamed toSerializeValue
because old name turned out to be confusing for users. (#1000) - Features
chrono
,time
andsecret
were renamed tochrono-04
,time-03
andsecrecy-08
to allow us to support new major versions of those libraries in the future. (#939) - Some of our error types were restructured to be more strongly typed (instead of just containing a string) and better reflect the conditions that they appear in. This work will be continued in 0.15. (#1017, #1026)
QueryResult.col_specs
was changed from being a field to a method in order to allow sharing it withPreparedStatement
. (#1065)- Moved
ResultMetadata.paging_state
field toRows.paging_state_response
. This is because paging state is something that changes on each paged request and should not be cached byPreparedStatement
. (#1065) - Some parts of our upcoming deserialization refactor were merged, resulting in very minor breaking changes in our error types. The rest of deserialization refactor is planned for 0.15. (#970, #1004, #1024, #1065)
New features / enhancements:
- Values that driver sends to server to identify itself in
STARTUP
message (DRIVER_NAME
,DRIVER_VERSION
) can now be configured using newSelfIdentity
API inSessionBuilder
. (#1039) - Replaced some
.unwrap()
s with.expect()
s in the code generated by our derive macros. This is done to avoid angeringunwrap_used
clippy lint and to provide better error messages if those panics are ever triggered. (#1055)
#1019
Documentation:
- Documentation about using timeuuid type was improved. (#980)
- Improved documentation about
PreparedStatement
. (#986) - Updated Scylla Sphinx theme to version 1.7. (#994)
- Added support for building documentation on Mac. (#927)
CI / developer tool improvements:
- #1011 fixed some issue with tests and CI:
- CI now prints versions of used Rust tools so we don't have to wonder what version is running on Github Actions runners again.
- Disabled tablets in tests that use LWT because Scylla doesn't support it yet, and other minor tablet-related changes.
- Restricted Tokio version because of regression when
[tokio::test]
is used with[ntest::timeout]
- #1019 removed aforementioned Tokio version bounds after regression was fixed there.
- Clippy lints that were previously skipped in two places are enabled again because Darling crate that was triggering them was fixed. (#1036)
Others:
- Updated maintainers list in
CONTRIBUTING.md
. (#997)
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 |
---|---|
163 | Wojciech Przytuła |
55 | Mikołaj Uzarski |
17 | Karol Baryła |
3 | David Garcia |
2 | Lucas Kent |
2 | Piotr Dulikowski |
1 | Daniel Reis |
1 | Dmitry Kropachev |
1 | Kailokk |