What dragonflydb/dragonfly shipped
Written by FoxPlug from the repository's own releases; not affiliated with Dragonflydb. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/dragonflydb/dragonfly; Dragonflydb did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of October 5, 2026
What shipped
- Released v2.0.2, a patch release fixing a crash when DFLYMIGRATE is sent to a server not in cluster mode, and a crash on glob patterns with many wildcards in KEYS and SCAN-family MATCH patterns. Release
- Deeply nested search queries no longer overflow fiber stacks: evaluation, walking, profiling, rendering and destruction are now iterative, with depth bounded by query length at every entry point. Pull request #8492
- The macOS daily build works again with OpenSSL 4, which const-corrected the X509 accessors used when parsing TLS certificate info; the code now also builds against 1.1.1 and 3.x. Pull request #8509
- Global command rendezvous moved from JournalApplier to MultiShardExecution, with no functional changes. Pull request #8526
- List node ZSTD dictionary compression now honors
dont_compressand skips rejected nodes, so LSET with a large value no longer compresses a node being replaced. Pull request #8487 - The version check now reports anonymous deployment environment, role and finer cloud details so production can be told apart from dev and CI. Pull request #8498
- Search indices left unbuilt by a failed load or reload are now dropped instead of being reported as fully indexed and dereferenced by queries. Pull request #8500
- An AOF streamer was added with flags, per-shard journal consumer implementation, heartbeat sealing of small open segments, and a basic test; AOF is not allowed for replicas for now. Pull request #8470
- With tiering, SAVE and BGSAVE now wait for delayed entries taken over by writers before the final flush, so keys are no longer silently dropped from the snapshot file. Pull request #8457
- A crash from memory access after a key was deleted during HNSW index restoration was fixed, with a concurrent-deletion regression test. Pull request #8466
Why it matters
This week brought a patch release plus a run of fixes for crashes and data-loss paths: glob patterns in KEYS and SCAN-family commands, DFLYMIGRATE outside cluster mode, failed search index loads, HNSW restoration, and snapshots under tiering. Work also continued on the new AOF on-disk format and segment writer, and on making deeply nested search queries safe from stack overflow. Users on the patch release get the crash fixes, and the AOF and search refactors set up the next round of changes.
Changelog entry
- Release v2.0.2: fixes a crash when DFLYMIGRATE is sent to a server not in cluster mode and a crash on glob patterns with many * wildcards in KEYS and SCAN-family MATCH patterns. Release
- Fix(search): prevent stack overflow on deeply nested queries by replacing recursive evaluation, walking, profiling, rendering and destruction with iterative processing. Pull request #8492
- Fix(facade): build against OpenSSL 4 by using const-correct X509 accessors, keeping support for OpenSSL 1.1.1 and 3.x. Pull request #8509
- Refactor: move global command rendezvous from JournalApplier to MultiShardExecution; no functional changes. Pull request #8526
- Fix(qlist): skip
dont_compressand rejected nodes in ZSTD dictionary compression so LSET with a large value no longer compresses a node being replaced. Pull request #8487 - Report anonymous deployment environment, role and finer cloud details in the version check. Pull request #8498
- Fix(search): drop search indices left unbuilt by a failed load instead of reporting them as fully indexed. Pull request #8500
- Fix: prevent memory access after key deletion during HNSW index restoration, with a concurrent-deletion regression test. Pull request #8466
- Fix(snapshot): wait for delayed entries taken over by writers before the final flush so cluster and tiered snapshots no longer drop keys. Pull request #8457
- Feat(aof): add AOF streamer with flags and checks, a per-shard journal consumer, heartbeat sealing of small open segments, and a basic test. Pull request #8470
- Feat(aof): add durability handler for fsync, reduced durability state and error handling. Pull request #8464
- Feat(aof): add segment writer that asynchronously writes sealed blocks to the page cache and drains in-flight parallel writes. Pull request #8456
V2.0.2 is out: fixes a crash when DFLYMIGRATE hits a non-cluster server and a crash on glob patterns with many * wildcards in KEYS and SCAN-family MATCH. This week also made deeply nested search queries iterative, and added an AOF segment writer with a per-shard streamer.
This week Dragonfly shipped v2.0.2, a patch release that fixes a crash when DFLYMIGRATE is sent to a server not in cluster mode and a crash on glob patterns with many * wildcards in KEYS and SCAN/HSCAN/SSCAN/ZSCAN MATCH patterns. Alongside the release: deeply nested search queries are now processed iteratively so they no longer overflow fiber stacks, search indices left unbuilt by a failed load are dropped instead of being reported as fully indexed, and snapshots under tiering wait for delayed entries taken over by writers before the final flush. Work on the new AOF on-disk format, block builder and segment writer continued.
Week of September 28, 2026
What shipped
- Double-to-string formatting now uses dragonbox instead of google/double-conversion, benchmarking 1.88-3.36x faster than main. Pull request #8461
- OAHTable now automatically shrinks to reclaim spare capacity after removals when entry count falls below half the bucket count. Pull request #8454
- FT.INFO
percent_indexednow reports actual index build progress instead of fixed values during building. Pull request #8428 - Dragonfly now uses Valkey's hash-field-expiry RDB encoding as the default, adding protocol version 7 support. Pull request #8370
- MGET and memcache multi-key operations now borrow large values zero-copy under --get_zero_copy instead of copying them. Pull request #8420
- FT.SEARCH, FT.AGGREGATE and FT.HYBRID now support punctuation inside query words like @email:*example.com* and john.doe. Pull request #8419
- Unsupported RDB formats now terminate replication instead of retrying indefinitely, with explicit error reporting. Pull request #8421
- Fixed INFO persistence reporting
rdb_bgsave_in_progress:1 forever after BGSAVE by correcting member variable shadowing. Pull request #8459 - V2 pipeline squash now breaks after successful completion so bounded-pipeline clients can replenish requests without stalling. Pull request #8431
- Removed legacy RedisParser implementation now that separate RESP parsers are used throughout the codebase. Pull request #8465
Why it matters
This week brings significant performance improvements in string formatting and memory efficiency through automatic table shrinking and zero-copy operations. Search queries gain real progress reporting and punctuation support, while replication becomes more robust with proper error handling for unsupported formats. These changes address both user-facing features and internal stability for operators running production systems.
Changelog entry
- Performance: Double-to-string formatting 1.88-3.36x faster with dragonbox Pull request #8461
- Feature: Automatic OAHTable shrinking after removals Pull request #8454
- Feature: FT.INFO
percent_indexedshows real build progress Pull request #8428 - Feature: Valkey hash-field-expiry RDB encoding as default format Pull request #8370
- Performance: MGET zero-copy borrowing for large values Pull request #8420
- Feature: Punctuation support in FT.SEARCH/AGGREGATE/HYBRID queries Pull request #8419
- Fix: Unsupported RDB formats now terminal for replication Pull request #8421
- Fix:
rdb_bgsave_in_progresscleared properly after BGSAVE Pull request #8459 - Fix: V2 pipeline squash now breaks after successful completion Pull request #8431
- Fix: SORT BY/GET now reads offloaded strings instead of aborting Pull request #8436
- Refactor: Removed legacy RedisParser implementation Pull request #8465
- Chore: Updated third-party dependencies including Re-flex, croncpp, and SimSIMD Pull request #8460
New in Dragonfly: 1.88-3.36x faster double formatting with dragonbox, automatic OAHTable shrinking, real FT.INFO progress reporting, Valkey hash-expiry RDB support, zero-copy MGET, and punctuation in search queries.
This week's Dragonfly updates focus on performance and reliability. Double-to-string formatting is now 1.88-3.36x faster using dragonbox. OAHTable automatically shrinks after removals to reclaim capacity. Search queries gain real progress reporting and support punctuation like @email:*example.com*. MGET operations now borrow large values zero-copy. Replication becomes more robust by terminating unsupported RDB formats instead of retrying indefinitely. These improvements enhance both user experience and operational stability.
Week of September 21, 2026
What shipped
- CLUSTER SLOTS and SHARDS commands now batch their replies to reduce socket writes from thousands to one for large slot configurations. Pull request #8390
- Tiering now correctly accounts for large disk allocations above 1 MiB to track actual disk usage. Pull request #8377
- SCRIPT FLUSH no longer deadlocks by making the interpreter pool non-blocking with generation-based expiration. Pull request #8110
- FT.PROFILE now reports shard-side search errors instead of silently treating them as empty results. Pull request #8391
- Glob pattern matching in KEYS, SCAN, and other commands now iterates instead of recursing to prevent fiber stack overflow. Pull request #8350
- List compression is now controlled by a configurable policy flag instead of a single threshold. Pull request #8008
- Empty field names are now rejected in FT.CREATE, FT.ALTER, and FT.SEARCH to prevent crashes. Pull request #8385
- Set implementation reverted from StringSet back to OAHset. Pull request #8398
- Data heap destruction is now one-shot instead of making many individual destructor calls. Pull request #8336
- Replication tests now wait for replicas to catch up before comparing data sets. Pull request #8369
Why it matters
This week addresses performance bottlenecks in clustering and tiering, fixes critical issues in search and script management that could cause crashes or deadlocks, and improves test reliability. Memory and pattern matching improvements benefit workloads at scale.
Changelog entry
- Perf: batch reply for cluster slots/shards - reduces socket flushes from N*7 to 1 for 8k slots Pull request #8390
- Fix(tiering): Account for large disk allocations above 1 MiB Pull request #8377
- Fix: non-blocking interpreter pool so SCRIPT FLUSH can't deadlock Pull request #8110
- Fix(search): make FT.PROFILE report shard errors like FT.SEARCH Pull request #8391
- Fix(core): match globs iteratively to prevent fiber stack overflow Pull request #8350
- Feat(qlist): add --list_compress_policy for list compression configuration Pull request #8008
- Fix: reject empty field names and consume SETID parse errors Pull request #8385
- Fix(set): set OAHset implementation instead of StringSet Pull request #8398
- Perf: one-shot data heap destruct Pull request #8336
- Fuzz: make crash replay find the input that actually crashed the server Pull request #8396
This week: cluster command batching reduces socket writes, SCRIPT FLUSH deadlock fix, FT.PROFILE error reporting, glob pattern overflow prevention, and tiering disk accounting improvements.
Weekly update: CLUSTER SLOTS/SHARDS now batch replies for massive write reduction on large configurations. SCRIPT FLUSH deadlock eliminated through non-blocking interpreter pool. Search profiling now reports shard errors correctly. Pattern matching prevents fiber stack overflow. Tiering accurately tracks large disk allocations. Plus fixes to empty field validation and replication test reliability.
Week of September 14, 2026
What shipped
- Dragonfly v2.0.0 released, marking a major version milestone after three years with expanded Redis and Valkey compatibility. Release
- SCAN command family refactored to use shared ScanResult container with packed storage for better performance on small scan keys. Pull request #8352
- SCAN result collection optimized by packing key bytes into shared backing storage, with fallback to individual strings after 1 MiB. Pull request #8314
- Hash field expiration accuracy improved with second-resolution deadline helpers and rounded deadlines for better replay determinism. Pull request #8340
- Valkey TCL CI gate expanded from stream/pubsub to 248 additional passing tests including incr, string, bitfield, bitops, scan, dump, and geo. Pull request #8343
- Lua performance optimized by retrieving string data pointers and byte lengths in single API calls during redis.call argument preparation. Pull request #8335
- Expired keys now hidden from read commands even when client pause is active, improving consistency. Pull request #8323
- Commands parked by CLIENT PAUSE now properly released when connections close, preventing SIGTERM/SHUTDOWN hangs. Pull request #8296
- Hash and zset listpack validation improved on RDB load to surface errors and prevent NULL-dereference crashes. Pull request #8328
- Script load contention reduced by releasing borrowed Lua interpreters immediately after compilation before journaling. Pull request #8321
Why it matters
Version 2.0.0 marks significant maturity and production readiness. This week's changes focus on performance optimizations for SCAN operations, improved hash expiration accuracy, expanded Valkey test compatibility, and critical fixes for client pause handling and script loading that improve reliability at scale.
Changelog entry
- Release v2.0.0 with expanded Redis and Valkey compatibility Release
- Refactor SCAN command family to use shared ScanResult container with packed storage for small keys Pull request #8352
- Optimize SCAN result collection by packing key bytes into shared backing storage Pull request #8314
- Improve hash field expiration accuracy with second-resolution deadline helpers Pull request #8340
- Expand Valkey TCL CI gate to include 248 additional passing tests Pull request #8343
- Optimize Lua redis.call performance by retrieving string data in single API call Pull request #8335
- Hide expired keys from reads even when client pause is active Pull request #8323
- Fix CLIENT PAUSE hang by properly releasing parked commands on connection close Pull request #8296
- Validate hash and zset listpacks deeply on RDB load to prevent crashes Pull request #8328
- Reduce script load contention by releasing interpreters before journaling Pull request #8321
- Reject default user authentication without JWT token when JWT is enabled Pull request #8291
- Allow JWT authentication with TLS Pull request #8322
- Verify ACL categories match Valkey in CI Pull request #8311
- Fix ACL category mismatches and implicit category overwriting Pull request #8308
- Fix per-key permission checks for read-write commands Pull request #8249
- Reject invalid cluster node health values in config parser Pull request #8306
- Turn off journal after a bound when replica will not reconnect Pull request #8259
- Use RESPParser for Redis replication Pull request #8211
Dragonfly v2.0.0 is here. Three years in the making. Expanded Redis/Valkey compatibility, optimized SCAN performance, better hash expiration accuracy, and critical reliability fixes.
We're excited to announce Dragonfly v2.0.0—a major milestone representing three years of development toward production maturity. This release includes optimized SCAN command performance through shared result storage, improved hash field expiration accuracy for deterministic replay, expanded Valkey TCL test compatibility covering 248 additional tests, and critical reliability fixes including proper CLIENT PAUSE cleanup and script loading contention reduction.