Skip to content

Releases: scylladb/scylla-rust-driver

Release 1.1.0

03 Apr 13:12
Compare
Choose a tag to compare

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

Some interesting statistics:

  • over 3.430k downloads on crates!
  • over 623 GitHub stars!

Changes

New features / enhancements:

  • Enabled configurable server-side timeout for metadata queries. As a result, users that tighten their general server-side timeouts will no longer suffer from metadata queries timing out (because now they have longer timeouts specified by default). #1171
  • Added function to deserialize CloudConfig from any Reader. #1183
  • Relaxed Sized requirement in SerializeRow implementation for Box. The constraint was implicit and unnecessary. #1277
  • Made coalescing delay configurable. Now, it's also possible to set the delay to any number of milliseconds, which may speed up throughput-bound use cases. #1297
  • Made bind address for driver's local sockets configurable. #1300
  • Made bind port range for driver's driver's local sockets configurable. #1303

Bug fixes:

  • Added missing fields in Session's Debug implementation. #1301
  • Fixed nodes info to include zero-token nodes (they were missing from ClusterState::get_nodes_info()). #1308
  • ⚠️ Altered default load balancing policy's logic so that datacenter failover is NOT inhibited by local Consistency or SerialConsistency. This inhibition was a behaviour that no other driver exhibited, and it caused unintuitive empty query plans. #1312

API cleanups / better types:

  • Made entities around Partitioner pub again, as they showed to be required by, among others, cql-stress. The traits were sealed to prevent adding implementations by downstream crates. #1298

Internal API cleanups/refactors:

  • Elided needless clone upon Session creation. #1306

Documentation:

  • Renamed remaining occurrences of Query to Statement (those that were accidentally omitted before 1.0.0). #1278
  • Fixed error returned by Session::await_schema_agreement (we had forgot to update docs when the change was done). #1283
  • Fixed broken links in derive macro docs. #1292
  • Updated maintenance procedures for after 1.0.0 was released. #1302
  • Updated documentation theme to 1.8.6. #1305
  • Added --no-merges option to git shortlog used for count commits per author for each release. We decided that merge commits should not count as meaningful impact on the driver. #1311

CI / developer tool improvements:

  • Reduced CI running time by various optimisations (caching, removing redundant steps, avoiding actual build in favour of cargo check, etc.). #1274
  • Sped up Cassandra cluster setup in CI. #1276
  • Moved tests contained in session_test.rs, which require running ScyllaDB cluster, from library (unit) tests to integration tests. This is another step on the path to make unit tests runnable without a set up cluster. (#1291)
  • clippy was appeased again #1309.

Others:

  • Disabled tablets in tests involving materialized views, as the ScyllaDB version available at the time (scylla-2025.1.0) does not support tablets + materialized views combination. #1304

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
22 Karol Baryła
18 Mikołaj Uzarski
18 Wojciech Przytuła
4 Roman Hargrave
1 Collin Styles
1 Vartan Babayan
1 dependabot[bot]

v1.0.0

04 Mar 17:23
Compare
Choose a tag to compare

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

Some interesting statistics:

  • over 3.162k downloads on crates!
  • over 612 GitHub stars!

Stabilization

1.0 has a special meaning for Rust crates - it means that the crate is considered "API-stable" - however there is no specific definition of what it means to be "API-stable".
So what does it mean to us, and why did we release this version?
Up until now, we introduced breaking changes whenever we felt we could improve the API this way (sometimes we kept the old API for a bit, and provided a migration guide). This caused the vast majority of our releases to have to bump the major version number - we didn't reach minor version greater than "2" for a few years now. This is not a great situation for our users, because it means it is basically never possible to update the driver without adjusting their codebases.
At the same time we know that we can't (and don't want to) freeze the API forever - there are still many improvements we can make, and the databases (Scylla / Cassandra) are always changing, which sometimes requires breaking changes on our part (an example of this is Tablets feature in Scylla, which required us to change our load balancing APIs). This means we won't stay on 1.x forever.
We decided to stabilize the API by providing a guarantee regarding how long a breaking change won't occur, which will allows users to better allocate time for dealing with breakage. For the 1.0, we won't release 2.0 earlier than 9 months after 1.0 (but we may release it later). Until then we will release minor (1.x) versions. In 1.x versions we may of course introduce new APIs, and deprecate old ones, but there will be no breaking changes.
Two exceptions that may force us to release major versions quicker are:

  • urgent security issues
  • changes in Scylla / Cassandra that have to be supported by driver quickly and there is no way to implement them without a major version bump.

After releasing new major version (e.g. 2.0) we will continue to provide bugfixes (but no new features) for the previous major version (e.g. 1.0). The exact duration of such bugfix support will be provided after the new major version is released.

Additionally, 1.0 release signifies that we view the driver as production ready. It has been for a long time now, but the 0.x version number may have been suggesting otherwise to some people, and we don't want to send mixed signals.

Changes

New features / enhancements:

  • ⚠️ [API-breaking] Support for Rustls as a TLS provider was added. With this change you can connect to Scylla with TLS without having additional system C libraries installed! (#1254)
  • Added Timestamp Generators. This is a user-customizable way of generating client-side timestamps for requests. (#1128)
  • ⚠️ [API-breaking] Driver metrics performance was improved. Previously they used Mutex internally, causing performance problems because of contention. Now AtomicHistogram is used to avoid this problem. Additionally, metrics are now guarded by metrics feature, so that the users who don't need them don't have to pay the performance cost and introduce additional dependency. (#1263)
  • Borrowed versions of CqlVarint and CqlDecimal were added. (#1148)
  • ⚠️ [API-breaking] In metadata, MissingUserDefinedType is no longer part of CqlType::UserDefinedType. Now, in case of this (and some other errors) the metadata fetch for given keyspace will be aborted (and warning printed), returning previous version of this keyspace if possible. (#1162)
  • Metadata fetching now verifies that partition key and clustering key indexes have no holes. Thanks to that the users now have guarantee that column names from Table::partition_key and Table::clustering_key are present in Table::columns. If this is not the case, fetch is failed only for this keyspace, as above. (#1252)
  • ⚠️ [API-breaking] Node::is_down was made private, instead new method Node::is_connected was introduced. The old method has very misleading semantics. The new one tells if there are currently any driver connections opened to given node. (#1196)
  • ⚠️ [API-breaking] Added partial Vector support. Driver can now correctly fetch metadata of tables with vector columns. Serializing / deserializing vector values will be added after 1.0. (#1020)
  • Display was implemented for CqlValue. (#1257)
  • ⚠️ [API-breaking] rand dependency was updated to 0.9.0. This is a breaking change, because a trait from rand appears in ReplicaSet::choose_filtered method. (#1255)
  • Made all internal queries to system.local table use WHERE key='local' which should be a minor performance improvement. (#1245)
  • Implemented Debug for MaybeUnset. (#1199)

Bug fixes:

  • Debug implementation on CachingSession was not usable due to unsatisfiable bounds. (#1161)
  • ⚠️ [API-breaking] Our derive macros were not fully hygienic. This was discovered when migrating the hygiene test to new ser/deser frameworks. Issue was fixed, test was migrated and extended to cover more scenarios. Fixing hygiene required moving some modules in scylla-cql, so the change is breaking - but it should not affect users. (#1176)

API cleanups / better types:

  • ⚠️ [API-breaking] Most of the driver module structure was reworked. Before most of the files were put in the non-descriptive "transport" module. Now our top-level modules are much more clear: authentication, client, cluster, network, observability, policies, response, routing, statement, utils. Some structs and method were also renamed as part of this effort. Unfortunately, this is a big change that will require users of our driver to update most of their use statements. (#1163, #1187)
  • ⚠️ [API-breaking] CqlType was removed, and ColumnType is used in its place. To make this possible, ColumnType was heavily modified. (#1166)
  • ⚠️ [API-breaking] Errors refactor, started a few versions ago, was finished. Credits to @muzarski for this incredible work. (#1204, #1200, #1191, #1194, #1193, #1201, #1192, #1185, #1180, #1170, #1181, #1160, #1159, #1157, #1168)
  • ⚠️ [API-breaking] Old serialization and deserialization frameworks were fully removed, after being deprecated in previous version of the driver. (#1184)
  • ⚠️ [API-breaking] After legacy APIs were removed it became clear that module structure of scylla-cql has a lot of problems. Many of them were addressed, which of course is a very breaking change. (#1198)
  • ⚠️ [API-breaking] APIs related to TLS were refactored when adding support for Rustls. This will enable us to add further providers in the future without breaking backwards compatibility. (#1254)
  • ⚠️ [API-breaking] Query was renamed to Statement. (#1250)
  • ⚠️ [API-breaking] Removed SerializedValues from public API of scylla crate. Functions using it were either changed to using &dyn SerializeRow or deemed unnecessary and removed from the public API. Error types of ClusterState token calculation APIs were changed as part of this. (#1252)
  • ColumnSpecView and TableSpecView were removed. ColumnSpecs received a second lifetime. PreparedStatement::get_variable_col_specs and PreparedStatement::get_result_set_col_specs now return ColumnSpecs to make it consistent with QueryRowsResult and QueryPager. (#1249)
  • ⚠️ [API-breaking] Low-level partition APIs were made private. `Prepar...
Read more

v0.15.1

11 Dec 17:15
Compare
Choose a tag to compare

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

Some interesting statistics:

  • over 2.692k downloads on crates!
  • over 590 GitHub stars!

Changes by category:

New features / enhancements:

  • Migrated tablets to the new deserialization framework (#1120).
  • Added automatically_derived attribute to impls auto-generated by derive macros (#1145).
  • Made fields of ConnectionSetupRequestError public (#1131).

Bug fixes:

  • Allowed serialization of columns/fields that are not valid Rust identifiers (#1137).
  • Fixed bug that occured when preparing batch statements targetting multiple tables (#1135).
  • Fixed bug that when there were fewer batch statements than batch values provided, session.batch() would silently drop extra values (#1142).

API cleanups / better types:

  • Deprecated remnants of the legacy framework and items belonging to the legacy serialization framework (#1141).
  • Removed uses of the legacy SerializedValuesError (#1149).

Documentation:

  • Updated the docs about time types to reflect the new name of the feature flag (chrono -> chrono-04) (#1123, #1110).

CI / developer tool improvements:

  • Moved most of tests that require a running cluster to integration tests (#1102).
  • Attempted to combat "group 0 concurrent modification" error in CI by sending DDL changes always to the same node (#1127).
  • clippy was appeased again (#1136).

Others:

  • Implemented QueryRowsResult::into_inner behind cpp_rust_unstable cfg for use in cpp-rust-driver (#1133).
  • Removed unnecessary clone in PoolRefiller::use_keyspace (#1143).

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!

v0.15.0

14 Nov 16:48
Compare
Choose a tag to compare

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

Some interesting statistics:

  • over 2.516k downloads on crates!
  • over 583 GitHub stars!

Changes

Beginning with this release, instead of putting all API-breaking changes into one group, now they are in the proper categories, but labeled as ⚠️ [API-breaking].

Main changes:

New deserialization API

The main change in this release is the deserialization API refactor. Its primary goal was to reduce overhead caused by all rows being eagerly deserialized to type-erased CqlValue type, only then being converted to end user types.
Old traits and structs (FromCqlVal, FromRow, QueryResult - renamed to LegacyQueryResult, RowIterator - renamed to LegacyRowIterator, TypedRowIterator - renamed to LegacyTypedRowIterator) are replaced by new ones (DeserializeValue, DeserializeRow, new QueryResult, QueryPager, TypedRowStream). There are wrappers and helper implementations provided, designed to aid in gradually migrating to new API - see the migration guide in the book for more information. Old traits and structs will be removed in one of future versions.

New serialization API has a benefit of increased efficiency - now, rows are deserialized straight to the end user type, without any copying and allocations on the way.
Another feature is the ability to deserialize rows to borrowed types (e.g. &str or &[u8]).
And the result metadata is now deserialized in the borrowed form, saving even more allocations.

The refactor included:

  • ⚠️ [API-breaking] Parametrized Deserialize{Value,Row} with two lifetimes: 'frame and 'metadata separately (#1101).
  • ⚠️ [API-breaking] The deserialization refactor was finished (#1088, #1107, #1109, #1093, #1057, #1120, #1118, #1122, #1121).
  • ⚠️ [API-breaking] Unified macro attributes' syntax and semantics between serialization and deserialization derive macros (#1119).

Other changes by category:

New features / enhancements:

  • ⚠️ [API-breaking] Made ResultMetadata lifetime-generic, which paved a path to deserializing metadata in a borrowed way as an optimisation to save allocations (#1082).
  • Exported serialization migration macros that accidentally hadn't been exported before (#1089).
  • Exposed public getters to type-erased errors (#1087).
  • Trace message is now issued upon successful keepalive (#1092).
  • Added SerializeRow impl for Box<T: SerializeRow> (#1105).
  • Exposed public getters for execution profile configuration (#1104).
  • Allowed public access to the profile associated with an execution profile handle (#1112).

Bug fixes:

  • ⚠️ [API-breaking] Fixed driver's logic that bases on error variants returned from query execution (#1075).
  • Fixed possible panic in speculative execution (#1086)
  • ⚠️ [API-breaking] Disallowed deserializing Counter type to plain i64 for type safety (#1106).
  • Fixed logic about ignoring particular error kinds if speculative execution failed (#1124).

API cleanups / better types:

  • ⚠️ [API-breaking] 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.16. (#1067, #1074, #1054, #1080, #1080, #1117).
  • Removed wildcard re-exports of the serialization framework's entities (#1090).
  • ⚠️ [API-breaking] Made RetryPolicy stored behind Arc instead of Box (#1103).

Internal API cleanups/refactors:

  • Removed paging state parameter from unpaged raw Connection's API (#1084).
  • ⚠️ [API-breaking] Fixed unnameable types in our codebase (by making them exposed, unexposing them or deleting them at all) and enabled the unnameable_types clippy lint to prevent having such situation in the future (#1094).
  • Tiny optimizations and code refactors (#1108).

Documentation:

CI / developer tool improvements:

  • clippy was appeased again (#1072, #1077, #1095).
  • Pinned Rust version in book.yml CI workflow (#1096).

Others:

  • Rewritten RELEASE.md, so that it now contains up-to-date guide about maintaining and releasing the driver (#1076).
  • Bumped MSRV to 1.70 (#1098).
  • Added an example showing Counter UPDATE (#1100).

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
154 Mikołaj Uzarski
89 Wojciech Przytuła
45 Karol Baryła
26 Piotr Dulikowski
3 David Garcia
1 Daniel Boll
1 Alex Pozhylenkov

v0.14.0

05 Sep 11:56
Compare
Choose a tag to compare

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

v0.13.2

22 Aug 15:35
Compare
Choose a tag to compare

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

Some interesting statistics:

  • over 2,080k downloads on crates!
  • over 554 GitHub stars!

Changes

Bug fixes:

  • Made driver issue a warning and continue instead of failing if an invalid peer is encountered in system tables (#1045)
  • Fixed bug that paged queries would be broken when the recently introduced use_cached_metadata flag was set on a PreparedStatement(#1063)

Documentation:

  • Documented DefaultPolicy (Load Balancing) with a lot of comments intended for developers to understand its logic easier (#1062)

CI / developer tool improvements:

  • Appeased Clippy again (#1046)
  • Turned tablets off for Counter tests, as tablets do not support Counters yet (#1060)
  • Added scylla_cloud_tests to cfg allowlist (after such allowlist was made mandatory) (#1049)
  • Fixed semver-checks failure after its unexpected breaking update (#1050, #1051)

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!

v0.13.1

11 Jul 17:23
Compare
Choose a tag to compare

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

Some interesting statistics:

  • over 1,905k downloads on crates!
  • over 545 GitHub stars!

Changes

Bug fixes:

  • Made log logger work with the driver again (#992)
  • Fixed bug that Batches would be always sent as LOGGED if they contain any unprepared statement (Query) (#1038)
  • Fixed two efficiency-related bugs in default load balancing policy (#1037)

Documentation:

  • Documented logging with tracing and log libraries and provided an example (#992)

CI / developer tool improvements:

  • Silenced mock structs unused warning (#996)
  • Appeased Clippy again (#1002 and #1013)
  • Turned tablets off for LWT tests, as tablets do not support LWT yet (d20aed54)
  • Made LWT tests ignored when testing with tablets, as tablets do not support LWT yet (2bd45560)

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!

v0.13.0

09 May 16:07
Compare
Choose a tag to compare

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

Some interesting statistics:

  • over 1,615k downloads on crates!
  • over 520 GitHub stars!

Changes

API cleanups / breaking changes:

  • Implemented support for Tablets, a new major architectural feature of Scylla that will be a part of upcoming 6.0 release. This support is required for token (and shard) awareness to work with Tablet-based tables. You can read more about Tablets in a blogpost by Tomasz Grabiec or watch a presentation by Avi Kivity (#937)
  • Enabled shard-selecting load balancing. Before, a LoadBalancingPolicy would return a Plan consisting of Nodes;
    now, together with a Node it can optionally specify the Shard to contact as well. This is crucial for proper Tablets support (see above). Main PR #944, with follow up #969
  • Token: added constructor and normalization to increase type-safety (#948)
  • Removed another unstable dependency, histogram::Histogram, from public API (#935)
  • Implemented CQL protocol-level optimisation: prepared statement result metadata can be now used to decode rows. This saves network bandwidth if that option is enabled, because result metadata need not be sent with each DB query result. (#925)
  • Removed num_enum dependency. It was unstable, and we managed to do without it, so it no longer appears in the public API. (#931)
  • Decreased pub visibility of scylla-cql definitions which weren't intended for access from outside the driver. (#933)

New features / enhancements:

  • Improved the FromRow derive macro to suppport structs with unnamed fields. Before, only structs with named fields were supported. (#985)
  • testing: Increased timeout for fetching tracing info - Cassandra was so slow in tests that our CI used to fail sometimes... (#966)
  • Removed strum and strum_macros dependencies. They were unstable, and we managed to do without it. (#934)

Documentation:

  • Got rid of (most) uses of QueryResult::rows. The preferred method is the more type safe QueryResult::rows_typed. Moreover, QueryResult::rows is going to be deprecated in the next release, once the new lazy deserialization framework is introduced. We thus recommend switching to rows_typed wherever possible. (#955)

CI / developer tool improvements:

  • Removed unreachable pubs (#958)
  • Dealed with chrono deprecations (#951)
  • CI: run cargo clean before tests (#929)
  • CI: small fixes in semver checks (#942)
  • CI: semver_checks now edits its comment instead of posting new one, so that the PR wall is less cluttered. (#952)
  • CI: Tracing output is now shown for a test iff the test failed. This is a major aid in debugging in CI. (#959)
  • Reverted "CI/Makefile: disable uninlined_format_args clippy lint", as rust-analyzer now properly supports semantic analysis of such format args. (#945)
  • Appeased Clippy again (#971)

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
40 Karol Baryła
24 Mikołaj Uzarski
10 Wojciech Przytuła
1 Piotr Dulikowski
1 Piotr Grabowski

v0.12.0

02 Feb 16:50
Compare
Choose a tag to compare

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

v0.11.1

21 Dec 22:06
Compare
Choose a tag to compare

Due to our mistake, crate scylla-macros 0.2.2 contained a breaking change, while only being a minor version bump.
This resulted in the driver breaking for some existing projects that use version 0.10.x.
You can find more detailed explanation here: #891

To solve this situation:

  • scylla-macros 0.3.0 was released identical to 0.2.2 and 0.2.2 was yanked.
  • scylla-cql 0.0.11 was released, the only changed from 0.0.10 is scylla-macros dependency bumped to 0.3.0.
  • scylla 0.11.1 was released, the only change from 0.11.0 is updating the scylla-cql and scylla-macros dependencies. 0.11.0 was yanked.

Additionally, we published scylla-macros 0.2.3, equivalent to 0.2.1, to minimize breakage in existing projects.