Release Notes
Kotlin
4 8 3 version release release date dec 18, 2024 4 8 3 common release notes 🛠️ fixed ios 18 crashes related to bluetooth le are now resolved (#15351) 🔄 changed added more actionable information to common connection handshake issues (#15298) 4 8 2 version release release date sept 25, 2024 4 8 2 kotlin/java specific changes 🛠️ fixed crash on wifi aware stalling and ditto being re created (#14423) 🛠️ fixed crash on android after logout (#14562) 4 8 2 common changes 🛠️ fixed setting the minimum log level to warn or error will now correctly filter out very early logger initialization messages (#14451) 🛠️ fixed a bug that could prevent an attachment created with the same data on multiple peers from syncing (#14481) 4 8 1 version release release date sept 5, 2024 4 8 1 kotlin/java specific changes 🛠️ fixed crash in wifi aware when registering network publisher callback (#14013) 4 8 1 common changes ➕ added the presence use multihop system parameter can be used to disable replicating presence information to other peers in the mesh, reducing network overhead use only with guidance from the ditto customer experience team (#14128) 🔄 changed when failing to load document data sync (replication) metadata, ditto now attempts to clear and regenerate the metadata this is a behavior change where previously ditto would fail to start this serves to prevent problems after sdk version downgrades (#13111) 🛠️ fixed a rare issue where attachments may not be transferred between two peers (#14158) 🛠️ fixed on disk logs are more robust in situations with unexpected ditto shutdown (#13723) 4 8 0 version release release date aug 28, 2024 the version 4 8 0 sdk release update brings a substantial number of improvements and new features designed to enhance your development experience and provide even more powerful tools for building robust, real time applications 4 8 0 kotlin/java specific changes ⭐️ ➕ added method exporttofile() to dittologger , which exports collected logs to a compressed and json encoded file on the local file system logs returned through this method are at debug log level this new api can be used to do forensic log gathering on a device logs are always collected and restricted to a fixed specific size limit to ensure they don't grow endlessly once the size limit has reached new logs replace the oldest logs #11961 ➕ added synchronous method exporttofileblocking() to dittologger for java callers ➕ added a new getter and setter for presence connectionrequesthandler which take a dittoconnectionrequesthandlercallback , making the api much easier to call from java #12770 ➕ added properties peerkeystring1 and peerkeystring2 on dittoconnection replacing the deprecated properties peer1 and peer2 #12799 ➕ added documentation for startsync() and disablesyncwithv3() to include a recommendation for performance improvement #13098 performance of initial sync when bootstrapping a new peer can be improved by calling disablesyncwithv3() before calling startsync() only do this when all peers in the mesh are known to be running ditto v4 or higher ➕ added documentation for property peermetadata on dittopeer to add information about how the property behaves over the lifecycle of the dittopresencegraph #13479 ➕ added optional hint parameter to upsert() on dittocollection and dittoscopedwritetransaction by providing a hint you can better track the source of blocked write transactions #7110 ⭐️ 🔄 changed android wifi aware internal logic to avoid duplicate attempts to create the network and speed up time to successful connection #12458 ⭐️ 🔄 changed improve android wifiaware stability by actively terminate when the application goes into the background and resume when the application comes back to the foreground #12804 ⭐️ 🔄 changed improve staleness detection in android wifi aware leading to a more reliable connection #12866 🔄 changed api docs no longer include unintentially exposed protected members #13200 🔄 changed (linux\&android) increased mdns multicast ttl from 1 to 255 to allow for cross vlan announcements #13590 🔄 changed slow or blocked write transactions now log hints showing the waiting and blocking transactions #7110 🛠️ fixed the sdk will no longer crash when it observes malformed mdns traffic #12396 🛠️ fixed the sdk will no longer crash when multiple threads call stopsync() #11554 ⚠️ deprecated properties peer1 and peer2 on dittoconnection , please use peerkeystring1 and peerkeystring2 instead #12799 ⚠️ deprecated property queryoverlapgroup on dittopeer and dittoremotepeerv2 , always return 0 going forward query overlap groups was an experiemental feature that has been removed after it was determined this would not support production scenarios #13215 ❗️🗑️ removed delete() , swigreleaseownership() and swigtakeownership() methods from dittologger these are internal memory management apis that were unintentially exposed and can cause memory leaks or crashes if used #12617 ❗️🗑️ removed ( experimental ) property queryoverlapgroup of dittoexperimental ❗️🗑️ removed ( experimental ) method setpriorityforqueryoverlapgroup() from dittoexperimental #13215 ❗️🗑️ removed (experimental) deprecated methods setqueryoverlapgroup(queryoverlapgroup ) and setpriority( forqueryoverlapgroup\ ditto ) of dittoexperimental 4 8 0 common changes ❗️🔄 changed the logging output format for ditto sdks has been changed in 4 8 0 as part of our process to improve readablility and observability across the ditto platform customers should validate the new data format in their existing data ingestion pipelines new logging schema yyyy mm ddthh\ mm\ ss ssssss level target message {field1=value1, field2=value2, } timestamp (yyyy mm ddthh\ mm ssssss) format iso 8601 format (e g , 2024 08 16t14 23 05 123456z) description the exact time when the log entry was generated log level (level) format one of the following levels— debug, info, warning, error description indicates the severity or importance of the log entry target (target) format a string, representing the internal module/area description the source of the log entry, often corresponding to the internal module where the error was called (e g ditto init or peer event listener ) message (message) format a human readable string description the main content of the log entry structured fields ({field1=value1, field2=value2, }) format a list of key value pairs enclosed in curly braces description any additional structured data associated with the log entry these fields can include custom data that you attach to the log entry using the tracing info!(field1 = value1, "message") syntax 4 7 and earlier logging format example \[info] 2024 08 02t10 25 39 981z authclient using cached siteid; site id = 16248337916605943930 4 8 0 and later logging format example 2024 08 02t11 32 25 905562+01 00 info ditto init\ new auth client ditto auth using cached siteid site id=16248337916605943930 ⭐️ ➕ added dql support for string functions byte length and char length #12147 ⭐️ ➕ added dql support for inline object and array literal creation #12312 ⭐️ ➕ added object length and deserialize json functions in dql #12605 ⭐️ ➕ added dql insert statements support inlining the construction of an object #12761 ➕ added remote query capability allows big peer to execute read only queries on small peers usagne currently internal to ditto customer experience team members #12268 ➕ added diagnostics are now provided when collecting small peer info on disk logs #12080 ➕ added output version, sdk and build information on startup for easier debugging #12845 ➕ added introduced new internal capabilities ensure a large data payload (e g a large attachment file) cannot use all the bandwidth and prevent other data from being synced ➕ added mdns transport can now be configured with a static port for the tcp server using the tcp server bind mdns server port system parameter #13442 ⭐️ 🔄 changed new logging format that includes detailed information #10794 ⭐️ 🔄 changed the ditto logger is now more verbose by default, with a minimum log level of info instead of warning #11141 ⭐️ 🔄 changed small peer info collection is now enabled by default and its default sync scope is now bigpeeronly #12709 (device dashboard will populate information automatically) ❗️🔄 changed ( experimental ) multihop connections are formed more efficiently, e g , for ditto bus this is an incompatible protocol change from previous versions #12108, #12623 🔄 changed improve performance by avoiding deserializing the entire document if only part of it is required #10887 🔄 changed attachments now sync independently of documents, improving rainbow connection efficiency #11156 🔄 changed updating several depdencies for security patching (patch multiple old packages #12087) 🔄 changed how network os capabilities are internally linked into the library to allow for more relaiable and reusable internal logic #12362 🔄 changed api documentation for execute method to include information about its interaction with sync subscriptions #12365 🔄 changed default to creating backup bluetooth connections when there is an existing wifi connection (default mesh chooser avoid redundant bluetooth to false #13398) 🔄 changed console logging will now output to stderr instead of stdout (\[logs] logging now outputs to stderr instead of stdout #13477) 🛠️ fixed bytes and arrays not being always comparable in the legacy query language #10887 🛠️ fixed legacy query language casting counters and maps with tombstones to the wrong boolean value #10887 🛠️ fixed lowered the log level of a few sqlite3 notices that were being unnecessarily logged as warnings #12032 🛠️ fixed a crash that can occur if a dql query contains a multi byte character #12324 🛠️ fixed an issue with the transports multiplexer that could lead to a hung process this occured when dealing with large messages spanning multiple chunks (>64kb) #12428 🛠️ fixed a rare edge case that could slow down data sync betten peers #12527 🛠️ fixed frequent subscription changes along with eviction calls could cause failure to converge on data leading to inconsistent data state #11431 🛠️ fixed memory leak in third party library used for peer internal messaging #12895 🛠️ fixed transport inactive connection tracking no longer stores identifiers indefinitely this could lead to a slow growth in memory consumption for long lived applications ( 1mb/day on transports with high rate, unreliable discovery such as ble) #13147 🛠️ fixed unexpected failures to obtain a certificate for peer to peer sync are now logged at error level instead of warning #13323 ❗️🗑️ removed ( experimental ) ditto no longer supports the experimental query overlap groups feature and support has been removed this experimental feature has been removed after running a determining a lack of feasability in production scenarios the team is iterating and plan on interoducing improved capabilitites #13075