👏️ Improvements
- Reduce network latency in some cases by setting
TCP_NODELAY
.
⭐️ New Features
- Add support for Bolt 5.6 (GQL compatible notifications/result statuses)
⚠️ neo4j::driver::notification::NotificationFilter
's API has been completely reworked to support this new feature and enable more internal changes in the future without breaking the API again.⚠️ changedneo4j::summary::Summary::notifications
fromOption<Vec<Notification>>
toVec<Notification>
defaulting toVec::new()
when the server does not send any notifications.
- Add support for Bolt 5.7 (GQL compatible errors)
⚠️ neo4j::error::ServerError
is now#[non_exhaustive]
⚠️ removedimpl From<neo4j::error::ServerError> for neo4j::error::Neo4jError
⚠️ neo4j::error::ServerError::new(...)
has been removed.
User-code should not need to create arbitraryServerError
s. In return,ServerError
now implementsClone
.
- Add support for bolt handshake manifest v1.
- Add support for Bolt 5.8 (home database resolution cache)
- Includes an optimization where the driver uses a home/default database cache to perform optimistic routing under certain circumstances, saving a full round trip. See the PR description for more details.
🔧 Fixes
- Rework
neo4j::value::graph::Path
Path
s now properly validate data received from the server (as documented)⚠️ The return type ofPath::traverse()
was changed to reflect that paths with only one node and no relationships exist.- The invariants of
Path
were changed for the above reason, too. - New methods
Path::new()
,Path::new_unchecked()
, andPath::verify_invariants()
.
- Fix connection hint
connection.recv_timeout_seconds
should only be applied to reads, not writes. - Fix superfluous spaces in bolt debug logs.
⭐️ New Features
- Add support for Bolt 5.2, which adds notification filtering.
- Add support for Bolt 5.3 (bolt agent).
- Add support for Bolt 5.4 (telemetry).
- Add
Driver::is_encrypted()
. - Introduce
neo4j::driver::Conifg::with_keep_alive()
andwithout_keep_alive()
.
👏️ Improvements
⚠️ ️️Bumpchrono-tz
from0.8
to0.9
(types of this crate are exposed through the driver's API).⚠️ ️️Bumprustls
from0.22
to0.23
:- types of this crate are exposed through the driver's API
- other breaking changes (e.g., new build requirements).
See rustls' changelog for more details.
🔧️ Fixes
- Fix
Transaction::rolblack()
failing if a result stream failed before. - Fix errors during transaction
BEGIN
not being properly propagated. - Fix propagation of
is_retryable()
of errors within transactions. - Fix connection hint
connection.recv_timeout_seconds
not always being respected leading to connections timeing out too late.
🧹️ Clean-up
⚠️ Remove useless lifetime parameter fromSessionConfig::with_database()
.⚠️ Change return type ofConnectionConfig::with_encryption_trust_any_certificate()
fromResult<Self, Error>
toSelf
.⚠️ Reduce the number of lifetime generic parameters inTransactionQueryBuilder
andTransactionRecordStream
.⚠️ Removeimpl From<URIError> for ConnectionConfigParseError
.
👏 Improvements
- Impl
FromStr
forneo4j::driver::ConnectionConfig
(besidesTryFrom<&str>
).
🧹️ Clean-up
⚠️ Update dependencies.
Among othersrustls
. To accommodate this change, therustls_dangerous_configuration
feature was removed. This update also affectsConnectionConfig::with_encryption_custom_tls_config()
, which accepts a customrustls::ClientConfig
.⚠️ MakeRecord{entries}
private and offer many helper methods instead.- Add
EagerResult::into_scalar()
. ⚠️ RenamedRetryableError
toRetryError
- Fix
Driver::execute_query()::run()
not committing the transaction. ⚠️ RemovedAutoCommitBuilder::without_transaction_timeout
andAutoCommitBuilder::with_default_transaction_timeout
in favor ofAutoCommitBuilder::with_transaction_timeout
in combination withTransactionTimeout::none
,TransactionTimeout::from_millis
andTransactionTimeout::default
.
Same forTransactionBuilder
.⚠️ Moveneo4j::Address
toneo4j::address::Address
📚️ Docs
- Much more documentation.
Initial release