Skip to content

v0.14.0

Latest
Compare
Choose a tag to compare
@Lorak-mmk Lorak-mmk released this 05 Sep 11:56
· 112 commits to main since this release

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 in QueryResult.
    • 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)
  • Trait SerializeCql was renamed to SerializeValue because old name turned out to be confusing for users. (#1000)
  • Features chrono, time and secret were renamed to chrono-04, time-03 and secrecy-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 with PreparedStatement. (#1065)
  • Moved ResultMetadata.paging_state field to Rows.paging_state_response. This is because paging state is something that changes on each paged request and should not be cached by PreparedStatement. (#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 new SelfIdentity API in SessionBuilder. (#1039)
  • Replaced some .unwrap()s with .expect()s in the code generated by our derive macros. This is done to avoid angering unwrap_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:

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