Releases: scylladb/cpp-rs-driver
v0.6.0
The ScyllaDB team is pleased to announce ScyllaDB CPP RS Driver 0.6.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 Beta.
Some minor features still need to be included. See Limitations section in README.md.
The underlying Rust driver used version: 4f02969823f7b07b0d6b007a11863fe4aac95821 (not yet released commit from main branch).
Changes
Big changes on our way to 1.0:
- Declared MSRV (currently 1.85) (#371).
- Updated wrapper package name to scylla-rust-wrapper (#381).
- Categorized unimplemented functions (#382).
- Rename from cpp-rust-driver to cpp-rs-driver (#370).
New features / enhancements:
- Added API to specify metadata request timeout (#353).
- Implemented
cass_cluster_set_num_threads_io(#354). - Changed default serial consistency to
LOCAL_SERIALto prevent failures when executing LWTs without specifying serial consistency explicitly (#369). - Messages are now logged upon errors (#378).
- Implemented
cass_cluster_set_host_listener_callback(#398). - Updated Rust driver to 1.3.1 (#380) and to 1.4.1 (#391).
- Implemented
cass_cluster_set_resolve_timeout(#393). - Implemented contact point shuffling (#396).
- Implemented APIs for configuring reconnect policy (#402).
Bug fixes:
- Made Rust errors conversion to
CassErrormore appropriate (#352). - Fixed panic upon runtime drop from async context (#363).
Documentation:
- Introduced docs from CPP Driver and adjust (#357).
- Fixed docs build (#367).
- Updated README.md (#372).
- Styled API reference docs (#386).
CI / developer tool improvements:
Others:
Congrats to all contributors and thanks everyone for using our driver!
The source code of the 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 last release:
| commits | author |
|---|---|
| 149 | Wojciech Przytuła |
| 12 | Karol Baryła |
| 9 | Dmitry Kropachev |
| 5 | David Garcia |
| 4 | dependabot[bot] |
v0.5.1
The ScyllaDB team is pleased to announce ScyllaDB CPP Rust Driver 0.5.1, 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 driver version shall be considered Beta.
Some minor features still need to be included. See Limitations and Unimplemented functions from cassandra.h sections in README.md.
The underlying Rust driver used version: 1.3.0.
Changes
New features / enhancements
- Bumped Rust driver dependency to 1.3.0 (#339).
Bug fixes:
- Fixed panic upon
cass_session_get_client_id()on disconnected sessions (#327). - Fixed semantics of session closing. Now,
cass_session_closewaits for all in-flight requests to complete (#328). - Fixed serial consistency handling (#330).
- Fixed bug that a wrong fixed consistency (
ONE) was set for prepared statements (#331). - Fixed driver defaults - in cluster and execution profiles (#332).
- Fixed
cass_session_freeso that it waits for session close before freeing it (#338). - Fixed panic upon calling future-related functions in callbacks (#337).
- Fixed statement/batch request timeouts (#341).
- Deleted unimplemented function stubs, so there are linker errors instead of runtime errors when such function is called by application code (#342).
- Fixed CQL TEXT and VARCHAR mapping (#344).
CI / developer tool improvements:
- Enabled more integration tests from CPP Driver (#325).
- Introduced an integration test for consistency (#343).
Documentation:
- Some fixes to README and API docs regarding (un)implemented functions (#347).
Others:
- Exposed public rust API & enabled API lints (#333).
- Fixed lints in integration testing API (#340).
- Done a bunch of minor refactors for type safety, readability and robustness (#345).
Congrats to all contributors and thanks everyone for using our driver!
The source code of the driver can be found here:
- https://github.com/scylladb/cpp-rust-driver/
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 last release:
| commits | author |
|---|---|
| 89 | Wojciech Przytuła |
| 1 | dependabot[bot] |
v0.5.0
The ScyllaDB team is pleased to announce ScyllaDB CPP Rust Driver 0.5.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 driver version shall be considered Beta.
Some minor features still need to be included. See Limitations and Unimplemented functions from cassandra.h sections in README.md.
The underlying Rust driver used version: 1.2.0.
Changes
Implemented API functions:
- Connection
- Timestamp generation (#295):
cass_timestamp_gen_server_side_newcass_timestamp_gen_monotonic_newcass_timestamp_gen_monotonic_new_with_settingscass_timestamp_gen_freecass_cluster_set_timestamp_gen
- Host filtering (#291):
cass_execution_profile_set_whitelist_filteringcass_execution_profile_set_whitelist_filtering_ncass_execution_profile_set_blacklist_filteringcass_execution_profile_set_blacklist_filtering_ncass_execution_profile_set_whitelist_dc_filteringcass_execution_profile_set_whitelist_dc_filtering_ncass_execution_profile_set_blacklist_dc_filteringcass_execution_profile_set_blacklist_dc_filtering_ncass_cluster_set_whitelist_filteringcass_cluster_set_whitelist_filtering_ncass_cluster_set_blacklist_filteringcass_cluster_set_blacklist_filtering_ncass_cluster_set_whitelist_dc_filteringcass_cluster_set_whitelist_dc_filtering_ncass_cluster_set_blacklist_dc_filteringcass_cluster_set_blacklist_dc_filtering_n
- Inspecting/enforcing coordinator (#299, #316):
cass_statement_set_hostcass_statement_set_host_ncass_statement_set_host_inetcass_statement_set_nodecass_future_coordinator
- Observability:
New features / enhancements
- Made returned errors more in line with the CPP Driver's. (#255, #297)
- When an unexpected null pointer is provided, the driver no longer panics; instead, the error is logged and returned. (#300)
- The parameters:
used_hosts_per_remote_dcandallow_remote_dcs_for_local_clof the DC-aware LBP are now properly supported. (#321)
Bug fixes:
- Fixed conversion of serial variants of
CassConsistency. Now,CassConsistencySERIAL or LOCAL_SERIAL can be used as consistency for SELECTs to make them use Paxos. (#289) - Null pointer provided to
cass_cluster_set_contact_pointsnow correctly clears the list. (#293) - Fixed errors when
-DCASS_BUILD_SHARED=OFFwas specified upon build. (#310)
CI / developer tool improvements:
- Enabled subset of
ControlConnectionTestssuite. (#255) - Adjusted and enabled
LatencyAwarePolicyTestsuite. (#256) - Enabled two tests from
MetricsTestssuite. (#280) - Enabled tests from
ExecutionProfileTestsuite. (#287, #290) integration_testing.rsis now compiled conditionally, only in the testing mode. (#288)NetworkTopologyStrategyis now used in integration tests by default. (#292)- Enabled some tests from the
ServerSideFailuresuite. (#294) - Enabled most tests from the
TimestampTestssuite. (#295) - Enabled tests from
StatementNoClusterTests,StatementTestsandServerSideFailureThreeNodeTestssuites. (#299) - Fixed rpm package build failure on fedora-40-x86_64, by updating the target to newer fedoras 41 and 42. (#311)
- Increased timestamp tolerance in
Timestampstest to combat flakiness. (#313) - Allowed clippy public API-related complaints. (#317)
- Implemented
set_record_contacted_hosts()andget_attempted_hosts_from_future()for use in integration tests. (#322) - Enabled
DcAwarePolicyTestsuite and extended it with one new test case. (#321)
Documentation:
- Updated docs' dependencies. (#286)
- Written
MAINTENANCE.md, a guide for maintainers. Currently contains information about the release process. (#306) - Documented most important CMake options in README. (#307)
- Listed all unimplemented API functions in README. (#320)
Others:
- Privatised a major part of the wrapper's API that anyway wasn't intended to be public. (#318)
Congrats to all contributors and thanks everyone for using our driver!
The source code of the driver can be found here:
- https://github.com/scylladb/cpp-rust-driver/
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 last release:
| commits | author |
|---|---|
| 113 | Mikołaj Uzarski |
| 38 | Wojciech Przytuła |
| 2 | Takuya ASADA |
| 1 | David Garcia |
v0.4.0
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:
- Safety refactor hardened FFI API and detected some critical bugs - this increased our confidence in the quality of the driver.
- Key features are already implemented and tested.
- 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_bytesmethod. (#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
NamedParametersTestssuite and introduced new test cases to the suite. (#187) - Addressed clippy lints (#211, #218)
- Added
libto crate-type list inCargo.toml. This is to enable thedoctestsduring CI. (#227) - Enabled
unsafe-op-in-unsafe-fncompiler lint. (#232) - Bumped minimum cmake version to
3.15(#233) - Started building packages for Fedora 41. (#247)
- Started installing valgrind using
aptinstead ofsnap. (#248) - Updated
Cargo.lockfile to build the library with latest dependencies. (#250) - Bumped Rust edition to 2024. (#251)
Documentation:
Others:
- Replaced
lazy_staticusages withLazyLock, which was stabilized in Rust 1.80. Removedlazy_staticdependency altogether. (#212) - Added
WHERE key='local'clause to all queries tosystem.localtable. (#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:
- https://github.com/scylladb/cpp-rust-driver/
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 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
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_namecass_prepared_parameter_data_typecass_prepared_parameter_data_type_by_name[_n]
- CassResult: (#136)
cass_result_column_typecass_result_column_data_type
- Heartbeat/Keepalive: (#194)
cass_cluster_set_connection_heartbeat_intervalcass_cluster_set_connection_idle_timeout
- Schema agreement: (#198)
cass_cluster_set_max_schema_wait_timecass_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_rowimplementation. Previously, it would panic forRESULT:Rowsresponse with empty rows. (#136) - Original cpp-driver tries to prepare an empty statement when null pointer is provided
tocass_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
SerialConsistencyTestssuite. (#186) - Fixed the runner's image ubuntu version to 22.04 during CI. (#191)
- Enabled
NullStringApiArgsTestsuite. (#194) - Added an explicit step to update apt cache during CI jobs. (#190)
- Adjusted, and enabled 2 out of 3 tests from
HeartbeatTestssuite. (#202) - Enabled
AlterDoesntUpdateColumnCounttest in favor ofAlterProperlyUpdatesColumnCount. It is related to the bug fix regarding prepared statement's result metadata. (#205)
Documentation:
- Created a
docsdirectory 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 bybindgen. (#188) - Got rid of redundant
cassandra.hfile inscylla-rust-wrapper. (#196)
Congrats to all contributors and thanks everyone for using our driver!
The source code of the driver can be found here:
- https://github.com/scylladb/cpp-rust-driver/
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 last release:
| commits | author |
|---|---|
| 76 | Mikołaj Uzarski |
| 3 | David Garcia |
| 2 | Karol Baryła |
| 1 | Dmitry Kropachev |
v0.2.0
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:
-
CassStatement:
cass_statement_reset_parameters(#171)
-
CassCollection: (#143)
cass_collection_new_from_data_typecass_collection_data_type
-
Token awareness: (#170)
cass_cluster_set_token_aware_routing_shuffle_replicascass_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_idcass_session_get_client_id
-
Duration CQL type support: (#135)
cass_statement_bind_duration_*cass_user_type_set_duration_*cass_tuple_set_durationcass_value_get_durationcass_value_is_durationcass_collection_append_duration
-
Decimal CQL type support: (#146)
cass_statement_bind_decimal_*cass_user_type_set_decimal_*cass_tuple_set_decimalcass_value_get_decimalcass_value_is_decimalcass_collection_append_decimal
-
Misc:
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
ntestdependency version to 0.9.3, sorust-analyzeris not confused for functions marked with both#[tokio::test]and#[ntest::timeout()]. (#137) - Adjusted default default request client timeout according to
cassandra.hdocumentation: (#151)
CI / developer tool improvements:
- Extended cmake file, so now it can build packages next to the regular builds. (#129)
- Introduced top-level
Makefilethat 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
ConfigTestssuite. (#163) - Added a CI step that updates rust toolchain. (#175)
- Adjusted integration tests logic to
scylla-ccmwhich does not support--forceflag forccm <node> decommission command. Enabled the tests fixed due to this change. (#180) - Fixed and enabled
ConsistencyTwoNodeClusterTestssuite. (#181) - Introduced CI workflows responsible for verifying that package builds work as expected. (#183)
- Extended CI by
clang-formatchecks 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:
- https://github.com/scylladb/cpp-rust-driver/
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 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
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 |