[RELEASE] ScyllaDB Rust Driver 0.12.0

The ScyllaDB team is pleased to announce ScyllaDB Rust Driver 0.12.0,
an asynchronous CQL driver for Rust, optimized for Scylla, but also compatible with Apache Cassandra!

Some interesting statistics:

  • over 1,156k downloads on crates!
  • over 500 GitHub stars; We passed 500 stars!

Changes

API cleanups / breaking changes:

  • Introduced CqlTimeuuid type. Timeuuid CQL type now corresponds to the new type instead of Uuid. The purpose of new type is mostly providing correct semantics (matching the database) with regard to sorting / comparing / hashing (#894)
  • Public usages of num_bigint::BigInt are now hidden behind feature flag. Support for num_bigint 0.4 is added. You can enable support for chosen version using num-bigint-03 / num-bigint-04 feature flags (#902)
  • bigdecimal dependency version is bumped to 0.4. Similarly to BigInt, usages of bigdecimal are now behind feature-flag bigdecimal-04 (#922)

New features / enhancements:

  • SerializeRow and SerializeCql derive macros now support skip field attribute to skip some fields during serialization (#903)

Documentation:

  • Documentation for SerializeRow / SerializeCql derive macros is now rendered only in scylla crate. Previously it was only visible in scylla-cql due to an oversight, which made it hard to discover for users. It is not possible to render it in both crates without duplicating it in code because of rustdoc limitation (#907)
  • Examples now use different table and keyspace names so that running multiple of them on the same cluster works correctly (#846)
  • Added section discouraging use of multiple / short-lived Session objects and recommendations about sharing Session objects between threads. You can find this section in Connecting to the cluster page of book (#914)

Bug fixes:

  • Some time-related were put behind chrono feature flag instead of time feature flag (#898)
  • chrono introduced an arguably breaking change - changing values of NaiveDate::MIN/MAX. We changed our tests to nor rely on those values. If you used those values as markers / placeholders in database, you may not be able to deserialize them with new version ofchrono(#919)

CI / developer tool improvements:

  • Purpose of Cargo.lock.msrv file and ways to update this file when min_rust job are now documented in CONTRIBUTING.md (#913)
  • Building documentation using Scylla’s Sphinx tooling now uses myst parser instead of deprecated recommonmark. One improvement is markdown table support (#874)
  • Our documentation must work with Scylla’s Sphinx tooling, so it contains ToC (Table of Contents) sections that are not supported by mdbook. In order to be able to build it with mdbook we had a wrapper script that stripped those sections before calling mdbook. Now this script is replaced by preprocessor script called automatically by mdbook - so just calling mdbook commands “just works” again now (#910).
  • New Markdown parser for Sphinx parser, and our preprocessor mentioned in previous point, now support warning admonition with the following syntax (#914):
:::{warning}
text
:::
  • Fixed new clippy warnings introduced in Rust 1.75 (#900)
  • Introduced cargo-semver-checks tool to our CI to decrease the chance of releasing a breaking change after we are at 1.0 (#909)

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
31 Mikołaj Uzarski
31 Karol Baryła
13 Piotr Dulikowski
2 Oliver Bøving
1 David Garcia
1 Nick Sippl-Swezey
1 Like