Rust
4.9.3 Common Changes
Changed: Added more actionable information to common connection handshake issues. (#15298) Fixed: Fixed: Some Android devices could fail to export logs to the portal due to a file permissions error (#15582)No Rust Specific Changes
4.9.1 Common Changes
Fixed: iOS 18 crashes related to Bluetooth LE are now resolved. (#15351) Fixed: Disk usage stats are now reported in small peer info on android devices4.9.0 Rust Specific Changes
The 4.9.0 Rust release has come with a collection of API changes designed to align the Rust SDK with the standards of our other SDK. These changes were done to align naming conventions as well as to regorganice the module to make it more consistent with other SDKs.
These API changes include a number of depreciated APIs. For insteances where APIs are depreciated you’ll find replacement APIs provided.
All changes are backwards compatable.
General Changes
Fixed: Resolved an issue where store_observer.is_cancelled() could return incorrect values (#14419). Added: ditto.update_transport_config() API (#5928) Added: V3ConnectionType to provide internal access to a presence peer’s connection type (#12945). Added: #[must_use] attribute on Subscription, PresenceObserver, and LiveQuery to encourage correct usage (#13256).API Renaming
Deprecated: ditto.authenticator() & DittoAuthenticator::new(#13606, 13851)- Useditto.auth()
- Use ditto.transport_config()
- Use ditto.app_id()
Module Reorganization
Added a dedicated presence module for the Presence API
Deprecated: dittolive_ditto::transport::{Peer, Presence, PresenceGraph, PresenceObserver, PresenceOs, Connection, ConnectionType} (#13645).- use dittolive_ditto::presence::{Peer, Presence, PresenceGraph, PresenceObserver, PresenceOs, Connection, ConnectionType}
Flattened store module, improved store docs
Changed: Moved store::dql module to crate-level Deprecated: store::attachment, store::collection, and store::collections modules, with items moved to streamlined modules.- use store::attachment::{FetcherVersion, DittoAttachmentFetcher, DittoAttachmentToken, DittoAttachmentFetchEvent, DittoAttachmentTokenLike}
- use store::collections::{CollectionsEvent, PendingCollectionsOperation, CollectionsEventHandler}
- use store::collection::{DocumentId, PendingCursorOperation, PendingIdSpecificOperation, DittoDocument, DittoMutDocument, MutableValue}
Additonal Module Changes
Changed: Moved SyncSubscription to sync module, updated docs (#13645) Removed: ditto module from the public API (#13645).- Moved ditto module contents to crate-level (#13645)
- Changed: Updated sync module docs (#13702)
- Deprecated: dittolive_ditto::store::dql::SyncSubscription
- Added: dittolive_ditto::sync::SyncSubscription
- Deprecated: crate-level types module, contents moved into query_builder
- Deprecated: store::{batch,collection,collections,live_query,update} modules, contents moved into query_builder
- Deprecated: crate-level subscription module, Subscription moved into query_builder module
Depreciated unused and unintentially exposed items
Deprecated: removed ValidityListener from public API (#13857) Deprecated: DittoBuilder::new()- use Ditto::builder() instead.
4.9.0 Logging Clarity Improvements
This release comes with a number of logging clarity improvements. The goal of these changes are to make Ditto logs more consumable and actionable for end users. While there are wide ranging changes one of the principal goals of this work is to make our INFO level logs contain the right information to understand the state and health of the Ditto SDK.
-
More information is included when physical connections start and end (such as the type of connection and the remote peer’s key)
-
Devices that try to connect to themselves now say “device has connected to itself” instead of an error about the remote site ID being the same as the local peer
-
Authentication client logs have been made more human readable. In particular:
-
Recoverable errors are logged together with information about the recovery actions that are being undertaken
-
Several abbreviations have been replaced with human-readable descriptions
-
Errors are printed using their descriptions rather than by dumping debug representations
-
Abbreviated jargon has been replaced with clearer wording in various log lines
-
“phy ended” has become “physical connection ended”
-
“error getting char” has become “required Ditto BLE characteristic not found”
-
“error getting radio state” has become “error getting Windows Bluetooth radio state”
-
Peer events that represent a transport starting or stopping are now logged with the message “transport started”/”transport ended” rather than as a raw peer_event=… log
-
Reduced the noisiness of “starting” log lines around Ditto initialization time
-
Noise from long peer keys in logs has been reduced in some places by replacing them with their truncated form
-
Noise from duplicated peer ID/peer key information in replication logs has been reduced by consolidating the information
-
“starting compression and export” is now followed by a “completed export” log at the same level
-
Successful SQLite WAL recovery logs were further lowered from INFO to DEBUG