-
Notifications
You must be signed in to change notification settings - Fork 110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release 0.15 #1125
Release 0.15 #1125
Conversation
Version bump commits etc. are still to be done; I opened this so that the release notes can already be reviewed. |
b20ee4b
to
98fc02a
Compare
Aha, removing the only commit by a force push auto-closes the PR. Good to know, GitHub. |
|
Could you move this section below API breaking changes and new features?
This is a breaking change, no? Shouldn't it be in the section about breaking changes? I have two idea on how to mark such items.
Second: Warning [API Breaking] Made I think I like the first one more. It would also be good to include a node about this notation as it would be different than in previous releases.
|
I could, but why? Aren't bug fixes more important than new features? |
Define important. |
7a43d46
to
f59908c
Compare
Proposed release notes:
The ScyllaDB team is pleased to announce ScyllaDB Rust Driver 0.15.0,
an asynchronous CQL driver for Rust, optimized for Scylla, but also compatible with Apache Cassandra!
Some interesting statistics:
Changes
Beginning with this release, instead of putting all API-breaking changes into one group, now they are in the proper categories, but labeled as⚠️ [API-breaking].
Main changes:
New deserialization API
The main change in this release is the deserialization API refactor. Its primary goal was to reduce overhead caused by all rows being eagerly deserialized to type-erased
CqlValue
type, only then being converted to end user types.Old traits and structs (
FromCqlVal
,FromRow
,QueryResult
- renamed toLegacyQueryResult
,RowIterator
- renamed toLegacyRowIterator
,TypedRowIterator
- renamed toLegacyTypedRowIterator
) are replaced by new ones (DeserializeValue
,DeserializeRow
, newQueryResult
,QueryPager
,TypedRowStream
). There are wrappers and helper implementations provided, designed to aid in gradually migrating to new API - see the migration guide in the book for more information. Old traits and structs will be removed in one of future versions.New serialization API has a benefit of increased efficiency - now, rows are deserialized straight to the end user type, without any copying and allocations on the way.
Another feature is the ability to deserialize rows to borrowed types (e.g.
&str
or&[u8]
).And the result metadata is now deserialized in the borrowed form, saving even more allocations.
The refactor included:
Deserialize{Value,Row}
with two lifetimes:'frame
and'metadata
separately (#1101).Other changes by category:
New features / enhancements:
ResultMetadata
lifetime-generic, which paved a path to deserializing metadata in a borrowed way as an optimisation to save allocations (#1082).SerializeRow
impl forBox<T: SerializeRow>
(#1105).Bug fixes:
i64
for type safety (#1106).API cleanups / better types:
RetryPolicy
stored behindArc
instead ofBox
(#1103).Internal API cleanups/refactors:
Connection
's API (#1084).unnameable_types
clippy lint to prevent having such situation in the future (#1094).Documentation:
CI / developer tool improvements:
book.yml
CI workflow (#1096).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!
The official crates.io registry entry is 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: