> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ditto.live/llms.txt
> Use this file to discover all available pages before exploring further.

# Release Notes

<Update label="v1.63.1" description="Release Date: w/c May 11, 2026">
  **Big Peer 1.63.1 delivers major Subscription Server performance improvements, enhances MongoDB Connector reliability, and includes a wide range of reliability and observability improvements.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * MongoDB Connector targeted resync, allowing operators to re-synchronize specific data without a full reset
  * `ENABLE_REVOCATION_CHECKS_IN_BIG_PEER` Big Peer configuration flag to control enforcement of certificate revocation checks (defaults to `false`)
  * Sync scopes are now published in the Small Peer Info document
  * Document change type labels and a CDC change counter metric for improved observability
  * Channel open retries and a watchdog that tears down virtual connections which never open a channel, preventing resource exhaustion from stalled peers
  * Increased the default limit of subscription queries surfaced in `__small_peer_info` from 16 to 32

  <Icon icon="arrows-rotate" iconType="solid" horizontal /> **Changed:**

  * The DQL `PROFILE` response and the `system:request_history`, `system:active_requests`, and `system:shared_statements` virtual collections now expose the database identifier under `database_id` instead of `app_id`
  * The DQL `UPDATE` statement has been migrated to the new execution operator model, improving consistency with other DQL operations
  * DQL string literals now accept all JSON escape sequences by default
  * The Query Engine running on Ditto Server can now assert via a directive that ID deduplication is unnecessary, and memory requirements have been reduced for most cases
  * Removed a spurious `dsoq.cbor` CBOR warning log during auth client initialization

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Edge-case issue in subset optimisation for pinned subscriptions
  * A crash (SIGABRT) that could occur during Ditto shutdown
  * Edge cases where per-document convergence may fail during initial sync in the MongoDB Connector
  * MongoDB Connector now correctly serializes resume tokens containing `_typeBits` (BSON Binary field), preventing errors when restarting change streams
  * Latency spikes when write transactions trigger evictions
  * Mid-stream network errors during incremental upqueries are now retried with backoff instead of being silently dropped, preventing incomplete document sets from being delivered to subscribers
  * Possible connection flapping during `TransactionTooLarge` errors
  * Attachment garbage collection now removes empty shard directories, preventing inode leaks
  * DQL statements now correctly handle quoted namespace/datasource values

  <Icon icon="rocket" iconType="solid" horizontal /> **Performance:**

  * Subscription Server garbage collection reworked to reduce impact on concurrent sync
  * Subscription Server now indexes documents per-query at write time, improving query responsiveness
  * Subscription Server cache storage moved from LMDB to RocksDB with a parallel Read/Merge/Finalize flush path, improving throughput
  * Subscription Server pre-computes the uncached set on the reader side before sending to the writer, improving throughput
  * Improved performance of subset optimisation for pinned subscriptions
  * Document Sync protocol performs fewer full database scans after local subscription changes
  * Reduced redundant replication GC work during rapid eviction bursts by debouncing and coalescing compatible GC tasks
  * Query Engine value exchange has been moved from tokio channels to a bespoke buffer-based implementation, reducing overhead
</Update>

<Update label="v1.62.3" description="Release Date: w/c Apr 19, 2026">
  **Big Peer 1.62.3 is a patch release with a bug fix for data sync reliability.**

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Partial backfill data is now discarded on stream interruption, preventing rare cases resulting in inconsistent state between different store replicas
</Update>

<Update label="v1.62.2" description="Release Date: w/c Apr 13, 2026">
  **Big Peer 1.62.2 disables new DQL index-scan execution on the HTTP API to reduce memory and GC pressure observed under certain workloads.**

  <Icon icon="arrows-rotate" iconType="solid" horizontal /> **Changed:**

  * Index API scans are now disabled by default on Big Peer API servers. Queries now use the pre-existing legacy/store-coordinated behavior while we make optimisations to this functionality
</Update>

<Update label="v1.62.1" description="Release Date: w/c Apr 3, 2026">
  **Big Peer 1.62.1 is a patch release with a bug fix for metrics tracking.**

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * An issue where metrics with custom tags were being counted more than once
</Update>

<Update label="v1.62.0" description="Release Date: w/c Mar 20, 2026">
  **Big Peer 1.62.0 introduces new system parameters for data sync and revocation control, DQL query engine enhancements including RETURNING clauses and optimized index scans, MongoDB Connector improvements, and performance optimizations across RocksDB, subscription server garbage collection, and query planning.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * `DATA_SYNC_ENABLED` system parameter which, while set to `false`, halts the data sync machinery without loss of network connectivity, allowing for operations such as remote query (#19643)
  * NotificationContext module for session-scoped subscription state tracking in Big Peer replication (#20402)
  * Pagination support in HTTP GET API for revocations (#20524)
  * Protocol Server wiring and configuration (#20624)
  * The new `transport_tcp_connect_timeout` system parameter which shortcuts long platform-based TCP connection timeouts (#20782)
  * `DITTO_PEER_CERTIFICATE_REVOCATION_CHECK_ENABLED` system parameter to control revocation checking. Revocation checks are enabled by default and can be disabled by setting this parameter to `false` (#20935)
  * A new Ditto to MongoDB connector configuration option `mongoIdField` that allows the connector to map a specific id field from a Ditto document as the identifying field (`_id`) in MongoDB (#DI-406)
  * A new query crate Item type which carries all possible value types that the query engine should use, in aid of performance and Data Manipulation Language operations (#QE-496)
  * New DQL scalar functions to estimate object size and serialise values as JSON strings (#QE-539)
  * The ability to filter system parameters in the `SHOW ALL` command output using a `LIKE` predicate (#QE-554)
  * Configurable RocksDB max MANIFEST file size via `ROCKSDB_MAX_MANIFEST_FILE_BYTE_SIZE` (#20770)
  * Memory limit configuration for statistics collector via the `STATISTICS_COLLECTOR_MEMORY_LIMIT` environment variable and `-statistics-collector-memory-limit` launch parameter (#DB-1146)

  <Icon icon="arrows-rotate" iconType="solid" horizontal /> **Changed:**

  * Warning log messages now use 'store observer' terminology instead of 'live query' to match DQL API naming (#20974)
  * JWT validation failures now log all non-sensitive claims (issuer, version, audience, timestamps) to aid support debugging without requiring customer JWT tokens (#21207)
  * Document/diff encoding now handled by `ContainerTLVPreserving` which retains the format, specifically when writing to the transaction log, defaulting to RKYV when the format hasn't already been selected (#21224)
  * DQL `DELETE` statements can now include a `RETURNING` clause and may use a `USE IDS` clause to specify documents to delete by ID (#QE-203)
  * DQL `INSERT` statements can now include a `RETURNING` clause and may source documents from a `SELECT` statement (#QE-368)
  * The DQL query engine now uses a standardised item type, which simplifies integration with the various query users (#QE-497)
  * The DQL Query Engine planner can now produce specialised higher performance plans for Ditto Server `COUNT(*)` queries that include simple filters (#QE-510)
  * The Query Engine DQL planner can now generate index-access plans against Ditto Server, improving performance for queries with filters that can be applied when scanning an index and where combining multiple index scans is beneficial (#QE-511)
  * The Query Engine intersect scan operator can now stop before all inputs have completed, once it has been established that no further complete intersections can be produced, improving performance where the number of values produced by each input differs greatly (#QE-530)
  * DQL array and object transformation can now process the source contents in a nested fashion with the `WITHIN` keyword (#QE-551)
  * DQL transformation of an object to an array no longer requires a name-variable binding, simplifying the syntax (#QE-551)
  * Automatic generation of an idScan in the Query Engine planner from `_id` field filters now considers `IN` filters in addition to simple equality filters (#QE-553)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Upquery buffer size no longer silently truncates at u32::MAX bytes (#20708)
  * A race condition where `fetchAttachment` could permanently fail to find locally-created attachments due to stale in-memory cache entries (#21146)
  * Initial sync race in the Mongo Connector where a crash after marking initial sync as completed but before persisting any changestream resume tokens could lead to a divergence between Mongo and Ditto (#21414)
  * Inconsistent internal hashing of Document IDs could cause failure to sync documents (#DS-944)
  * Premature connection cleanup causing duplicate connections (#NETW-1021)
  * Queries in the legacy language might fail to surface documents with settable counters (#QE-512)
  * The underlying containers for the Query Engine actives and request\_history virtual collections have been changed to prevent the rare possibility of delays in concurrent read and write requests (#QE-564)

  <Icon icon="rocket" iconType="solid" horizontal /> **Performance:**

  * Increase RocksDB default parallelism and write buffer options and make them configurable (#20672)
  * Optimize Subscription Server GC (#20785)
</Update>

<Update label="v1.60.3" description="Release Date: w/c Mar 16, 2026">
  **Big Peer 1.60.3 adds slow iteration warnings and new metrics to the subscription server for better visibility into server health and performance.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Slow iteration warnings: A warning is now logged when any full loop iteration exceeds a configurable threshold, including the active branch and full gate state (operation mask fields and channel utilization) for immediate root-cause identification
  * New `server_loop_iteration_time` metric — histogram of loop iteration durations under the `hydra_subscription.server_loop_*` namespace
  * New `server_loop_branch_selected` metric — per-branch counter tracking selection distribution over time under the `hydra_subscription.server_loop_*` namespace
</Update>

<Update label="v1.60.1" description="Release Date: w/c Feb 2, 2026">
  **Big Peer 1.60.1 introduces MitM protection capabilities to the Auth Webhook, significant DQL query performance improvements, and enhanced synchronization reliability.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Auth Webhook Man in the Middle protection: HMAC-SHA256 signature on auth webhook requests, enabling recipients to verify the sender's identity

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Resolved an issue where DQL subscriptions could fail to return all expected documents when connected to Big Peer
  * Fixed incorrect query results when index scans were generated on fields specified in a `COLLECTIONS` clause where the variant differed from the indexed variant
  * Fixed a crash in the DQL parser when an invalid JSON directive is used before the `PROFILE` keyword
  * The minimum integer value (`-9223372036854775808`) is now correctly parsed and handled by DQL

  <Icon icon="rocket" iconType="solid" horizontal /> **Performance:**

  * Improved storage layer default parallelism and write buffer settings for better storage throughput
  * Enhanced synchronization protocol to better avoid resetting sessions on reconnect when in-flight updates were lost
  * Document sync now uses tiered blob store for update file storage by default, reducing unnecessary disk I/O for smaller updates
  * DQL planner now automatically converts equality filters on the `_id` field to ID scans, bypassing unnecessary index lookups when exact document IDs are known
  * DQL query planner can now defer fetching full documents until after sorting and applying `OFFSET`/`LIMIT`, improving performance for applicable queries
  * Optimized the DQL `DISTINCT` operator to stream results, reducing memory overhead
  * DQL planner now recognizes additional cases where an index can fully cover a query, avoiding unnecessary document retrieval
  * Dynamic upquery size limits with adaptive scaling for improved throughput
</Update>

<Update label="v1.59.0" description="Release Date: w/c Jan 5, 2026">
  **Big Peer 1.59.0 delivers several DQL enhancements, query performance improvements, and reliability improvements for network connections and data synchronization.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * DQL DELETE statements can now be executed against the `system:shared_statements` virtual collection
  * Enhanced DQL query planner now recognizes additional index access patterns, eliminating unnecessary document retrieval in more scenarios
  * The `system:indexes` virtual collection now includes key sorting direction information

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Resolved an issue where forced TCP connections would retry more frequently than expected
  * Improved recovery from certain document deserialization errors, reducing potential errors or crashes
  * Improved DQL query planner's index selection to correctly handle unparsed predicate paths, preventing incorrect index choices

  <Icon icon="rocket" iconType="solid" horizontal /> **Performance:**

  * Faster initial sync when processing encoded document diffs
  * Optimized document cache format for improved performance
</Update>

<Update label="v1.58.1" description="Release Date: w/c Dec 1, 2025">
  **Big Peer 1.58.1 delivers performance improvements, enhanced debugging capabilities, and expanded connectivity options for Bring Your Own Discovery (BYOD) deployments.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Rkyv encoded diffs now enabled by default in doc sync protocol for improved performance
  * WebSocket (ws\:// and wss\://) support for Bring Your Own Discovery (BYOD)
  * `peer_key` and `database_id` entries to `system:system_info` virtual collection
  * Automatically generated metrics inventory system for discovering and documenting all metrics
  * Improved logging for TLV container hash mismatches to aid debugging

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * DQL SELECT queries against indexed collections no longer deadlock in explicit transactions

  <Icon icon="rocket" iconType="solid" horizontal /> **Performance:**

  * Optimized predicate queries with LIMIT and no order clause
</Update>

<Update label="v1.57.3" description="Release Date: w/c Nov 14, 2025">
  **Big Peer 1.57.3 delivers significant performance improvements and enhanced reliability for high-scale deployments. This release focuses on optimizing query execution, improving memory management, and providing better observability tools for monitoring system health.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Scalable eviction capabilities with customizable cron scheduling for TTL eviction jobs
  * App ID allowlists and blocklists for fine-grained eviction control
  * Optimized document handling during eviction by avoiding unnecessary deserialization
  * Enhanced monitoring with improved upquery memory size metrics
  * Jemalloc profiling support for subscription server, CDC, and MongoDB connector
  * Additional RocksDB metrics for deeper storage insights
  * Memory usage instrumentation for core subscription server data structures
  * Enhanced observability metrics for critical document-cache operations
  * Debug endpoint for jemalloc statistics

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fixed an issue in the MongoDB Connector where changestream events could be skipped after a crash or restart, potentially causing divergence between MongoDB and Ditto
  * Enhanced query reliability through concurrent request limiting in the query engine
  * Improved query timeout handling on leaf nodes to apply consistently
  * Long-running request tasks are now properly canceled when requests are terminated
  * Subscription server endpoints are now updated before pod termination to prevent connection issues
  * Improved query concurrency management in Hydra-Store

  <Icon icon="rocket" iconType="solid" horizontal /> **Performance:**

  * Improved query performance through implicit prepared statement caching
  * Configurable RocksDB block cache percentage for optimized memory usage
  * Optimized subscription event loop processing
  * Reduced garbage collection overhead, eliminating multi-second pauses in critical paths
  * Improved cache flush behavior when handling upqueries
</Update>

<Update label="v1.55.3" description="Release Date: w/c Nov 3, 2025">
  **Big Peer 1.55.3 delivers major reliability and performance improvements across device sync, Data Bridges and the HTTP Data API. Notably, users can expect improved performance during evictions and initial device sync, along with new DQL profiling capabilities.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Introduced DQL `PROFILE` keyword for analyzing query performance (equivalent to the `#profile` directive)
  * Introduced support for inserting documents into arrays in DQL statements
  * Enhanced system collections (`system:active_requests`, `system:request_history`, `system:vitals`) with additional Ditto Server heuristics

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Enhanced query resilience when Ditto Server is under high load
  * Improved resilience of Data Bridges when consuming large volumes of results from Ditto Server transaction log
  * Fixed rare scenarios where attachment fetches could be delayed
  * Restored DQL mutator (arrow) syntax support in the RPCv4 `execute` endpoint
  * Fixed an edge case resulting in 502 errors from the HTTP Data API
  * Improved Data Bridge WebHook reliability through improved backoff and retry mechanisms
  * Fixed incorrect sync status briefly reported in the `system:data_sync_info` collection immediately after connecting

  <Icon icon="rocket" iconType="solid" horizontal /> **Performance:**

  * Improved performance during initial sync through improved querying of the backing store
  * Improved performance while evictions are being performed via the API
  * Improved performance of predicate queries
  * Faster parsing of large DQL statements
  * Improved performance and reliability of large DQL queries performed via the HTTP API
  * Improved handling of group key references in DQL projections that include array element selection
  * Minimized redundant data transfers when reconnecting long-dormant sessions between well-synced peers
</Update>

<Update label="v1.51.0" description="Release Date: w/c Aug 25, 2025">
  **Big Peer 1.51.0 enhances network reliability and improves performance of live queries and CRDT operations.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Added support for EJSON in the MongoDB Connector, see [EJSON mode](/cloud/mongodb-connector#ejson-mode) for more details

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fixed a bug where peers could become stuck with stale connection information, to improve mesh connectivity and peer discovery
  * Fixed query execution when using `DISTINCT` with `ORDER BY` and `OFFSET`/`LIMIT` clauses

  <Icon icon="rocket" iconType="solid" horizontal /> **Performance:**

  * Improved performance of CRDT operations
  * Optimized query planning for statements using `DISTINCT` projections, improving performance in complex query scenarios
</Update>

<Update label="v1.50.0" description="w/c Aug 18, 2025">
  **Big Peer 1.50.0 introduces a number of key DQL and reliability improvements.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Improved replication performance through optimized serialization and deserialization of documents
  * `USE IDS LIST` DQL syntax for directly fetching multiple documents by ID
  * Optimized the performance of `SELECT COUNT(*)` queries without filters
  * Array and object search syntax to DQL (e.g. `ANY ... IN ... SATISFIES ... END`)
  * `CASE` statement for conditional logic in DQL queries
  * Array and object transformation syntax for DQL queries (e.g. `ARRAY {"index":i,"value":v} FOR i:v IN [1,2,3,4,5] WHEN v%2 = 0 OR i = 2 END`)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Improved resilience to transient transaction log connectivity issues
  * Cleanup of deleted documents no longer gets stuck at large volumes of tombstones
  * `null` is no longer accepted as a valid document ID

  <Icon icon="minus" iconType="solid" horizontal /> **Removed:**

  * Arrow mutators (i.e. `->`) are no longer supported in DQL
  * Double quotes are no longer used to indicate field names in DQL, instead these are treated as strings, allowing you to use JSON string directly in DQL
</Update>

<Update label="v1.49.0" description="w/c Jul 28, 2025">
  **Big Peer 1.49.0 delivers performance improvements for store operations, enhanced CDC reliability, and extends DQL capabilities with new conflict resolution strategies and improved query processing.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * `UPDATE_DIFFERENT_VALUES` conflict resolution strategy for DQL INSERT statements, allowing selective updates only when values differ from existing documents
  * CDC snapshots are now exposed to consumers, providing full document state visibility during recovery scenarios
  * DQL query parser now properly handles context-dependent keywords, improving query flexibility
  * Subscription size limits increased approximately three times, supporting larger data sets per subscription

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Store metadata persistence moved to dedicated background task, significantly reducing latency for operations
  * CDC snapshots are now eliminated during routine restarts and deployments
  * DQL collation now correctly orders arrays and objects by their actual length instead of using MISSING value padding
  * Resolved panic condition when subtracting large positive integers from large negative integers
  * Extended DQL multiplication to correctly handle operations between two large negative integers
  * Aggregate functions now return proper default values when operating on empty result sets
</Update>

<Update label="v1.47.1" description="w/c Jul 14, 2025">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fixed query failure caused by use of `id` as a field name in DQL queries
</Update>

<Update label="v1.47.0" description="w/c Jul 7, 2025">
  **Big Peer 1.47.0 enhances system reliability with critical fixes for CDC session persistence and connection stability, while introducing powerful new DQL capabilities including virtual collections, scalar functions, and dynamic field references.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * DQL projection, distinct, and aggregate features are now out of preview and ready for production use
  * DQL `SYSTEM:COLLECTIONS` and `SYSTEM:ALL_COLLECTIONS` virtual collections for listing accessible collections
  * DQL scalar functions for duration calculations and time-based operations
  * Support for dynamic field references in DQL statements, enabling more flexible queries
  * Virtual collections for monitoring active and historical DQL engine requests
  * Support for unary plus operator in DQL expressions
  * Wildcard expansion now supports top-level fields with left-to-right, last-wins projection aliasing
  * The `USE IDS` clause now accepts expressions that can be statically evaluated

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * CDC sessions are now properly persisted across immediate restarts, preventing session loss
  * UPDATE statements can now modify multiple subfields within a single operation (e.g., `SET a.b = 1, a.c = 2`)
  * CDC can now automatically split large individual change payloads to ensure reliable data transmission, even with large documents
  * Resolved a TLS public key race condition that could cause connection failures
  * Syntax error identification in UPDATE statements now provides clearer guidance
</Update>

<Update label="v1.45.2" description="w/c May 26, 2025">
  **Ditto Server 1.45.2 expands query flexibility with configurable `DQL_STRICT_MODE`, delivers powerful new DQL features such as `DISTINCT` selection and advanced scalar functions, and improves performance and reliability across replication, storage and query execution.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * `DQL_STRICT_MODE` can now be toggled directly from the DQL editor
  * DQL `DISTINCT` selection support for deduplicating query results
  * Additional DQL scalar functions for advanced object manipulation, and support for passing an `ARRAY` of values to the `IN` operator.
  * Document IDs generated via the `/store/write` HTTP API now use the more compact `ObjectID` format (previously `UUIDv4`).
  * `DELETE` statements and automatic tombstone eviction are now generally available on Big Peer
  * DQL date functions accept the special timezone value `"local"`, evaluating in the executing peer’s local timezone
  * Connected SDK clients automatically migrate to CRDT v6 on first sync with a Big Peer
  * Added the `v5/store/execute` HTTP API endpoint, which operates with `DQL_STRICT_MODE=false` semantics

  <Icon icon="minus" iconType="solid" horizontal /> **Deprecated:**

  * Legacy Small Peers (pre v2 and below) can no longer authenticate to **Online With Authentication** or **Online Playground** modes
  * Collection aliasing in `INSERT` statements is no longer supported

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * `DQL_STRICT_MODE=false` is now the default for CDC pipelines, Big‑Peer‑to‑Big‑Peer subscriptions and Data Bridge filters, reducing the need for manual configuration.
  * Resolved an issue where queries protected by `WITH PERMISSION` clauses could short‑circuit and omit valid results
  * Corrected index‑planning for conditional queries using functions such as `IS NULL` or `IS NOT MISSING`, preventing documents from being skipped
  * SDK clients now migrate more reliably to the latest CRDT version during initial synchronisation
</Update>

<Update label="v1.42.3" description="w/c Apr 21, 2025">
  **Ditto Server 1.42.3 introduces several new features, including CDC Data Bridges, automatic tombstone eviction and numerous DQL capabilities.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * CDC now supports [Data Bridges](/cloud/cdc), allowing the creation of multiple individually filtered Kafka topics or webhook integrations
  * Ditto Server is now able to automatically evict tombstones produced from document `DELETE`s. *This can be enabled on request by contacting Ditto Support*
  * DQL `EXPLAIN` to show query plans
  * DQL `CAST` function to explicitly cast between types
  * DQL clause `USE IDS` for direct document retrieval by ID
  * DQL `SIMILAR TO` filter expression
  * New DQL `DATE` processing functions
  * New DQL string functions
  * DQL `PN_COUNTER` support (`APPLY` clause in `UPDATE` statement)
  * DQL support for `UNSET` clause in `UPDATE` statements
  * DQL `MERGE` now acts as an alias for `UPDATE` in the `ON ID CONFLICT` clause of an `INSERT` statement
  * DQL support to use runtime-evaluated expressions in object constructs in DQL statements
  * DQL support for static expressions in mutators
  * DQL `INSERT` now accepts either `DOCUMENTS` or `VALUES` as the keyword introducing the list of values to insert
  * DQL now has the ability to use runtime-evaluated expressions in array constructs in DQL statements

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Improved Ditto Server query timeout behaviour
  * Various CDC reliability improvements
  * Improvements to Ditto Server memory management and resilience
  * Improved sync performance in memory constrained scenarios
</Update>

<Update label="v1.41.0" description="w/c Feb 26, 2025">
  **Ditto Server 1.41.0 delivers major performance enhancements for heavy workloads, introduces powerful new DQL features, and includes numerous optimizations and fixes.**

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Major performance improvements and resource usage reductions when under load
  * Support for `LIMIT`, `OFFSET` and `ORDER BY` for mutating DQL statements
  * Support for the `LIKE` DQL operator
  * Support for `object_keys` and `object_values` scalar DQL functions
  * Improved performance for DQL queries with `IS NOT MISSING` predicates on `MAP` fields
  * Improved concurrency on Ditto Server's subscription server
  * Improved performance around document eviction

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Addresses an issue where the legacy query language sometimes failed to return appropriate results using the @ Operator
  * Addresses an consistency issue when performing DQL comparison between large floats and integers
  * Optimizations to authentication and device user management
</Update>

<Update label="v1.40.3" description="w/c Jan 13, 2025">
  **Ditto Server 1.40 introduces an overhaul of the underlying data structures of Ditto Server's store, resulting in
  substantial improvement to performance and reliability, while unlocking new capabilities for upcoming features.**

  In addition, 1.40 contains a number new improvements and fixes.

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * A new data architecture for Ditto Server, improving reliability, performance and unlocking future capabilities
  * Ditto Server evictions are now available as a preview feature. Contact us to enable this feature for your instances
  * Synchronization protocol enhanced to reduce the amount of redundant data sent from small peers to Ditto Servers
  * Bump the minimum supported CRDT version for Ditto Server apps to V6
  * Several improvements to Ditto Server reliability and deployment efficacy

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Addresses a rare issue decompressing attachments during replication
  * Performance optimisations made to document deduplication on the subserver
  * Device name no longer incorrectly defaults to "ditto" in device table, when a named device first starts syncing
  * Fixed an issue where HTTP API calls might incorrectly fail when passing a transaction ID as part of the call
  * Fixes a potential deadlock condition in Ditto Server
  * Align Kafka producer and consumer message sizes to prevent potential backpressure scenarios
  * Network policy improvements to enable new feature development
</Update>

<Update label="v1.39.2" description="w/c Oct 14, 2024">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Networking policy enhancements to support architectural improvements
</Update>

<Update label="v1.39.0 " description="w/c Sep 5, 2024">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Addresses a rare issue decompressing attachments during replication
</Update>

<Update label="v1.38.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Improved the API Key validation of the HTTP API to now automatically retry a number of times in case of transient issues, before throwing an error to the caller

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * An issue where HTTP API calls might incorrectly fail when passing a transaction ID as part of the call
  * A failure when executing remote queries that contained non-ASCII characters in the SYNC CONTEXT clause
  * An issue that prevented attachment replication when a large number of documents were also being simultaneously replicated
  * A number of issues related to data convergence during replication in rare scenarios
</Update>

<Update label="v1.37.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Improved the API Key validation of the HTTP API to now automatically retry a number of times in case of transient issues, before throwing an error to the caller
</Update>

<Update label="v1.36.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * DQL INSERT statements run via the HTTP API now support inline object literals.
  * The /api/v4/attachments/{attachment_id} HTTP endpoint now supports HEAD requests to check for attachment's existence.
  * Improved the performance of subscriptions with limits.
  * Improved the performance of replication during garbage collection.

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fixed a failure in replication in cases where there are frequent subscription changes and on-device evictions.
  * Fixed an issue which could cause a crash during document merges when using older versions of the SDK.
</Update>

<Update label="v1.35.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Improved query performance for DQL queries that access attachments, through the HTTP data API.
  * Improved handling of slow WebHook targets by enforcing a 30-second timeout to outgoing WebHook calls, this prevents lockups and other unexpected behavior when using WebHook connections.
  * Improved replication to avoid resending metadata, resulting in a reduction in overall replication traffic and processing when sync subscriptions change.
</Update>

<Update label="v1.34.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Added support for inline object and array definition to DQL through the HTTP API.
  * Added object\_length() and deserialize\_json() functions to DQL through the HTTP API.
  * Improved the error message for cases where the query result is too large.
  * Removed the /{collection}/distinct\_values HTTP endpoint.
  * Removed support for X-DITTO-CLIENT-ID, X-DITTO-ACTOR-ID, X-HYDRA-CLIENT-ID from the HTTP API.

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fixed a hang when replicating documents or attachments larger than 64KB.
  * Fixed the default HTTP API response format to correctly be application/json if not specified in the request.
  * Fixed a rare edge case that could slow down sync when using very small documents.
</Update>

<Update label="v1.33.0">
  * Synchronized version bump release – No changes.
</Update>

<Update label="v1.32.0">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Potential crash as a result of a DQL query containing a multi-byte character. (#12324)
  * A hang in the transports multiplexer when handling large messages spanning multiple chunks larger than 64KB. (#12428)
</Update>

<Update label="v1.31.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Attachments now sync independently of documents, improving rainbow connection efficiency (#11156)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Sync crashes due to missing update files and other unexpected conditions are now handled recoverably (#11952)
</Update>

<Update label="v1.30.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Improve performance by avoiding deserializing the entire Document if only part of it is required. (#10887)
  * Removed is\_connected\_to\_big\_peer field from the Small Peer Info document. (#11883)
  * Increased the limit on the allowable depth of the Small Peer Info JSON metadata. (#11891)
  * Attachments are more performant when working with many attachments concurrently
  * Spread work more evenly across Ditto Server store writer threads. (#11939)
  * MeshChooser now supports a limited set of runtime configurable values via the mesh\_chooser\_\* system parameters. (#11968)
  * String functions byte\_length and char\_length. (#12147)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Resolved legacy query language casting counters and maps with tombstones to the wrong boolean value (#10887)
  * Resolved Bytes and Arrays not being always comparable in the legacy query language. (#10887)
  * Resolved UST initial polling unbounded error retry. (#11841)
  * Resolve legacy query language accepting invalid field names. (#11888)
  * Resolved HTTP API OpenAI spec that will cause duplicated Authentication header in certain generated clients. (#11936)
  * A warning message that appears when peers connect is no longer logged (No handle found to notify the shutdown; multiple message handling loops??) (#11977)
  * When replicating in mixed meshes from V4 to V3 full state will be sent. (#12029)
  * Lowered the log level of some SQLite3 notices that were being unnecessarily logged as warnings. (#12032)
  * The Small Peer Info collector no longer gets stuck waiting to upload logs under certain conditions. (#12070)
  * Duration parameters can now be set via DQL, whereas before they would fail to type check. (#12070)
  * Ensure document cache GC always progresses regardless of configured time slice and load. (#12091)
</Update>

<Update label="v1.29.2">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Revert "Fix DocumentCache cache wrong result for Sort + Limit queries. (#9435)
  * Query plan for queries using the contains function with an empty array. (#12010)
</Update>

<Update label="v1.29.1">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Stream-splitter consumer migration applying old offset. (#11985)
  * Query plan for queries using the contains function with an empty array. (#12010)
</Update>

<Update label="v1.29.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Update stream-splitter to respect Ditto login retry interval and attempts. (#11785)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Stream-splitter checks for kafka.enabled before spawning user-consumable streams. (#11788)
  * Tweak hydra-cdc-heartbeat to avoid stuck consumer. (#11815)
  * Application crashes while preparing to syncing data to remote peer. (#11843)
  * Fix Subserver caching wrong result for queries with sort and limit. (#9435)
</Update>

<Update label="v1.28.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Improve UST polling resilience in HTTP API and subserver (#11701)

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * DQL queries can now query for the id, len and metadata fields of attachments (#11481)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Do not error in DQL inserts with the DO NOTHING conflict policy (#11730)
</Update>

<Update label="v1.27.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Synchronization protocol enhanced to prevent accumulation of unsubscribed documents after subscription change, and limits redundant data exchanged when re-synchronizing. (#10440)
  * Reduce metadata lock contention while applying transactions (Avoid metadata read lock in apply\_txns\_internal #11654)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix race between applying of transactions and reconfiguration of replicas (#11361)
</Update>

<Update label="v1.26.0">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Legacy query language casting counters and maps with tombstones to the wrong boolean value
  * Legacy query language not allowing comparison against attachment objects.
  * Bug where certificate request would not check identity data hash with JWT’s
  * Bug where the certificate request would fail with big permissions
</Update>

<Update label="v1.25.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Improve read query performance of legacy contains(\[..], \_id) syntax (#10987)
  * Parser error messages emphasize the location of the error and de-emphasize a potential fix. (#11040)
  * Reduce HTTP API latency with improved lock map version tracking (#11278)
  * Improved read query performance for DQL queries using array\_contains (#11338)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * An issue where an internal data decoding function could panic on certain inputs (#10376)
  * Return 500 instead of 401 upon internal error while validating API key. (#11178)
  * A bug where Link could run into an infinite loop. (#11188)
</Update>

<Update label="v1.24.1">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Make actix-web keep alive timeout configurable for Ditto Server (#9578)
</Update>

<Update label="v1.24.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Preliminary support for runtime configuration using DQL ALTER SYSTEM and SHOW statements (Hook up DQL entrypoint to parameter store #10401)

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Peers use latest supported protocol version, even if the application is using backwards-compatible CRDT formats. (Disentangle protocol version from protocol flags #10875)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix deadlock when replicating attachments to Ditto Server (Fix AttachmentsPeer deadlock when setting up outbound backoff #11036)
</Update>

<Update label="v1.23.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Improve read query performance on queries with multiple ranges (#10605)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix incorrect DQL literal comparison behavior in Ditto Server planning. This fixes a correctness issue where Ditto Server could return no results when it should return all documents in a collection. This also makes Ditto Server avoid a full scan in certain cases where it should return no results. (#10940)
</Update>

<Update label="v1.22.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * SDK version/language/platform and device name are now included in the small peer info document. (#10515)

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Improved read query performance by pre-filtering non-matching document ids (#10620)
  * Improve memory usage and performance of Documents (#10736)
  * Performance by implementing bipartite distance-aware mesh topology (#10632)

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Mesh would choose random connections (#10711)
  * Fix `NOT` on non-Boolean panics on Ditto Server (#10762)
  * Fixed a bug with Ditto's internal crash handler (#10022)
  * Initial logging events now use the same format as all other logs (#10611)
</Update>

<Update label="v1.21.4">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix hashing bug in Ditto Server store node controller
</Update>

<Update label="v1.21.3">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix a bug preventing updates to clusters from rolling out properly.
</Update>

<Update label="v1.21.2">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix bug related to Kafka transaction chunking
</Update>

<Update label="v1.21.1">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Improved run-time validation of corrupted attachments being inserted into documents (#10552)
</Update>

<Update label="v1.21.0">
  * Synchronized version bump release – No changes.
</Update>

<Update label="v1.20.1" description="w/c Oct 30, 2023">
  <Icon icon="minus" iconType="solid" horizontal /> **Deprecated:**

  * Deprecated experimental time-series HTTP APIs

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Ditto Server queries matching on nested objects or arrays return the expected documents (#10382)
  * Addressed a warning from SQLite that sometimes occurs on startup about a schema change (#10501)
</Update>

<Update label="v1.19.0" description="w/c Oct 9, 2023">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fixed HTTP API output format for Attachments when using SerializedAs::LatestValues

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Remove doc\_ids from requery\_required message in CDC
  * Reduced metadata accumulation after eviction by clearing remote summaries
</Update>

<Update label="v1.18.0" description="w/c Sep 18, 2023">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Add attachments support for HTTP API RPC v4
</Update>

<Update label="v1.17.0" description="w/c Sep 11, 2023">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Optimized Ditto Server internal data serialization performance.
  * Optimized the updates of internal system collections when doing writes with the HTTP RPC API.

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fixed a bug around where queries could return an older version of documents around a server reboot.
</Update>

<Update label="v1.14.0" description="w/c Aug 14, 2023">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Add RPC V4 HTTP API.
  * Update our OpenAPI specification to include the new count request.

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Made the Ditto Server more resilient to Kafka broker disconnects
  * Improve our HTTP API implementation to reduce Timeout related errors
</Update>

<Update label="v1.12.1" description="w/c Jul 24, 2023">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix bug in Ditto Server device certificate CA rotation process
  * Improved performance when multiple peers with distinct permissions work with the same cloud endpoint
</Update>

<Update label="v1.11.0" description="w/c Jul 17, 2023">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Various fixes and improvements for better reliability, security, and performance
</Update>

<Update label="v1.10.0" description="w/c Jul 10, 2023">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Minor bug fixes and performance improvements.

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Changed: new serialization format improves efficiency of replication, particularly in the Ditto Server
</Update>

<Update label="v1.9.1" description="w/c Jul 3, 2023">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix detection of broken stream when there are multiple apps in the transaction log
</Update>

<Update label="v1.9.0" description="w/c Jun 26, 2023">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Initial release of the lazy deserialization optimization for the Ditto Server.
  * Tighten network policies for increased security and stability
</Update>

<Update label="v0.30.0" description="w/c Aug 21, 2022">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix bug where Ditto Server would sometimes panic if an SDK peer managed to create multiple Ditto instances with the same persistence directory. We are seeing this error more than we originally hoped. This change makes any occurrence non-fatal until we fix the root cause. There will be another followup change that will re-enable alerting for this event.
</Update>

<Update label="v0.29.0" description="w/c Aug 14, 2022">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Fix bug where HTTP API upserts would not always be reflected in subsequent find requests.

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Properly consider limit+offset+order\_by for active queries
</Update>

<Update label="v0.28.0" description="w/c Aug 7, 2022">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Minor bug fixes and performance improvements
</Update>

<Update label="v0.27.0" description="w/c Jul 31, 2022">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Supports Ditto SDK through version 2.0.x.
</Update>

<Update label="v0.26.0" description="w/c Jul 24, 2022">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Minor bug fixes and performance improvements
</Update>

<Update label="v0.25.0" description="w/c Jul 17, 2022">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Minor bug fixes and performance improvements.

  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Add collection and document id to RequeryRequired requests as part of the live query WebHook and CDC.
</Update>

<Update label="v0.24.0" description="w/c Jul 10, 2022">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Minor bug fixes and performance improvements
</Update>

<Update label="v0.23.0" description="w/c Jun 19, 2022">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Minor bug fixes and performance improvements
</Update>

<Update label="v0.22.0" description="w/c Jun 5, 2022">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Minor bug fixes and performance improvements
</Update>

<Update label="v0.21.0" description="w/c May 22, 2022">
  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Minor bug fixes and performance improvements
</Update>

<Update label="v0.20.0" description="w/c May 8, 2022">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Supports Ditto SDK through version 1.1.6
  * Parity between document and timeseries HTTP APIs
  * HTTP API calls that were GET with a body now also accept POST. They will accept both methods and will behave the same no matter which method is used.
</Update>

<Update label="v0.17.0">
  <Icon icon="plus" iconType="solid" horizontal /> **Added:**

  * Supports Ditto SDK through version 1.1.5, including improvements to replication efficiency.

  <Icon icon="screwdriver-wrench" iconType="solid" horizontal /> **Fixed:**

  * Adds HTTP API RPC Remove and Update commands (remove + update). With remove, users may provide a query and delete all matching records. The update command mimics Ditto SDK update behavior and applies a series of updates to all matching documents.
  * The old header names are now deprecated (All HTTP API Headers used by Ditto will be prefixed with X-DITTO-...).
</Update>
