- Add Cuckoo Filter data type with CF.RESERVE, CF.ADD, CF.ADDNX, CF.EXISTS, CF.MEXISTS, CF.INSERT, CF.INSERTNX, CF.INFO, CF.COUNT, CF.DEL, and CF.COMPACT commands
- Add RDB serialization support for Cuckoo filters, enabling DUMP/RESTORE and persistence
- Add EPSILON parameter for HNSW-backed VECTOR_RANGE queries to control overscan and recall near the radius boundary
- Add support for KNN query attribute block syntax with EF_RUNTIME and YIELD_DISTANCE_AS
- Add RESET command to reset a connection to a fresh-connection baseline
- Add Redis-compatible WAIT command to block until replicas acknowledge writes
- Add HGETEX and HPEXPIRETIME hash commands
- Add BF.INFO command for Bloom filter metadata
- Add BM25STD.NORM and BM25STD.TANH scorers for FT.SEARCH, FT.AGGREGATE, and FT.HYBRID
- Add optional path argument to JSON.STRAPPEND, defaulting to root
- Add HELP subcommand to SAVE and BGSAVE
- Add connection_memory_bytes Prometheus metric tracking active client connection memory
- Add snapshot_egress_limit_bytes to throttle per-shard socket egress during RDB and snapshot saves
- Add write_connection_throttling_sleep_usec to throttle pipelined write batches
- Vector search now stores and computes vectors at native declared width instead of always widening to FLOAT32, reducing memory usage
- INFO command now includes TLS certificate metadata (subject, issuer, validity dates) when TLS is enabled
- Enable event-driven V2 IO loop for TLS connections
- Enable tagged chunk serialization by default during snapshotting and replication
- GET now returns large raw strings (≥16KB) via zero-copy borrowed view instead of copying
- Fix cascading replication correctness when an intermediate replica switches upstream masters under experimental cascaded partial sync
- Fix crash where an older replica reconnecting to a promoted master could crash the master due to a stale partial-sync index
- Fix CVE-2025-32023 in hyperloglog.c by re-syncing with upstream Valkey
Dragonfly v1.40.0
This is one of our biggest releases yet—both in terms of feature quality, total contributions, and the highest number of external contributors in the last two years.
This release delivers major new functionality alongside a large body of correctness and stability fixes for tiered storage, replication, pub/sub, and the experimental V2 I/O loop.
We added a new data type: Cuckoo Filters (CF.RESERVE, CF.ADD/ADDNX, CF.EXISTS/MEXISTS, CF.INSERT/INSERTNX, CF.INFO/COUNT/DEL/COMPACT, and RDB persistence). This brings Dragonfly to parity with RedisBloom's probabilistic structures alongside expanded Bloom filter (BF.INFO) and HyperLogLog support.
Vector search gains native-width storage across all vector dtypes, EPSILON-tuned HNSW range queries, and EF_RUNTIME control. Meanwhile, a long list of fixes hardens tiered-storage interactions with strings, hashes, lists, bitops, and HLL commands, in addition to several replication-consistency fixes around lazy TTL expiry. Performance work includes lazy lock-table registration, zero-copy GET, and replica-side command batching.
- New Cuckoo Filter data type with full command set and RDB support.
- Vector search now stores/computes at native declared width, plus EPSILON and EF_RUNTIME tuning for HNSW.
- Numerous tiered-storage and replication consistency fixes (HLL, hashes, lists, bitops, hash-field TTL expiry).
Highlights
- Added a full Cuckoo Filter data type with RDB persistence, bringing RedisBloom parity for probabilistic structures (#7646, #7700).
- Vector search now stores/computes vectors at native declared width instead of always widening to FLOAT32, reducing memory usage (#7849).
- Re-synced hyperloglog.c with upstream Valkey, fixing CVE-2025-32023 and adding AVX2/NEON kernels [up to ~29x speedup on dense HLL merges] (#7961).
Commands
- INFO now includes TLS certificate metadata (subject, issuer, validity dates) when TLS is enabled (#7844).
- SAVE and BGSAVE now support a HELP subcommand (#7865).
- JSON.STRAPPEND now supports an optional path argument, defaulting to root (#7868).
- Implemented the RESET command, resetting a connection to a fresh-connection baseline (#7760).
- Added Redis-compatible WAIT command, blocking until replicas acknowledge writes (#7454).
- Added HGETEX and HPEXPIRETIME hash commands (#7717).
- Added BF.INFO for Bloom filter metadata (#7761).
- Added BM25STD.NORM and BM25STD.TANH scorers for FT.SEARCH/AGGREGATE/HYBRID (#7692).
Vector Search
- Vector search (FLAT and HNSW) now stores and computes distances at native declared width (INT8, UINT8, FLOAT16, BFLOAT16, FLOAT32, FLOAT64) (#7849).
- Added EPSILON parameter for HNSW-backed VECTOR_RANGE queries to control overscan/recall near the radius boundary (#7718).
- Added support for KNN query attribute block syntax (
=>{$EF_RUNTIME: ...; $YIELD_DISTANCE_AS: ...}) (#7708). - Fixed filtered KNN vector search to serialize only actual winners instead of every pre-filter match, cutting CPU/memory overhead (#7670).
Cuckoo Filter
- Added CF.INSERT and CF.INSERTNX for bulk insertion, with optional CAPACITY and NOCREATE (#7719).
- Added compaction: CF.DEL auto-compacts past 10% deletions, plus a manual CF.COMPACT command (#7702).
- Added CF.EXISTS and CF.MEXISTS for single/multi-item membership checks (#7682).
- Added CF.ADD and CF.ADDNX, auto-creating filters with a default capacity of 1024 (#7681).
Probabilistic Data Structures
- Added RDB serialization support for Cuckoo filters, enabling DUMP/RESTORE and persistence (#7700).
- Added CF.INFO, CF.COUNT, and CF.DEL for filter metadata, occurrence counts, and item removal (#7691).
- Added the base Cuckoo Filter data type via CF.RESERVE, with a new CUCKOO_FILTER ACL category (#7646).
Performance
- Extended parse-in-proactor pipelining optimization to more fiber park spots (shard hops, suspended replies on tiered I/O) (#7916).
- Added
snapshot_egress_limit_bytesto throttle per-shard socket egress during RDB/snapshot saves (#7774). - Reworked open-addressing hash container (OAHPair/OAHEntry) with compact variable-width size encoding, reducing fragmentation (#7853).
- Enabled event-driven V2 IO loop for TLS connections (#7890).
- Lists loaded from RDB/replication now benefit from ZSTD dictionary compression on load, not just push (#7734).
- Replica-side Redis replication stream processing now batches commands via DispatchSquashedBatch (#7501).
- Added
write_connection_throttling_sleep_usecto throttle pipelined write batches, plus new batch I/O metrics (#7750). - [Total sampled CPU cycles dropped from 64.34B to 59.31B (-7.8%)] Prefetches command contexts before executing squashed pipelined commands (#7796).
- Optimistic single-shard inline transactions now skip lock-table registration in the common case (#7788).
- [+9.2% ops/s at pipeline=1, +5.0% at pipeline=10] V2 connection I/O loop drains pending socket data directly from RegisterOnRecv while suspended (#7608).
- GET now returns large raw strings (≥16KB) via zero-copy borrowed view instead of copying (#7426).
- Added connection_memory_bytes Prometheus metric tracking active client connection memory (#7550).
- Wired pipeline squashing into the V2 event-driven dispatch loop via --enable_pipeline_squashing_v2 (#7631).
Replication
- Fixed cascading replication correctness when an intermediate replica switches upstream masters under experimental cascaded partial sync (#7913).
- Enabled tagged chunk serialization by default during snapshotting and replication (#7823).
- RDB loader no longer aborts on EOF with a partially received tagged chunk; now logs a warning and continues (#7660).
- Fixed a crash where an older replica reconnecting to a promoted master could crash the master due to a stale partial-sync index (#7491).
- Added a Prometheus metric for replication backlog buffer memory usage (#7644).
Search
- Applied TEXT field schema weights and query-time $weight attributes to BM25/TF-IDF scoring (#7752).
- Added parsing support for query-time
=>{$WEIGHT}attributes on terms, tag filters, and vector range queries (#7749). - Added EF_RUNTIME support for HNSW vector search, actually applying it instead of just parsing it (#7696).
- Fixed FT.SEARCH quoted TAG values not matching stored values containing backslashes or quotes (#7907).
- Fixed a race in RestoreStreamer where concurrent Cancel()/Start() could double-unregister a change listener (#7707).
- Fixed KNN vector search score aliases to properly generate/return implicit score fields (#7604).
- Fixed FT.SEARCH to return VECTOR fields as raw stored binary buffer instead of textual representation for HASH-stored fields (#7586).
Cluster
- DFLYCLUSTER SLOT-MIGRATION-STATUS now includes covered slot ranges in its reply (#7911).
- Fixed a race between Finish() teardown and SyncFb retry loop in slot migration (#7869).
- Fixed OOM during incoming slot migration not propagating rollback deletion to the target's replica (#7533).
- Added predefined Helm chart values for enabling Redis-compatible cluster mode (#7123).
Security
- Fixed ACL DRYRUN gaps: multi-word commands, pub/sub channel checks, and content-dependent key positions (#7919).
- Fixed ACL DRYRUN to support command arguments for accurate key-pattern permission validation (#7871).
Cloud & Storage
- Fixed Azure snapshot storage to accept standard Azure Blob HTTPS URLs instead of custom az:// scheme (#7878).
- Added
list_tiering_prefetch_depthto asynchronously prefetch neighboring offloaded list nodes (#7834). - Made tiered storage initial backing file size configurable via
tiering_disk_storage_initial_size, with 5%-of-capacity growth policy (#7715). - Tiered storage now skips offloading keys with remaining TTL below a configurable minimum (
tiered_min_ttl_to_offload_ms) (#7624).
Bug fixes
- Fixed per-slot memory_bytes accounting in cluster mode to correctly track resident RAM across tiered storage operations (#7966).
- Fixed a read-buffer capacity accounting bug causing client_read_buffer_bytes to leak or double-count (#7951).
- Fixed two crash/corruption bugs in cluster mode slot operations (FlushSlots and GetSlotStats) and enforced strict db0-only usage (#7960).
- Fixed blocked XREAD/XREADGROUP being incorrectly woken by lower XADD ids, and a null-pointer crash on plain XREAD (#7959).
- Fixed blocking XREAD/XREADGROUP on emptied streams returning immediately instead of waiting (#7958).
- Fixed memory usage reporting for small string keys with TTL to report actual mimalloc block size (#7947).
- Fixed replication divergence with HEXPIRE, HGETEX, HSETEX, and FIELDEXPIRE on lazily expired fields (#7948).
- Fixed a crash when Lua scripts call GET on large string values via borrowed replies (#7934).
- Fixed a replication bug where SHRINK's bucket compaction could leave a deleted key alive forever on a replica (#7938).
- Fixed a cross-thread data race in command squashing accessing a shared reply builder concurrently (#7927).
- Fixed EPERM handling in the io_uring support check, falling back to epoll (#7810).
- Fixed slow Pub/Sub subscribers not being evicted based on per-connection queued-data threshold (#7917).
- Fixed a regression where UNSUBSCRIBE could jump ahead of queued pub/sub messages (#7909).
- Fixed the V2 dispatch queue loop not setting async_op_start_cycle_, hiding timed-out async operations (#7902).
- Dragonfly now force-closes blocked Pub/Sub subscribers exceeding a configurable soft memory limit (#7889).
- Fixed a bug where a dropped checkpoint message leaked the DispatchTracker counter, hanging REPLTAKEOVER/CLIENT PAUSE/shutdown (#7862).
- Fixed a race condition in REPLTAKEOVER where master-check and replica pointer check weren't atomic (#7870).
- Fixed a use-after-free bug garbling long strings (stream IDs, sortkeys, scan cursors) sent by reference (#7874).
- Fixed a bug where a blocked XREAD/XREADGROUP with COUNT ignored the COUNT limit on wake-up (#7872).
- RDB loading now skips keys with unsupported module types instead of aborting the whole load (#7912).
- Fixed a bug causing Dragonfly to SIGABRT on invalid startup flags instead of exiting cleanly (#7843).
- Fixed crashes/incorrect behavior when commands accessed offloaded string values (DEBUG OBJECT, INCRBYFLOAT, memcached APPEND/PREPEND, JSON.GET) (#7836).
- Fixed a race where heartbeat expiry/eviction could run while an optimistic transaction was suspended (#7826).
- Fixed crashes in HLL commands when values were offloaded to tiered storage, plus a pipeline-squashing race corrupting results (#7820).
- Fixed a race in the V2 (io_uring) connection loop allowing CLIENT PAUSE/takeover/migration/shutdown to proceed early (#7805).
- Fixed bitops commands (GETBIT, SETBIT, BITCOUNT, BITPOS, BITOP, BITFIELD) crashing on tiered string values (#7806).
- Fixed a bug where stopping MONITOR mode didn't decrement the subscriptions counter (#7777).
- Fixed the V2 IoLoopV2 path not tracking in-flight command dispatches, breaking CLIENT PAUSE/takeover/migration (#7764).
- Fixed buffered replies remaining undelivered when a subsequent pipelined command blocked in the V2 path (#7733).
- Fixed missing bookkeeping (command counters, idle timestamp) in the V2 connection batch dispatch path (#7726).
- Fixed a bug where a bare GETEX (no expiry options) was incorrectly replicated (#7701).
- Fixed a stats bug where io_uring multishot recv failed to update read counters (#7680).
- Fixed dragonfly_commands_processed_total always reporting 0 (#7667).
- Fixed a crash in Lua scripting when redis.call() received a non-string/number command name (#7655).
- Fixed a QList bug where inserting before the first element of a full head node misplaced the element (#7640).
- Fixed tiered list bugs: node deletion promoting offloaded nodes without materializing (#7638), stale entry pointers after restore (#7636).
- Fixed a bug where MOVEing a key between databases left stale search index and memory-usage entries (#7637).
- Fixed a replication bug where an older replica reconnecting to a promoted master could crash it (#7491).
- Fixed a crash when admin control commands appeared inside a squashed pipeline (#7621).
- Fixed a parsing bug where malformed RESP was silently treated as needing more input instead of a protocol error (#7615).
- Restored the experimental_io_loop_v2 flag after accidental removal (#7607).
- Fixed keyspace-notification delivery running inside a fiber-atomic section during heartbeat expiry (#7540).
- Re-enabled fiber yielding during long-running container iteration commands (#7449).
- Fixed BITFIELD, BITOP, and SETBIT accepting out-of-range bit offsets, risking overflow/crashes (#7513).
Huge thanks to all the contributors! ❤️
New Contributors
- @VedantMadane made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7123
- @github-actions[bot] made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7553
- @FarmerChillax made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7614
- @VincentNguyenDuc made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7777
- @kant2002 made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7809
- @magic-peach made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7830
- @jacovdbergh made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7872
- @danfeideliaoji made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7868
- @abhiramkaushik made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7870
- @alexluong made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7907
- @akhilp19 made their first contribution in https://github.com/dragonflydb/dragonfly/pull/7844
What's Changed
- chore: reproduce inline schedule during replication and save by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7508
- chore(server): Collapse BucketSet variant, cleanups by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7487
- bump: update helio submodule by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7532
- chore: disable failing tests by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7541
- feat: use more SIMD ops in OAHSet by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7537
- fix: build with WITH_COLLECTION_CMDS=OFF by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7539
- fix: oom on incoming slot migration does not clean the replica by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7533
- perf: zero-copy GET for large strings with CoW by @romange in https://github.com/dragonflydb/dragonfly/pull/7426
- fix: bound bitmap bit offsets and deny BITFIELD/BITOP under memory pressure by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7513
- fix(regtets): Increase test_big_huge_streaming_restart timeout by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7547
- feat(helm): add cluster mode values for Dragonfly chart by @VedantMadane in https://github.com/dragonflydb/dragonfly/pull/7123
- chore(deps): bump codecov/codecov-action from 6 to 7 in the actions group by @dependabot[bot] in https://github.com/dragonflydb/dragonfly/pull/7544
- chore: retire v1 and experimental_replicaof_v2 flag by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7542
- chore(server): Unify SerializeEntry calls in SerializerBase by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7468
- chore: update pubsub stress test and release notes generator by @romange in https://github.com/dragonflydb/dragonfly/pull/7527
- fix(tiering): Don't overstaturate when Offloading not requried by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7531
- CI: align release_helm_and_notify Go toolchain with go.work by @romange with @Copilot in https://github.com/dragonflydb/dragonfly/pull/7552
- chore: remove DispatchMC by inlining MC logic into DispatchCommand by @romange in https://github.com/dragonflydb/dragonfly/pull/7551
- perf(tx): track running transactions per-shard and enable inline scheduling during replication by @romange in https://github.com/dragonflydb/dragonfly/pull/7459
- test: re-enable test_reply_count for V1 by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7561
- fix(search): accept FT.AGGREGATE LOAD after SCORER/ADDSCORES by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7557
- fix(search): drop stopwords from query terms in FT.SEARCH by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7558
- chore(helm-chart): update to v1.39.0 by @github-actions[bot] in https://github.com/dragonflydb/dragonfly/pull/7553
- chore: add check-ast and pyflakes pre-commit hooks by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7554
- fix(search): support parenthesized and filtered VECTOR_RANGE queries by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7534
- fix: prevent integer overflow in max_busy_read_cycles_cached by @romange in https://github.com/dragonflydb/dragonfly/pull/7562
- chore: make CmdArgParser work directly with BackedArguments by @romange in https://github.com/dragonflydb/dragonfly/pull/7565
- feat(facade): extend ok_main with sharded SET/GET and async dispatch by @romange in https://github.com/dragonflydb/dragonfly/pull/7545
- server: Simplify Flush - PrepareFlush interaction by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7548
- chore: debug help for compact-table by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7568
- tests: Add a test which fails if RSS goes beyond used_mem by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7535
- chore(core): Re-enable container iterations yielding by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7449
- chore: pass CmdArgParser to async command handlers via SetAsyncHandler by @romange in https://github.com/dragonflydb/dragonfly/pull/7567
- fix: keyspace notifcations suspend heartbeat in atomic section by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7540
- chore: retire --rename_command and --oom_deny_commands flags by @romange in https://github.com/dragonflydb/dragonfly/pull/7569
- chore: Add python tests for concurrent QList node materialization by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7417
- fix(search): reply to FT.INFO with a flat array under RESP3 by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7576
- chore: use BackedArguments in DEBUG POPULATE by @romange in https://github.com/dragonflydb/dragonfly/pull/7571
- chore: Enable test_cluster_migration_with_tiering and relax parameters by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7573
- chore(server): use CycleClock for latency and move OOM check into ServerState by @romange in https://github.com/dragonflydb/dragonfly/pull/7577
- fix: eliminate false sharing in RecordLatency and fix data race in ok_main by @romange in https://github.com/dragonflydb/dragonfly/pull/7581
- chore: introduce CmdRef and generator-based MultiCommandSquasher by @romange in https://github.com/dragonflydb/dragonfly/pull/7564
- chore: reduce log level by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7583
- Add pipeline-reply plumbing to MultiCommandSquasher by @romange in https://github.com/dragonflydb/dragonfly/pull/7587
- fix(tiering): Avoid defrag spikes + fix negative memory budget bug by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7543
- chore: retire squash_stats_latency_lower_limit and simplify dispatch stats by @romange in https://github.com/dragonflydb/dragonfly/pull/7592
- Squash V1 pipelines via DispatchSquashedBatch by @romange in https://github.com/dragonflydb/dragonfly/pull/7588
- feat(facade): route ok_backend SET/GET through per-shard FiberQueue by @romange in https://github.com/dragonflydb/dragonfly/pull/7594
- Remove dead DispatchManyCommands by @romange in https://github.com/dragonflydb/dragonfly/pull/7589
- refactor: reduce threads contention for INFO cmd by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7523
- fix(search): return stored VECTOR fields verbatim in FT.SEARCH by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7586
- feat(server): No-op mutex when tagged chunks are enabled by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7463
- doc(serialization): sync shard-serialization.md with current code by @romange in https://github.com/dragonflydb/dragonfly/pull/7600
- fix(facade): retire experimental_io_loop_v2 flag by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7607
- fix(tests): tiering tests fixes by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7574
- refactor(server): record last-command stats at top-level dispatch by @romange in https://github.com/dragonflydb/dragonfly/pull/7599
- dfly_bench: Resolve MOVED response with DNS names by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7613
- docs: update Grafana dashboard links by @FarmerChillax in https://github.com/dragonflydb/dragonfly/pull/7614
- fix(facade): propagate parse status from batch parsers by @romange in https://github.com/dragonflydb/dragonfly/pull/7615
- Consolidate CommandId derived attributes into a kind_mask bitmask by @romange in https://github.com/dragonflydb/dragonfly/pull/7591
- refactor(facade): extract IoLoopV2 helpers to cut duplication by @romange in https://github.com/dragonflydb/dragonfly/pull/7617
- feat(facade): squash V1 pipelines and support io_uring provided buffers in ok_backend demo by @romange in https://github.com/dragonflydb/dragonfly/pull/7610
- fix(server): exclude admin commands from pipeline squashing by @romange in https://github.com/dragonflydb/dragonfly/pull/7621
- refactor(facade): extract IoLoopV2 phases into per-concern methods by @romange in https://github.com/dragonflydb/dragonfly/pull/7623
- fix: Persist search index options across restore and full sync by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7620
- stop test_big_huge_streaming_restart test by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7627
- perf(facade): Drain socket in recv callback by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7608
- feat(server): Concurrent squashing by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7597
- fix(test): Make container yield check atomic in ConcurrentWritesDuringContainerYield by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7609
- fix: KNN score aliases in FT.SEARCH and FT.AGGREGATE by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7604
- feat(ok_backend): accept bind and dbfilename flags by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7629
- Track dispatch_waiting_count_ and rename ok_backend metrics by @romange in https://github.com/dragonflydb/dragonfly/pull/7625
- fix(replication): reset partial sync index if dfly flow is received by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7491
- server: Adds metric for connection memory bytes by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7550
- refactor(facade): extract ok_main squasher into EmitBlockingBatch by @romange in https://github.com/dragonflydb/dragonfly/pull/7633
- test(fuzz): Add experimental persistent AFL++ nightly fuzzing by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7593
- fix: stale search index entries after MOVE by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7637
- fix(tiering): Fix QList node cleanup after clearing offloaded state by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7636
- fix(tiering): Keep tiered list endpoints materialized by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7638
- fix(list_family): Fix QList insert-before at head by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7640
- fix: experimental fuzz workflow validation and run title by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7641
- Extend dfly_bench JSON output by @romange in https://github.com/dragonflydb/dragonfly/pull/7643
- Add repl backlog memory metric by @romange in https://github.com/dragonflydb/dragonfly/pull/7644
- feat: add /benchmark Claude Code skill by @romange in https://github.com/dragonflydb/dragonfly/pull/7642
- feat: cuckoo filter data structutre by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7619
- build: Make the release artifacts use GLOG instead of absl by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7596
- chore(facade): remove no-op io_event_ notifies in ioloop v2 by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7635
- feat(server): Omittable DEL operation by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7496
- Coroutine batch squasher for ok_main V2 dispatch by @romange in https://github.com/dragonflydb/dragonfly/pull/7602
- fix: bound CMS dimensions to prevent heap overflow on INITBYDIM/INITBYPROB by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7647
- chore: pass BackedArguments through Lua redis.call path by @romange in https://github.com/dragonflydb/dragonfly/pull/7572
- fix: validate Lua redis.call command name argument by @romange in https://github.com/dragonflydb/dragonfly/pull/7655
- chore: migrate generic functions to use ParsedArgs by @romange in https://github.com/dragonflydb/dragonfly/pull/7654
- Back Transaction::full_args_ with facade::ParsedArgs by @romange in https://github.com/dragonflydb/dragonfly/pull/7656
- feat(facade): wire V2 dispatch loop into pipeline squashing by @romange in https://github.com/dragonflydb/dragonfly/pull/7631
- refactor(facade): extract IoLoopV2 data-path into drain/parse helpers by @romange in https://github.com/dragonflydb/dragonfly/pull/7618
- chore: migrate more families to tail_args() by @romange in https://github.com/dragonflydb/dragonfly/pull/7657
- chore: add cuckoo to compact object by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7645
- Migrate command init and dispatch paths to facade::ParsedArgs by @romange in https://github.com/dragonflydb/dragonfly/pull/7664
- refactor(server): move VerifyCommandState out of squasher, migrate dispatch path to ParsedArgs by @romange in https://github.com/dragonflydb/dragonfly/pull/7663
- chore(server): pass CmdArgParser to bitops/json handlers by @romange in https://github.com/dragonflydb/dragonfly/pull/7662
- fix(ok_backend): track command_cnt_main in dispatch by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7667
- Migrate more command handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7665
- Migrate command handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7659
- chore(server): migrate geo_family handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7673
- fix(facade): count multishot recv in io read stats by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7680
- chore(server): migrate DflyCmd/ScriptMgr/MemoryCmd handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7669
- fix(search): serialize only KNN winners for filtered vector search by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7670
- chore(server): migrate cms/bloom families and remaining string handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7672
- feat(tiering): Skip offloading keys with TTL below minimum threshold by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7624
- fix(fuzz): enforce real pass/fail gates in experimental persistent workflow by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7687
- feat: add cuckoo_family.cc and cf.reserve by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7646
- Migrate list family handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7685
- refactor(facade): extract V2 OnRecv hook method by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7689
- chore: add cf.add and cf.addnx by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7681
- CI: generate and upload junit artifacts by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7683
- CI: package experimental AFL++ artifacts as tarballs to fix uploads by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7697
- chore: add cf.exists and cf.mexists by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7682
- Migrate hset family handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7686
- chore: Bring in rapidhash by @romange in https://github.com/dragonflydb/dragonfly/pull/7694
- chore: add cf.info, cf.count and cf.del by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7691
- fix: GETEX command replication by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7701
- refactor(server): factor out metrics code into metrics.{h,cc} by @romange in https://github.com/dragonflydb/dragonfly/pull/7695
- Add benchmark-report skill by @romange in https://github.com/dragonflydb/dragonfly/pull/7706
- feat(search): support EF_RUNTIME for HNSW vector search by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7696
- Fix memtier latency plot for zero-count operations by @romange in https://github.com/dragonflydb/dragonfly/pull/7704
- feat: Add BM25STD.NORM and BM25STD.TANH scorers by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7692
- feat(search): support KNN query attributes by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7708
- tests: Stop seeder before checking replica finished by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7714
- tests: ensure that proxy chooses random port and closes on teardown by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7699
- chore(tiering): Make disk storage initial size configurable and add grow policy by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7715
- chore(server): migrate zset_family handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7712
- fix: XREADGROUP key extraction for STREAMS consumer name by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7721
- Migrate set family handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7684
- fix: stale AFL crash warnings in persistent fuzz health report by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7723
- fix(facade): bookkeeping in V2 connection. by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7726
- Link memtier latency time axes by @romange in https://github.com/dragonflydb/dragonfly/pull/7727
- chore: cuckoo rdb support by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7700
- chore(server): migrate zset_family handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7709
- feat: add HGETEX and HPEXPIRETIME by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7717
- chore(server): migrate main_service handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7724
- chore(server): migrate server_family handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7711
- chore: add compaction on cf.del and add cf.compact cmd by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7702
- chore(server): migrate stream_family handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7710
- feat: add range processing to CmdArgParser by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7732
- fix: SINTERCARD crash with zero keys by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7736
- feat(rdb): learn zstd dict and compress lists during load by @romange in https://github.com/dragonflydb/dragonfly/pull/7734
- feat(facade): add parse-ahead and parse-in-proactor for IoLoopV2 by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7722
- chore: add cf.insert and cf.insertnx by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7719
- chore(server): migrate Eval/EvalSha handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7725
- facade: add connection id to all connection logs by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7742
- feat(search): support EPSILON for HNSW vector range search by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7718
- chore(server): migrate search_family handlers to CmdArgParser by @romange in https://github.com/dragonflydb/dragonfly/pull/7741
- fix: Instantiate SendLongArr for long long by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7745
- feat(search): parse query-time =>{$weight} attributes by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7749
- fix: race condition in restore streamer by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7707
- chore: CF and sbf/cms/topk dict entries for fuzzer by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7731
- refactor: improve INFO performance by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7746
- refactor: extract QList move helper and ZSTD dict predicates by @romange in https://github.com/dragonflydb/dragonfly/pull/7755
- test: enable V2 in test_reply_count, tighten pipe_limit by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7744
- fix(cms): avoid vector allocation in ParseMergeArgs and update helio by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7743
- chore: cf chunked serialization and seeder support by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7729
- feat: Add ReplyScope to SquashPipeline by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7630
- Fix quadratic zstd list load compression by @romange in https://github.com/dragonflydb/dragonfly/pull/7753
- feat(search): apply schema and query-time text weights to scoring by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7752
- fix: flaky FT.PROFILE timing assertion by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7757
- refactor: better CmdArgParserUsage by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7758
- fix(facade): flush buffered replies before blocking in V2 pipeline by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7733
- server: Tagged chunk single buffer design, reduce copies by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7658
- chore(server): bridge acl/cluster handlers to CmdArgParser dispatch by @romange in https://github.com/dragonflydb/dragonfly/pull/7751
- Add list compression tuning flags by @romange in https://github.com/dragonflydb/dragonfly/pull/7762
- fix(facade): revert 07850ce92, track in-flight dispatches in IoLoopV2 by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7764
- refactor(server): pass ParsedArgs through command dispatch by @romange in https://github.com/dragonflydb/dragonfly/pull/7763
- Add pipeline latency panel to Grafana dashboard by @romange in https://github.com/dragonflydb/dragonfly/pull/7765
- Adds
enable_resp_io_loop_v2as a matrix dimension to the regression tests by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7748 - change test_squashed_reply_count limit by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7770
- fix(facede): Include VerbatimString in reply capture by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7772
- fix(transaction): Fix polling after running_tx conflict by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7754
- chore(fuzz): default PR seed generation to OpenAI gpt-4.1 by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7775
- feat: add more rules for parsing by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7767
- refactor: OAHSet - split OAHEntry on 3 classes by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7716
- fix(facade): Fix reply builder batching by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7778
- fix(facade): Use ReplyScope in loop2 by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7779
- fix(server): decrement subscriptions on MONITOR teardown by @VincentNguyenDuc in https://github.com/dragonflydb/dragonfly/pull/7777
- refactor: improve CmdArgParser usage by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7785
- Optimize pipelined single-key command hot path by @romange in https://github.com/dragonflydb/dragonfly/pull/7783
- chore(server): Write chunked tag header in place by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7661
- chore: add bf.info by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7761
- fix(server): add squasher-local transaction role by @romange in https://github.com/dragonflydb/dragonfly/pull/7784
- chore: missing v2 seeder data types by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7730
- feat: Inline buffer for captured replies by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7648
- perf(server): Lazy locking for optimistic single-shard transactions by @romange in https://github.com/dragonflydb/dragonfly/pull/7788
- perf: prefetch squashed command contexts by @romange in https://github.com/dragonflydb/dragonfly/pull/7796
- test: more benchmarks for Set by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7798
- feat:extend CmdArgParser functionality by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7799
- fix: bitops on tiered string values by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7806
- Default DEBUG TRAFFIC START to main listener by @romange in https://github.com/dragonflydb/dragonfly/pull/7808
- feat: Write connection throttling and metrics exposed by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7750
- Include Windows setup instructions in README by @kant2002 in https://github.com/dragonflydb/dragonfly/pull/7809
- fix: macOS build by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7811
- feat(replica): Batch Redis stream commands by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7501
- fix(server): MGET don't acess tx after running by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7819
- server: Skip error on load EOF with pending tagged chunk state by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7660
- refactor: use ADL for CmdArgParser by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7813
- feat: do more SIMD in OAHSet by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7804
- test(replication): disable noisy test_bug_5221 by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7821
- fix(facade): track in-flight V2 async commands by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7805
- test: skip V2-only pause tests under V1 by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7822
- server: Enable tagged chunk serialization by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7823
- Revert "refactor: use ADL for CmdArgParser (#7813)" by @romange in https://github.com/dragonflydb/dragonfly/pull/7825
- fix: tiered-storage crashes in HLL commands under pipeline squashing by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7820
- perf: shrink squash callback and avoid regex stack overflow by @romange in https://github.com/dragonflydb/dragonfly/pull/7807
- fix: skip heartbeat expiry/eviction while optimistic tx is suspended by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7826
- chore: add WAIT command by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7454
- fix: fix mgetparallel flaky test by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7824
- test: Disable flaky tiered storage MGETParallel test by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7837
- fix: correct typos in code comments by @magic-peach in https://github.com/dragonflydb/dragonfly/pull/7830
- docs: fix typo and formatting in docs by @magic-peach in https://github.com/dragonflydb/dragonfly/pull/7829
- fix: fix typo 'Fore more' -> 'For more' in docker README by @magic-peach in https://github.com/dragonflydb/dragonfly/pull/7831
- fix: fix typo 'recieved' -> 'received' in replica comment by @magic-peach in https://github.com/dragonflydb/dragonfly/pull/7832
- feat: add OAHMap by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7828
- test(snapshot): temporarily disable test_s3_snapshot by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7841
- fix: tiered-storage crash when commands read an offloaded string value by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7836
- feat(search): add vector data-type foundation (types, kernels, validation) by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7839
- fix(server): validate startup flags in main() by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7843
- feat: new format for OAHEntry size by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7847
- feat: compile-time grammar for CmdArgParser by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7845
- chore: pull helio to fix epoll livelock issue by @romange in https://github.com/dragonflydb/dragonfly/pull/7850
- chore: enable test_bug_5221 by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7852
- ci: bump test-fakeredis image to ubuntu-dev:24 by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7856
- feat(search): store & search vectors at native width (FLAT + HNSW, all dtypes) by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7849
- chore: enforce fuzzer coverage for newly registered commands by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7827
- fix(core): Fix segment dangle by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7851
- feat(tiering): Prefetch neighboring tiered list nodes on load by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7834
- build: add memory tracking flag to release makefile by @romange in https://github.com/dragonflydb/dragonfly/pull/7861
- Make cluster announce flags mutable by @romange in https://github.com/dragonflydb/dragonfly/pull/7860
- build(cmake): add retry to third-party tarball downloads, bump helio by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7855
- test(search): cover non-float32 vector dtypes (reload, replication, e2e, FT.INFO) by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7858
- feat(search): support per-term inside field groups by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7859
- refactor(facade): rename ClearPipelinedMessages by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7864
- feat: add new size format for OAHPair by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7853
- feat(server): Egress throttling for snapshot by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7774
- fix(stream): honor COUNT when a blocked XREAD/XREADGROUP is woken by @jacovdbergh in https://github.com/dragonflydb/dragonfly/pull/7872
- fix(server): emit db= once in CLIENT INFO by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7873
- fix(migration): race between Finish and SyncFb by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7869
- fix(stream): avoid use-after-free garbling long stream ids in replies by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7874
- feat(server): implement RESET command by @VincentNguyenDuc in https://github.com/dragonflydb/dragonfly/pull/7760
- Support optional path in JSON.STRAPPEND by @danfeideliaoji in https://github.com/dragonflydb/dragonfly/pull/7868
- fix(takeover): guard takeover state by @abhiramkaushik in https://github.com/dragonflydb/dragonfly/pull/7870
- fix(facade): decrement dropped checkpoint bc on connection close by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7862
- docs: consolidate Pub/Sub backpressure documentation by @romange in https://github.com/dragonflydb/dragonfly/pull/7887
- Cleanup repltests by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7884
- Add SAVE HELP output by @romange in https://github.com/dragonflydb/dragonfly/pull/7865
- feat(pubsub): close stuck subscribers to avoid publisher throttling by @romange in https://github.com/dragonflydb/dragonfly/pull/7889
- feat: add ASCII packing for OAH by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7881
- chore: monitor redis_replication_test by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7879
- refactor: drop runtime parser by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7882
- CI: do not upload individual gtest files by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7886
- ci(builder): enable ccache in shared build action by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7895
- CI: minor QOL improvements to repeat-tests by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7885
- Fix Azure snapshot URI account resolution by @romange in https://github.com/dragonflydb/dragonfly/pull/7878
- ci(docker): drop gha cache from image builds by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7898
- refactor: unify TTL limitation for different commands by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7899
- facade: reduce pipeline preference log verbosity by @romange in https://github.com/dragonflydb/dragonfly/pull/7900
- chore(server): Small updates about LSN parsing by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7891
- ci(cache): delete PR Actions caches on close by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7901
- test(fuzz): add tiering coverage to long AFL++ campaigns by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7905
- chore(tests): run upstream Valkey stream TCL suites in CI by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7908
- feat(server): Cascaded psync by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7866
- chore(facade): Track async_op_start_cycle_ in the V2 dispatch loop by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7902
- fix(facade): preserve pub/sub order on unsubscribe (v1 IO loop) by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7909
- feat(tls): enable V2 io loop for TLS connections by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7890
- fix(acl): support arguments in DRYRUN by @danfeideliaoji in https://github.com/dragonflydb/dragonfly/pull/7871
- fix(search): unescape quoted tag values by @alexluong in https://github.com/dragonflydb/dragonfly/pull/7907
- chore(search): dedup quoted/unquoted tag value unescaping by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7921
- fix: name idle tasks and evict stalled Pub/Sub subscribers by @romange in https://github.com/dragonflydb/dragonfly/pull/7917
- feat(rdb): Skip keys with unsupported module types instead of failing by @mkaruza in https://github.com/dragonflydb/dragonfly/pull/7912
- feat(server): Cascading replication: force re-sync when upstream master changes by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7913
- chore: print slot ranges for DFLYCLUSTER SLOT-MIGRATION-STATUS by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7911
- fix(squash): avoid mutable cross-thread access on shared reply builder by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7927
- fix(rdb): enforce one-consumer-per-PEL-entry when loading stream groups by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7929
- Handle EPERM in io_uring support check by @kant2002 in https://github.com/dragonflydb/dragonfly/pull/7810
- feat(facade): add parse-in-proactor new park spots by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7916
- feat(ci): warm ccache on push, unify cache key by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7924
- feat(ci): replace PR cache cleanup with Reaper by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7923
- fix(rdb): validate stream listpack field counts on load to prevent OOB walk by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7931
- fix(hset): journal emptied-key deletion in HRANDFIELD lazy field expiry by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7936
- fix(hset): journal emptied-key deletion in HEXPIRE/HGETEX lazy field expiry by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7937
- fix(server): journal emptied-key deletion in SHRINK lazy member expiry by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7938
- test: make slow Pub/Sub subscriber test bounded by @dragonclaw-dragonflydb in https://github.com/dragonflydb/dragonfly/pull/7939
- chore: add tcp diagnostics when streamer disconnects by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7920
- Fix borrowed Lua GET replies by @romange in https://github.com/dragonflydb/dragonfly/pull/7934
- refactor: small improvements with CmdArgParser by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7944
- tests: Fix linter errors by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7949
- fix(helm): remove .Release.Name to resolve name collisions by @VincentNguyenDuc in https://github.com/dragonflydb/dragonfly/pull/7787
- fix(server): journal partial lazy-field expiry for hash probes and FIELDEXPIRE by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7948
- core: Report block size as used memory for small keys with TTL by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7947
- feat(server): include TLS certificate info in INFO output by @akhilp19 in https://github.com/dragonflydb/dragonfly/pull/7844
- docs: update README and license date by @romange in https://github.com/dragonflydb/dragonfly/pull/7914
- server: Change pytest to unit test for mem. accounting by @abhijat in https://github.com/dragonflydb/dragonfly/pull/7950
- ci: cache 3rd-party dependencies by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7935
- build: disable AWS support by default by @romange in https://github.com/dragonflydb/dragonfly/pull/7945
- fix: do not serve blocking XREAD from an emptied stream by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7958
- fix: check the requested id when waking a blocked XREAD by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7959
- fix(cluster): enforce db0-only in cluster mode and fix two slot-ops crashes by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7960
- chore: improve debug compact-table docs and return type by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7952
- fix(acl): close remaining ACL DRYRUN gaps on top of #7871 by @kostasrim in https://github.com/dragonflydb/dragonfly/pull/7919
- test: Disable flaky tiered list RPopStashedNodes test by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7962
- chore(hll): sync hyperloglog.c with valkey upstream by @romange in https://github.com/dragonflydb/dragonfly/pull/7961
- fix(facade): split read buffer accounting by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7951
- fix(tiered): release the disk extent when a value is overwritten in place by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7968
- refactor: tune OAH for memory consumption by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7964
- fix: delete a destination of another type on an empty *STORE result by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7977
- fix(ci): validate dependency cache restores by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7967
- fix(test): wait for read buffer cleanup by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7981
- refactor(ci): extract Actions cache logic by @glevkovich in https://github.com/dragonflydb/dragonfly/pull/7980
- fix(server): Make egress throttling limit global by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7978
- fix(server): make per-slot memory_bytes track resident RAM by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7966
- fix(tiering): Defrag uses DashTable + iteration cycles by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7876
- fix: avoid command latency cycle conversion overflow by @romange in https://github.com/dragonflydb/dragonfly/pull/7985
- fix(tiering): Reclaim cool memory for uploads by @dranikpg in https://github.com/dragonflydb/dragonfly/pull/7982
- chore: Move OAH* non-performance-critical methods to the .cc file. by @BorysTheDev in https://github.com/dragonflydb/dragonfly/pull/7988
- fix(server): make per-slot underflow log compatible with legacy glog by @vyavdoshenko in https://github.com/dragonflydb/dragonfly/pull/7989
Full Changelog: https://github.com/dragonflydb/dragonfly/compare/v1.39.0...v1.40.0