The ScyllaDB team is pleased to announce ScyllaDB CPP Rust Driver 0.4.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.
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 |