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_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 inCargo.toml
. This is to enable thedoctests
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 ofsnap
. (#248) - Updated
Cargo.lock
file to build the library with latest dependencies. (#250) - Bumped Rust edition to 2024. (#251)
Documentation:
Others:
- Replaced
lazy_static
usages withLazyLock
, which was stabilized in Rust 1.80. Removedlazy_static
dependency altogether. (#212) - Added
WHERE key='local'
clause to all queries tosystem.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:
- 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 |