[RELEASE] ScyllaDB CPP-over-Rust Driver 0.2.0

The ScyllaDB team is pleased to announce ScyllaDB CPP Rust Driver 0.2.0, an API-compatible rewrite of GitHub - scylladb/cpp-driver: Scylla C/C++ 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