SDK Setup Guides
...
C++
Release Notes

Ditto v4 for C++

cpp c plus plus updates version changelog



C++ Version 4.5.0

Released: Thu Dec 7, 2023
Added
New C++ SDK for Android. (#10218)
Added
`Store::execute` method to execute DQL queries. (#10421)
Added
The `StoreObserver` class to the `execute` function when the documents that match a query are changed. (#10421)
Added
Store::register_observer` to create a new `StoreObserver`. (#10421)
Added
The `register_subscription` method to the `Sync` class. (#10485)
Added
`SyncSubscription` class that allows you to receive updates on documents. (#10485)
Added
The `Sync` class to manage subscriptions. (#10702)
Added
`SmallPeerInfo` property to Ditto allowing access to, and configuration of, Small Peer Info. (#10838)
Improved
Changed: Ditto C++ for iOS SDK is built and tested with Xcode 14.3.1. (#10177)
Improved
Deprecated: `LanConfig.multicast_enabled` property. (#10126)
Fixed
Fixed: Bluetooth and LAN transports fail to stop on Windows and Linux. (#8809)
Improved
Performance by implementing bipartite distance-aware mesh topology. (#10632)
Improved
Memory usage and performance of Documents. (#10736)
Improved
Reduced metadata accumulation after eviction by clearing remote summaries. (#7065)
Improved
Serialization performance. (#9112)
Fixed
Made logging more robust to failed writes in a specific set of circumstances. (#10077)
Fixed
Addressed a warning from SQLite that sometimes occurs on startup about a schema change. (#10501)
Fixed
Presence graph may not show all active connections. (#10507)
Fixed
When observing peers, isConnectedToDittoCloud property may be incorrect. (#10534)
Fixed
Initial logging events now use the same format as all other logs. (#10611)
Fixed
Mesh could choose random connections. (#10711)
Fixed
A bug with Ditto's internal crash handler. (#10022)


C++ Version 4.4.5

Synchronized version bump release — no changes

C++ Version 4.4.4

Improved
Runtime validation of corrupted attachments being inserted into documents (#10552)
Fixed
An issue introduced in 4.4.2 where the Small Peer Info attachments were not replicated to the Portal. (#10538)


C++ Version 4.4.2

Fixed
Small Peer info collection now defaults to localPeerOnly, preventing data from being collected on the Big Peer until the feature is explicitly enabled and sync scope is set to bigPeerOnly. (#10203, #10204)


C++ Version 4.4.1

Synchronized version bump release — no changes

C++ Version 4.4.0

Added
More informative log message for query failures caused by database access errors. (#9364)
Added
Small peers now persist structured log data to disk for later retrieval, with limits on the resulting disk usage. (#9547)
Added
More informative log message for query failures caused by database access errors. (#9364)
Improved
Print some internal errors in a more human-readable format. (#9269)
Improved
TransportConfig and its associated types can be serialized/deserialized into/from JSON and CBOR. (#9585)
Improved
Sets a minimum session refresh period. The small peer will always try to start refreshing its session after 3 days no matter how long the session period issue. Previously the small peer would start to refresh after half of the session length had elapsed. (#9594, #9645)
Improved
Initial replication time by reducing one roundtrip of messages before peers can sync. (#9404)
Improved
Attachment fetch time in several edge case scenarios. (#9501)
Improved
Efficiency by using less system resources when connected to peers but no replication changes are needing to be sent. (#9479, #7995)
Improved
Significantly reduced startup resource consumption linked to total document count. (#9501)
Fixed
A scenario where a peer could incorrectly receive data back from other peers even after they had modified their subscription and evicted the old data. (#9404)
Fixed
An issue where unusually high replication write load in large meshes could block all readers from reading the database. (#9395, #8872)


C++ Linux / iOS Version 4.3.1

Released: Thu Aug 10th 2023, 2:22 pm

Release Notes:

  • Changed: Improved clarity of error messages when data on disk cannot be read by this version following a downgrade from a newer version of Ditto. (#9267)
  • Changed: Print some internal errors in a more human-readable format. (#9495)
  • Added: iOS can now connect to servers with custom certificates. (#9368)
  • Fixed: an issue on Linux that caused excessive multicast traffic over LAN transport. (#9398)

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.3.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.3.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.3.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.3.0

Released: Tue Jul 18th 2023, 10:02 pm

Release Notes:

⚠️ Warning: This SDK version will migrate some data formats on disk. Once upgraded to 4.3.0, an SDK can only be downgraded back to 4.2.2 and 4.2.1 but no earlier. Downgrading to versions earlier than 4.2.1 will require uninstalling and re-installing to clear out the new data formats. (#8946)

  • Added: An internal ability to measure & report the level of redundancy in replication updates to calculate the percentage of updates that are arriving from multiple peers. This will be used for future self-balancing mesh actions which are not yet enabled. (#8937)
  • Changed: new serialization format improves efficiency of replication, particularly in the Big Peer. (#8946)
  • Changed: Better logging for diagnosing auth failures. (#8984)
  • Changed: Improved replication performance by introducing a small internal caching layer for commonly computed values. (#8777)
  • Fixed: The replication engine can now recover from certain filesystem corruption issues during sync instead of panicking. (#8965)
  • Fixed: Increased validation of document updates, preventing updates that try to modify the document id. (#9063)

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.3.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.3.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.3.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.2.3

Released: Wed Jul 5th 2023, 3:32 pm

Release Notes:

  • Synchronized version bump release

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.2.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.2.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.2.3/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.2.2

Released: Tue Jul 4th 2023, 10:42 am

Release Notes:

  • Improved mesh performance when using 50+ Small Peer devices (#9077)
  • Changed: Improved deserialization performance of Documents. (#9123)
  • Fixed: Increased validation of document updates, preventing updates that try to modify the document id. (#9129)
  • Fixed: Removed outdated ERROR level log statements in Ditto store related to
  • Fixed: The
  • Fixed: a potential crash if a document attachment was malformed (#9045)
  • Fixed: potential deserialization issue with 

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.2.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.2.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.2.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.2.1

Released: Tue Jun 13th 2023, 3:47 pm

Release Notes:

  • Fixed: a possible crash due to serialisation when upgrading from version 4.1.0 or 4.1.1 (#8925)

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.2.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.2.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.2.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.2.0

Released: Tue Jun 13th 2023, 1:53 am

Release Notes:

  • Changed: Improved replication uses compressed message stream to decrease bandwidth consumption. (#8807)
  • Changed: Reduce verbosity in replication logs (#8370)
  • Fixed: Potential crash on Linux when handling Bluetooth advertisement during Ditto startup (#8538)

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.2.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.2.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.2.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.1.1

Released: Thu May 18th 2023, 11:35 pm

Release Notes:

  • Fixed: Devices with hostnames longer than 35 bytes will no longer fail to sync over LAN.
  • Fixed: Potential crash on Linux when handling Bluetooth advertisement during Ditto startup.

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.1.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.1.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.1.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.1.0

Released: Fri Apr 28th 2023, 11:52 am

Release Notes:

  • Added:
  • Changed:
  • Changed: (Experimental) Query Overlap Groups, Bus: a breaking protocol change for upcoming improvements. Peers using older versions will not be able to connect with newer peers until they upgrade.
  • Fixed: improved Bluetooth LE connection reliability on Linux
  • Fixed: A replication issue where certain cases that should have reset the replication session with a remote peer would instead temporarily terminate the connection while not resetting the session.
  • Fixed: A replication issue that could cause failed convergence on small number of documents if updates are being received during a local eviction.
  • Security: Enforce immediate disconnection of any connected peers whose certificate expires during a sync session.

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.1.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.0.3-alpha.linux-ble-fixes-2

Released: Tue Apr 18th 2023, 1:22 am

Release Notes:

  • Improvements to Bluetooth connection reliability on Linux

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.3-alpha.linux-ble-fixes-2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.3-alpha.linux-ble-fixes-2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.3-alpha.linux-ble-fixes-2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.0.3-alpha.linux-ble-fixes

Released: Mon Apr 17th 2023, 3:19 pm

Release Notes:

  • Fixed: a replication issue that could cause failed convergence on small number of documents if updates are being received during a local eviction.
  • Improvements to Bluetooth connection reliability on Linux

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.3-alpha.linux-ble-fixes/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.3-alpha.linux-ble-fixes/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.3-alpha.linux-ble-fixes/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.0.2

Released: Thu Apr 20th 2023, 3:36 pm

Release Notes:

  • Fixed: A replication issue where certain cases that should have reset the replication session with a remote peer would instead temporarily terminate the connection while not resetting the session.
  • Fixed: Correct handling of reset and disable errors from receive_update

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.0.1

Released: Thu Apr 6th 2023, 11:54 am

Release Notes:

  • Fixed: Resolved an issue with logging when the stdout is not available.

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.0.0

Released: Wed Mar 22nd 2023, 3:48 pm

Release Notes:

  • Added: AddWins removes will now be used if
  • Changed: If a problem occurs with an app's authentication webhook, the Small Peer that is trying to authenticate will log more detailed information for the developer.
  • Changed: old multi-hop connections are now automatically disconnected when direct connections are established with peers, freeing up unneeded resources faster.
  • Changed: reduced severity level for some routine log statements which were previously emitted at a WARN level.
  • Fixed: some threads spawned by the SDK no longer wait up to 30 seconds before being stopped.
  • Fixed: an issue which could cause Ditto to hang if more than 500 peers were encountered.
  • Fixed: replication hanging under some circumstances, especially WebSocket connections to Big Peer
  • Fixed: a possible crash if Ditto is configured with an invalid App ID. An error message is emitted instead.
  • Removed: unused
  • Removed: unused

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.0/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.0.0-beta1

Released: Thu Jan 26th 2023, 3:37 pm

Release Notes:

  • Fixed: an issue which could cause Ditto to hang if more than 500 peers were encountered.
  • Fixed: AddWins removes will now be used if

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.0-beta1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.0-beta1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.0-beta1/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

C++ Linux / iOS Version 4.0.0-alpha2

Released: Mon Jan 16th 2023, 2:16 pm

Release Notes:

  • Added:

Installation:

iOS

curl -O https://software.ditto.live/cpp-ios/Ditto/4.0.0-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux x86_64

curl -O https://software.ditto.live/cpp-linux-x86_64/Ditto/4.0.0-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz

Linux aarch64

curl -O https://software.ditto.live/cpp-linux-aarch64/Ditto/4.0.0-alpha2/dist/Ditto.tar.gz && tar xvfz Ditto.tar.gz