Skip to content

Releases: scylladb/cpp-rust-driver

v0.4.0

14 Apr 16:21
Compare
Choose a tag to compare

The ScyllaDB team is pleased to announce ScyllaDB CPP Rust Driver 0.4.0, an API-compatible rewrite of https://github.com/scylladb/cpp-driver as a wrapper for the Rust driver. It will fully replace the CPP driver, which is already reaching its End of Life.

We are also happy to announce, that starting from this release, the driver version can be considered Beta:

  1. Safety refactor hardened FFI API and detected some critical bugs - this increased our confidence in the quality of the driver.
  2. Key features are already implemented and tested.
  3. The underlying rust-driver version is stable and breaking changes are not expected anytime soon.

Some minor features still need to be included. See Limitations section in README.md.

The underlying Rust driver used version: 1.1.0.

Changes

Implemented API functions:

  • Schema metadata:
    • cass_table_meta_column (#228)
  • CassIterator:
    • cass_iterator_type (#230)
  • CassValue:
    • cass_value_get_bytes - extended the support for remaining CQL types. (#236)

New features / enhancements

  • Bumped underlying rust-driver version to 1.1.0. (#237)
  • Safety refactor - implemented an API which ensures safe pointer manipulation. This enforces the safety on the type level - most critical bugs should now be discovered at compile time. (#207, #225, #226, #208)
  • Lazy deserialization refactor - rows and values are now lazily deserialized to the specific type - only when requested. This allowed us to reduce the number of allocations on a hot path and properly implement cass_value_get_bytes method. (#213, #236)
  • Enabled caching result metadata optimization for prepared statements on rust-driver side by default. (#210)

Bug fixes:

  • Fixed by-name parameter binding, so the logic is consistent with cpp-driver. (#187)
  • Thanks to new FFI API, we found and fixed few bug fixes related to raw pointer manipulation. (#229)

CI / developer tool improvements:

  • Enabled NamedParametersTests suite and introduced new test cases to the suite. (#187)
  • Addressed clippy lints (#211, #218)
  • Added lib to crate-type list in Cargo.toml. This is to enable the doctests during CI. (#227)
  • Enabled unsafe-op-in-unsafe-fn compiler lint. (#232)
  • Bumped minimum cmake version to 3.15 (#233)
  • Started building packages for Fedora 41. (#247)
  • Started installing valgrind using apt instead of snap. (#248)
  • Updated Cargo.lock file to build the library with latest dependencies. (#250)
  • Bumped Rust edition to 2024. (#251)

Documentation:

  • Bumped sphinx-scylladb-theme version multiple times (current version is 1.8.6). (#217, #219, #234)

Others:

  • Replaced lazy_static usages with LazyLock, which was stabilized in Rust 1.80. Removed lazy_static dependency altogether. (#212)
  • Added WHERE key='local' clause to all queries to system.local table. (#221)
  • Updated README.md. (#246)

Congrats to all contributors and thanks everyone for using our driver!


The source code of the driver can be found 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
90 Mikołaj Uzarski
4 Karol Baryła
3 dependabot[bot]
1 Dmitry Kropachev
1 Wojciech Przytuła

v0.3.0

27 Nov 13:08
Compare
Choose a tag to compare

The ScyllaDB team is pleased to announce ScyllaDB CPP Rust Driver 0.3.0, an API-compatible rewrite of https://github.com/scylladb/cpp-driver as a wrapper for the Rust driver. It will fully replace the CPP driver, which is already reaching its End of Life.
The current driver version should be considered Alpha.

Some minor features still need to be included. See Limitations section in README.md.

The underlying Rust driver used version: 0.15.0.

Currently, the cpp-rust-driver does not fully utilize lazy deserialization mechanism introduced in rust-driver 0.15.0. The support for lazy deserialization, and all features
that depend on it are going to be introduced in some future release.

Changes

Starting from this release, features that are not part of original cpp-driver, but are implemented in cpp-rust-driver as an extension to original API, will be labeled as 🚀 [Extension].

Implemented API functions:

  • CassPrepared: (#185)
    • cass_prepared_parameter_name
    • cass_prepared_parameter_data_type
    • cass_prepared_parameter_data_type_by_name[_n]
  • CassResult: (#136)
    • cass_result_column_type
    • cass_result_column_data_type
  • Heartbeat/Keepalive: (#194)
    • cass_cluster_set_connection_heartbeat_interval
    • cass_cluster_set_connection_idle_timeout
  • Schema agreement: (#198)
    • cass_cluster_set_max_schema_wait_time
    • cass_cluster_set_schema_agreement_interval 🚀 [Extension]
  • Rack awareness: (#195)
    • cass_cluster_set_load_balance_rack_aware[_n]
    • cass_execution_profile_set_load_balance_rack_aware[_n]

New features / enhancements

  • Prepared statements now cache result metadata provided by the server. The metadata is NOT updated when table schema is altered. (#136, #205)

Bug fixes:

  • Fixed cass_result_first_row implementation. Previously, it would panic for RESULT:Rows response with empty rows. (#136)
  • Original cpp-driver tries to prepare an empty statement when null pointer is provided
    to cass_session_prepare. We decided to inherit this behaviour for compatibility reasons. (#194)
  • Adjusted some cluster config defaults, according to the defaults specified by cassandra.h. (#193)
  • Fixed the bug where the driver would fallthrough to default round-robin LBP for execution profiles whose LBP was not set by the user. Now, if the LBP for the execution profile is not set, the driver chooses the global LBP defined on the cluster object. (#197)
  • Fixed the bug where result metadata would be inconsistent for prepared statements when table schema was altered. (#205)

CI / developer tool improvements:

  • Adjusted to rust-driver logic, and enabled the SerialConsistencyTests suite. (#186)
  • Fixed the runner's image ubuntu version to 22.04 during CI. (#191)
  • Enabled NullStringApiArgsTest suite. (#194)
  • Added an explicit step to update apt cache during CI jobs. (#190)
  • Adjusted, and enabled 2 out of 3 tests from HeartbeatTests suite. (#202)
  • Enabled AlterDoesntUpdateColumnCount test in favor of AlterProperlyUpdatesColumnCount. It is related to the bug fix regarding prepared statement's result metadata. (#205)

Documentation:

  • Created a docs directory with a sample docs site. Work on the documentation will continue in the near future. (#134)

Others:

  • Adjusted build.rs, so bindgen generates definitions for numeric types automatically. Created modules for each source file generated by bindgen. (#188)
  • Got rid of redundant cassandra.h file in scylla-rust-wrapper. (#196)

Congrats to all contributors and thanks everyone for using our driver!


The source code of the driver can be found 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
76 Mikołaj Uzarski
3 David Garcia
2 Karol Baryła
1 Dmitry Kropachev

v0.2.0

03 Oct 15:35
Compare
Choose a tag to compare

The ScyllaDB team is pleased to announce ScyllaDB CPP Rust Driver 0.2.0, an API-compatible rewrite of https://github.com/scylladb/cpp-driver as a wrapper for the Rust driver. It will fully replace the CPP driver, which is already reaching its End of Life.
The current driver version should be considered Alpha.

Some minor features still need to be included. See Limitations section in README.md.

The underlying Rust driver used version: 0.14.0.

Changes

Implemented API functions:

  • CassFuture:

    • cass_future_wait_timed (#147)
  • CassDataType:

    • cass_data_type_is_frozen (#141)
  • CassExecProfile:

    • cass_execution_profile_set_no_speculative_execution_policy (#150)
  • CassCluster:

    • cass_cluster_set_request_timeout (#151)
    • cass_cluster_set_tcp_keepalive (#169)
  • CassStatement:

    • cass_statement_reset_parameters (#171)
  • CassCollection: (#143)

    • cass_collection_new_from_data_type
    • cass_collection_data_type
  • Token awareness: (#170)

    • cass_cluster_set_token_aware_routing_shuffle_replicas
    • cass_execution_profile_set_token_aware_routing_shuffle_replicas
  • Client's identity: (#167)

    • cass_cluster_set_application_name[_n]
    • cass_cluster_set_application_version[_n]
    • cass_cluster_set_client_id
    • cass_session_get_client_id
  • Duration CQL type support: (#135)

    • cass_statement_bind_duration_*
    • cass_user_type_set_duration_*
    • cass_tuple_set_duration
    • cass_value_get_duration
    • cass_value_is_duration
    • cass_collection_append_duration
  • Decimal CQL type support: (#146)

    • cass_statement_bind_decimal_*
    • cass_user_type_set_decimal_*
    • cass_tuple_set_decimal
    • cass_value_get_decimal
    • cass_value_is_decimal
    • cass_collection_append_decimal
  • Misc:

    • cass_consistency_string (#165)
    • cass_write_type_string (#166)

New features / enhancements

  • Adjusted cpp-rust-driver to new serialization framework introduced in rust-driver 0.11.0. (#138, #152)
  • Bumped rust-driver dependency version to 0.14.0. (#160)
  • Introduced typechecks logic to the driver. (#143)

Bug fixes:

  • Bumped ntest dependency version to 0.9.3, so rust-analyzer is not confused for functions marked with both #[tokio::test] and #[ntest::timeout()]. (#137)
  • Adjusted default default request client timeout according to cassandra.h documentation: (#151)

CI / developer tool improvements:

  • Extended cmake file, so now it can build packages next to the regular builds. (#129)
  • Introduced top-level Makefile that can be used to mimic CI behaviour locally. (#159, #174)
  • Enabled tests against multiple Scylla/Cassandra versions in CI. (#159, #168)
  • Fixed clippy lints. (#145)
  • Fixed an issue that caused some tests against Scylla be unnecessarily skipped. (#155)
  • Removed some implemented functions from testing_unimplemented.cpp (#161)
  • Fixed and enabled ConfigTests suite. (#163)
  • Added a CI step that updates rust toolchain. (#175)
  • Adjusted integration tests logic to scylla-ccm which does not support --force flag for ccm <node> decommission command. Enabled the tests fixed due to this change. (#180)
  • Fixed and enabled ConsistencyTwoNodeClusterTests suite. (#181)
  • Introduced CI workflows responsible for verifying that package builds work as expected. (#183)
  • Extended CI by clang-format checks for integration tests directory (src). (#176)

Congrats to all contributors and thanks everyone for using our driver!


The source code of the driver can be found 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
124 Mikołaj Uzarski
17 Dmitry Kropachev
7 Karol Baryła
3 Takuya ASADA
2 Wojciech Przytuła

v0.1.0

12 Jun 08:09
Compare
Choose a tag to compare

The ScyllaDB team is pleased to announce ScyllaDB CPP Rust Driver 0.1.0, an API-compatible rewrite of https://github.com/scylladb/cpp-driver as a wrapper for the Rust driver. It will fully replace the CPP driver, which is already reaching its End of Life.
The current driver version should be considered Alpha.

Some minor features still need to be included. See Limitations section in README.md.

The underlying Rust driver used version: 40aaee6 (not any specific release at the moment).


The source code of this driver can be found here:

The source code of the Rust driver can be found here:

Contributions are most welcome!

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 very beginning of the project up until this first release:

commits author
65 Gor Stepanyan
63 Karol Baryła
62 Piotr Grabowski
52 Wojciech Przytuła
13 Piotr Dulikowski
12 Jan Ciolek
5 Michał Sala
4 Juliusz Stasiewicz
4 Takuya ASADA
2 Jan Ciołek