Valkey 8.0 release notes
========================
--------------------------------------------------------------------------------
Upgrade urgency levels:
LOW:      No need to upgrade unless there are new features you want to use.
MODERATE: Program an upgrade of the server, but it's not urgent.
HIGH:     There is a critical bug that may affect a subset of users. Upgrade!
CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
SECURITY: There are security fixes in the release.
--------------------------------------------------------------------------------

================================================================================
Valkey 8.0.9  -  Wed 06 May 2026
================================================================================

Upgrade urgency SECURITY: This release supersedes 8.0.8 (revoked) and includes
security fixes we recommend you apply as soon as possible.

Notes
=====
* Valkey 8.0.8 has been revoked. The 8.0.8 tag was placed on a commit that is
  not part of the 8.0 release branch, so checking out 8.0.8 yields a tree
  that does not correspond to the 8.0 line. Do not use 8.0.8. Users should
  upgrade directly from 8.0.7 to 8.0.9, which contains the intended security
  fixes on the 8.0 branch.

Security fixes
==============
* (CVE-2026-23479) Use-After-Free in unblock client flow
* (CVE-2026-25243) Invalid Memory Access in RESTORE command
* (CVE-2026-23631) Use-after-free when full sync occurs during a yielding Lua/function execution

================================================================================
Valkey 8.0.8  -  Tue 05 May 2026  [REVOKED -- do not use; see 8.0.9]
================================================================================

This release has been revoked. The 8.0.8 tag was placed on a commit that is
not part of the 8.0 release branch. Users should upgrade to 8.0.9 instead.

================================================================================
Valkey 8.0.7  -  Released Mon 23 February 2026
================================================================================

Upgrade urgency SECURITY: This release includes security fixes we recommend you
apply as soon as possible.

Security fixes
==============
* (CVE-2026-21863) Remote DoS with malformed Valkey Cluster bus message
* (CVE-2025-67733) RESP Protocol Injection via Lua error_reply

Bug fixes
=========
* Fix ltrim should not call signalModifiedKey when no elements are removed (#2787)
* Fix chained replica crash when doing dual channel replication (#2983)
* Fix used_memory_dataset underflow due to miscalculated used_memory_overhead (#3005)
* Avoids crash during MODULE UNLOAD when ACL rules reference a module command and subcommand (#3160)
* Fix server assert on ACL LOAD and resetchannels (#3182)
* Fix bug causing no response flush sometimes when IO threads are busy (#3205)

================================================================================
Valkey 8.0.6  -  Released Fri 03 October 2025
================================================================================

Upgrade urgency SECURITY: This release includes security fixes we recommend you
apply as soon as possible.

Security fixes
==============
* (CVE-2025-49844) A Lua script may lead to remote code execution
* (CVE-2025-46817) A Lua script may lead to integer overflow and potential RCE
* (CVE-2025-46818) A Lua script can be executed in the context of another user
* (CVE-2025-46819) LUA out-of-bound read

Bug fixes
=========
* Fix accounting for dual channel RDB bytes in replication stats (#2616)
* Minor fix for dual rdb channel connection conn error log (#2658)
* Fix unsigned difference expression compared to zero (#2101)

================================================================================
Valkey 8.0.5  -  Released Thu 22 Aug 2025
================================================================================

Upgrade urgency SECURITY: This release includes security fixes we recommend you
apply as soon as possible.

Bug fixes
=========
* Fix clients remaining blocked when reprocessing commands after certain
  blocking operations (#2109)
* Fix a memory corruption issue in the sharded pub/sub unsubscribe logic (#2137)
* Fix potential memory leak by ensuring module context is freed when `aux_save2`
  callback writes no data (#2132)
* Fix `CLIENT UNBLOCK` triggering unexpected errors when used on paused clients
  (#2117)
* Fix missing NULL check on `SSL_new()` when creating outgoing TLS connections
  (#2140)
* Fix incorrect casting of ping extension lengths to prevent silent packet drops
  (#2144)
* Fix replica failover stall due to outdated config epoch (#2178)
* Fix incorrect port/tls-port info in `CLUSTER SLOTS`/`CLUSTER NODES` after
  dynamic config change (#2186)
* Ensure empty error tables in Lua scripts don't crash Valkey (#2229)
* Fix client tracking memory overhead calculation (#2360)
* Handle divergent shard-id from nodes.conf and reconcile to the primary node's
  shard-id (#2174)
* Fix pre-size hashtables per slot when reading RDB files (#2466)

Behavior changes
================
* Trigger election immediately during a forced manual failover (`CLUSTER
  FAILOVER FORCE`) to avoid delay (#1067)
* Reset ongoing election state when initiating a new manual failover (#1274)

Logging and Tooling Improvements
================================
* Add support to drop all cluster packets (#1252)
* Improve log clarity in failover auth denial message (#1341)

Security fixes
==============
* CVE-2025-27151: Check length of AOF file name in valkey-check-aof and reject
  paths longer than `PATH_MAX` (#2146)

================================================================================
Valkey 8.0.4  -  Released Mon 07 July 2025
================================================================================

Upgrade urgency SECURITY: This release includes security fixes we recommend you
apply as soon as possible.

Security fixes
==============
* CVE-2025-32023 prevent out-of-bounds write during hyperloglog operations (#2146)
* CVE-2025-48367 retry accept on transient errors (#2315)

================================================================================
Valkey 8.0.3  -  Released Wed 23 Apr 2025
================================================================================

Upgrade urgency SECURITY: This release includes security fixes we recommend you
apply as soon as possible.

Bug fixes
=========
* Optimize RDB load performance and fix cluster mode resizing on replica side (#1199)
* Fix memory leak in forgotten node ping ext code path (#1574) 
* Fix cluster info sent stats for message with light header (#1563)
* Fix module LatencyAddSample still work when latency-monitor-threshold is 0 (#1541)
* Fix potential crash in radix tree recompression of huge keys (#1722)
* Fix error "SSL routines::bad length" when connTLSWrite is called second time with smaller buffer (#1737)
* Fix temp file leak druing replication error handling (#1721)
* Fix ACL LOAD crash on replica since the primary client don't has a user (#1842)
* Fix RANDOMKEY infinite loop during CLIENT PAUSE (#1850)
* fix: add samples to stream object consumer trees (#1825)
* Fix cluster slot stats assertion during promotion of replica (#1950)
* Fix panic in primary when blocking shutdown after previous block with timeout (#1948)
* Ignore stale gossip packets that arrive out of order (#1777)
* Fix incorrect lag reported in XINFO GROUPS (#1952)
* Avoid shard id update of replica if not matching with primary shard id (#573)

Security fixes
==============
* CVE-2025-21605 Limit output buffer for unauthenticated clients (#1993)

================================================================================
Valkey 8.0.2  -  Released Mon 6 Jan 2025
================================================================================

Upgrade urgency SECURITY: This release includes security fixes we recommend you
apply as soon as possible.

Bug fixes
=========
* Fix an uncommon crash when using TLS with dual channel replication. (#1173)
* Make sure `repl_down_since` is correctly reset when dual channel replication
  fails. (#1149)
* Fix a performance regression where a replica does not properly initiaize
  the database size when loading a snapshot during replication. (#1199)
* Make sure the last accessed time is correctly updated when using the `TOUCH`
  command with the `CLIENT NO-TOUCH` option.
* Fix a bug where `total_net_repl_output_bytes` would report the wrong. (#1486)
* Fix a bug where `used_memory_scripts` may report the wrong value. (#1255)
* Fix a bug where server might crash when using active defrag when scripts
  are evicted from the script cache. (#1310)
* Fix a bug where extra memory would be used when storing strings in the
  inline protocol. (#1213)
* Fix a bug where the `SORT` command may throw a cross slot error. (#1182)
* Fix a bug where the `RANDOMKEY` command may omit returning keys in cluster
  mode. (#1155)
* Send the correct error message when `FUNCTION KIlL` is used to kill an
  ongoing script. (#1171)
* Fix a potential memory corruption when databases are emptied, such as
  through `FLUSHDB`, when during active defrag is running. (#1512)

Behavior changes
================
* Revert an unintended breaking change when sending an unsubuscribe command
  when a client is not subscribed to any channels. (#1265)

Security fixes
==============
* (CVE-2024-46981) Lua script commands may lead to remote code execution. (#1513)
* (CVE-2024-51741) Denial-of-service due to malformed ACL selectors. (#1514)

================================================================================
Valkey 8.0.1  -  Released Tue 1 Oct 2024
================================================================================

Upgrade urgency SECURITY: This release includes security fixes we recommend you
apply as soon as possible.

Bug fixes
=========
* Fix a build issue with RDMA when using additional make parameters. (#1074)
* Fix an issue where `CLUSTER SLOTS` might return the wrong tcp or tls port when called
  from inside a script or from a module. (#1072)
* Fix a crash when `CLUSTER SLOTS` or `CLUSTER SHARDS` is called from inside
  a script or from a module. (#1063)
* Fix a build issue on systems where `<threads.h>` is unavailable. (#1053)
* Fix an issue with the default `sentinel.conf` being invalid. (#1040)

Security fixes
==============

* (CVE-2024-31449) Lua library commands may lead to stack overflow and potential RCE.
* (CVE-2024-31227) Potential Denial-of-service due to malformed ACL selectors.
* (CVE-2024-31228) Potential Denial-of-service due to unbounded pattern matching.

================================================================================
Valkey 8.0.0 GA  -  Released Sun 15 Sep 2024
================================================================================
Upgrade urgency LOW: This is the first release of Valkey 8.0, which
includes stability and performance improvements over the second release
candidate. This release is fully compatible with Redis OSS 7.2.4.

Logging and Tooling Improvements
================================
* Added full client info to SHUTDOWN and CLUSTER FAILOVER logs for better traceability
  of requests. (#875)

Bug fixes
=========
* Resolved issues in replicationSetPrimary where the primary node's IP/port updates were
  not correctly handled in the cluster gossip section. (#965)
* Fixed AOF base suffix during rewrites when modifying the aof-use-rdb-preamble setting,
  ensuring correct suffix caching to prevent inconsistencies. (#886)
* Addressed rare crashes in async IO threads with TLS by preventing concurrent read and
  write job overlap. (#1011)
* Prevented AOF from being incorrectly disabled after loading RDB data, ensuring proper
  re-enabling of AOF. (#1001)
* Triggered a save of the cluster configuration file before shutdown to prevent
  inconsistencies caused by unsaved node configuration changes. (#822)
* Fixed timing issue in CLUSTER SETSLOT to ensure replicas handle migration correctly
  when receiving the command before the gossip update. (#981)

Performance
===========
* Optimized the handling of temporary set objects in SUNION and SDIFF commands, resulting
  in a 41% performance improvement for SUNION and 27% for SDIFF. (#996)

Behavior Changes
================
* Replicas now flush old data after checking RDB file is valid during disk-based replication,
  preventing partial data loss and ensuring a clean data load. (#926)

================================================================================
Valkey 8.0.0 RC2  -  Released Tue 2 Sep 2024
================================================================================
Upgrade urgency LOW: This is the second release candidate of Valkey 8.0, which
generally includes stability and performance improvements over the first release
candidate. This release is fully compatible with Redis OSS 7.2.4.

New Features
============
* Add support for setting the group on a unix domain socket. (#901)
* Experimental - RDMA: Support user keepalive command. (#916)

Logging and Tooling Improvements
================================
* Improve logging when a cluster is unable to failover. (#780)
* Add epoch information to failover auth denied logs. (#816)
* Improve messaging when valkey-cli cluster --fix meet check failed. (#867)
* Log unexpected $ENDOFF responses in dual channel replication. (#839)
* Skip IPv6 tests when it is unsupported on TCLSH. (#910)
* Add a light weight version of DEBUG OBJECT. (#881)
* Add lfu support for DEBUG OBJECT command, added lfu_freq and
  lfu_access_time_minutes fields. (#479)

Bug fixes
=========
* Correctly expose client infomation in the slowlog when running commands in scripts. (#805)
* Fix a bug where lastbgsave_status was unecessarily being updated when dual
  channel replication failed. (#811)
* Fix a bug which caused dual channel replication to get stuck because of a TLS
  issue. (#837)
* Fix a bug which caused bouncing `-REDIRECT` messages during a FAILOVER (#871)
* Avoid re-establishing replication to a node that is already the primary in `CLUSTER REPLICATE`. (#884)
* Fix `CLUSTER SETSLOT` with `BLOCK` to only wait for replicas that are online. (#879)
* Fix `valkey-cli` to make source node ignores NOREPLICAS when doing the last CLUSTER SETSLOT (#928)
* Exclude '.' and ':' from `isValidAuxChar`'s banned charset to better support
  IPV6 addresses. (#963)
* Better handle `-REDIRECT` messages in the MULTI context. (#895)

Performance
===========
* Improve multithreaded performance with memory prefetching. (#861)
* Optimize ZUNION[STORE] command by removing unnecessary accumulator dict. (#829)
* Optimize linear search of WAIT and WAITAOF when unblocking the client. (#787)
* Move prepareClientToWrite out of loop for lrange command to remove redundant calls. (#860)
* Optimize various commands by using sdsAllocSize instead of sdsZmallocSize. (#923)
* Using intrinsics to optimize counting HyperLogLog trailing bits. (#846)
* Free client's MULTI state when it becomes dirty to reduce memory usage. (#961)
* Optimize the fast path of SET if the expiration time has already expired. (#865)

Compatibility Improvements
==========================
* Add 4 sentinel command `GET-PRIMARY-ADDR-BY-NAME`, `PRIMARY`, `PRIMARIES`, and
  `IS-PRIMARY-DOWN-BY-ADDR` to allow clients to use inclusive language. (#789)

Behavior Changes
================
* Block unsubscribe related commands for clients that are not in subscribed mode. (#759)

Configuration Changes
=====================
* Change repl-backlog-size from 1MB to 10MB by default. (#911)
* Remove the protected flag from `dual-channel-replication`. (#908)

================================================================================
Valkey 8.0.0 RC1  -  Released Thu 1 Aug 2024
================================================================================
Upgrade urgency LOW: This is the first release candidate of Valkey 8.0, with
performance, reliability, and observability improvements. It includes asynchronous
I/O threading, better cluster scaling reliability, dual primary-replica channel
for faster full synchronization, per-slot metrics for resource management, and
experimental RDMA support for increased throughput and reduced latency. This
release is fully compatible with Redis OSS 7.2.4.

Un-deprecated Commands - Cluster
================================
* Un-deprecate the `CLUSTER SLOTS` command. (#536)

New/Modified Commands - Core
============================
* Add `SCRIPT SHOW` sub-command to dump scripts via SHA1. (#617)
* Add `NOSCORES` option to `ZSCAN` command. (#324)
* Add `NOVALUES` option to `HSCAN` command. (Redis#12765)
* Expose Lua `os.clock()` API to allow scripts to determine how long the
  script has been executing. (Redis#12971)
* Implement `CLIENT KILL MAXAGE <MAXAGE>`. (Redis#12299)
* Allow running `WAITAOF` in scripts, remove `NOSCRIPT` flag. (Redis#12977)
* Support `XREAD[GROUP]` with `BLOCK` option in scripts. (Redis#12596)
* Introduce `+` as a special ID for the last item in stream on `XREAD`
  Command. (Redis#7388, Redis#13117)

New/Modified Commands - Cluster
===============================
* Introduce `CLUSTER SLOT-STATS` command which allows tracking of per slot
  metrics for key count, CPU utilization, network bytes in, and network
  bytes out. (#20, #351)
* Add `TIMEOUT` option to `CLUSTER SETSLOT` command. (#556, #445)

New/Modified Metrics - Core
===========================
* Introduce per-client metrics for network traffic and command execution
  in `CLIENT LIST` and `CLIENT INFO`. (#327)
* Add metrics for DB memory overhead and rehashing status to `INFO MEMORY`
  and `MEMORY STATS`. (Redis#12913)
* Add `pubsub_clients` metric to `INFO CLIENTS`. (Redis#12849)
* Add metrics for client buffer limit disconnections to `INFO`. (Redis#12476)
* Add metrics for monitoring clients using `WATCH` command and watched keys.
  (Redis#12966)
* Added allocator muzzy memory metrics to `INFO MEMORY` and `MEMORY STATS`.
  (Redis#12996)

New Features - Core
===================
* Support replica redirect for read/write operations to primary in standalone
  mode. (#325)
* Add server config for cluster blacklist TTL. (#738)
* Add availability zone server config. (#700)

New Features - Cluster
======================
* Support IPv4 and IPv6 dual stack and client-specific IPs in clusters. (#736)
* Support `BY/GET` options for `SORT/SORT_RO` in cluster mode when pattern
  implies a single slot. (Redis#12728)

Compatibility Improvements - Core
=================================
* Derive RDB and module child process names based on server start name for
  compatibility. (#454)
* Update server identity in `serverPanic` output based on `extended-redis-compatibility`
  config. (#415)

Compatibility Improvements - Sentinel
=====================================
* Accept `redis-sentinel` to start Valkey in sentinel mode. (#731)

Performance/Efficiency Improvements - Core
==========================================
* Introduce dual channel for more efficient full sync replication. (#60)
* Introduce async IO threading for improved multi-threaded performance.
  (#763, #758)
* Embed key directly in main dictionary entry for improved memory efficiency.
  (#541)
* Use thread-local storage to reduce atomic contention in updating memory
  metrics. (#674)
* Reduce redundant calls to `prepareClientToWrite` for continuous `addReply*`.
  (#670)
* Optimize the logic for checking conversion to skip list during `ZADD` operations.
  (#806)
* Optimize `sdsfree` with `zfree_with_size` to avoid redundant size calculation.
  (#453)
* Combine events to eliminate redundant `kevent(2)` calls. (#638)
* Introduce shared query buffer for client reads to reduce memory usage. (#258)
* Optimize CRC64 performance for large batches by processing bytes in parallel.
  (#350)
* Use `SOCK_NONBLOCK` to reduce system calls for outgoing connections. (#293)
* Enable `accept4()` detection on specific versions of various platforms. (#294)
* Convert CRC16 slot table to fixed-size array for improved memory efficiency.
  (Redis#13112)
* Run `SCRIPT FLUSH` truly asynchronously and close Lua interpreter in a
  background thread. (Redis#13087)
* Optimize `DEL` command to avoid redundant deletions for expired keys. (Redis#13080)
* Improve defragmentation for large bins to enhance memory efficiency. (Redis#12996)
* Optimize hash table resizing to include empty dictionaries. (Redis#12819)
* Reduce performance impact of dictionary rehashing by optimizing bucket processing.
  (Redis#12899)
* Optimize performance for simultaneous client `[P|S]UNSUBSCRIBE`. (Redis#12838)
* Optimize CPU cache efficiency during dictionary rehashing. (Redis#5692)
* Optimize `ZRANGE` offset location from linear search to skip list jump. (Redis#12450)
* Fix `aeSetDontWait` timing to avoid unnecessary waits in `aeProcessEvent`. (Redis#12068)

Performance/Efficiency Improvements - Cluster
=============================================
* Add lightweight cluster message header for Pub/Sub messages. (#654)
* Minor performance improvement in Valkey cluster by avoid initializing key
  buffer in `getKeysResult`. (#631)
* Cache `CLUSTER SLOTS` response to improve throughput and reduce latency. (#53)
* Replace slots_to_channels radix tree with slot-specific dictionaries for
  shard channels. (Redis#12804)
* Optimize `KEYS` command when pattern includes hashtag and implies a single
  slot. (Redis#12754)
* Optimize `SCAN` command with `MATCH` when pattern implies a single slot.
  (Redis#12536)
* Replace cluster metadata with slot specific dictionaries to reduce memory
  usage when using Valkey cluster. (Redis#11695, Redis#12704)

Reliability Improvements - Core
===============================
* Limit tracking custom errors (e.g. from Lua) while allowing normal errors
  to be tracked (#500, Redis#13141)
* Manage maximum number of new connections per cycle to prevent connection
  storms. (Redis#12178)

Reliability Improvements - Cluster
==================================
* Reduce fail-over time in Valkey cluster when multiple sequential fail-overs
  occurred by resetting `failover_auth_time` when the new primary node goes
  down. (#782)
* Restrict node failure marking to primaries with assigned slots. (#634)
* Enhance cluster meet reliability under link failures. (#461)
* Improve reliability of slot migration in Valkey clusters. (#445)

Usability Improvements - Core
=============================
* Re-brand and refine latency report messages. (#644)
* Optimize `ACL LOAD` to avoid disconnecting clients whose users are unchanged.
  (Redis#12171)

Usability Improvements - Cluster
================================
* Adjust log levels for various cluster-related logs to improve clarity. (#633)
* Maintain deterministic ordering of replica(s) in `CLUSTER SLOTS` response. (#265)

Usability Improvements - CLI
================================
* Add prompt message when Ctrl-C is pressed in `valkey-cli`. (#702)
* Keep an in-memory history of all commands in `valkey-cli` so that sensitive
  commands can be shown within the same session. (Redis#12862)

Module Improvements - Core
==========================
* Add `ValkeyModule_TryCalloc()` and `ValkeyModule_TryRealloc()` to handle
  allocation failures gracefully. (Redis#12985)
* Make `ValkeyModule_Yield` thread-safe by handling events in the main thread.
  (Redis#12905)
* Allow modules to declare new ACL categories. (Redis#12486)

Module Improvements - Cluster
=============================
* Add API `ValkeyModule_ClusterKeySlot` and `ValkeyModule_ClusterCanonicalKeyNameInSlot`.
  (Redis#13069)

Behavior Changes - Core
=======================
* Re-brand the Lua debugger. (#603)
* Change default pidfile from `redis.pid` to `valkey.pid`. (#378)
* Abort transactions on nested `MULTI` or `WATCH` commands. (#723)
* Ensure keys that match the `SCAN` filter are not lazily expired and return
  an error for invalid types. (#501)
* Rename `redis` in AOF logs and proc title to `valkey-aof-rewrite`. (#393)
* Change default syslog-ident from `redis` to `valkey`. (#390)
* Update `Redis` to `Valkey` in `serverLog` messages in server.c file. (#231)
* Remove `Redis` from various error reply messages. See GitHub PR for more
  details. (#206)
* Reject empty strings for configs `dir`, `dbfilename`, and `cluster-config-file`.
  (#636)
* Change key-spec flag from `RW` to `OW` for `SINTERSTORE` command. (Redis#12917)
* Return more precise error messages for some cases verifying keys during script
  execution. (Redis#12707)
* Return errors for `BITCOUNT` and `BITPOS` with non-existing keys or invalid
  arguments instead of zero. (Redis#11734)
* Validate `BITCOUNT` arguments before key existence check. (Redis#12394)
* Redact ACL username information and mark `*-key-file-pass` configs as
  sensitive. (Redis#12860)
* Allow `MULTI/EXEC` to use a small amount of additional memory beyond the
  used-memory limit. (Redis#12961)

Behavior Changes - Cluster
==========================
* Allow `CLUSTER NODES/INFO/MYID/MYSHARDID` during loading state. (#596)
* Make cluster replicas return `ASK` and `TRYAGAIN` during slot migration. (#495)

Behavior Changes - Sentinel
===========================
* Replace `master-reboot-down-after-period` with `primary-reboot-down-after-period`
  in `sentinel.conf`. (#647)

Bug Fixes - Core
================
* Fix a bug that caused LRU/LFU inconsistencies for some integer objects. (#250)
* Fix a bug where Valkey may use a sub-optimal encoding for some data types.
  (Redis#13148)
* Fix propagation of `entries_read` by calling `streamPropagateGroupID`
  unconditionally. (Redis#12898)
* Fix race condition issues between the main thread and module threads.
  (Redis#12817)
* Wake blocked clients ASAP in next `beforeSleep` for `WAITAOF`. (Redis#12627)
* Fix crash in crash-report and improve thread management with RW locks.
  (Redis#12623)

Bug Fixes - Cluster
===================
* Fix a bug where a shard returns the incorrect slot slot information in
  `CLUSTER SHARDS` command on primary failure. (#790)
* Allow module authentication to succeed when the cluster is down. (#693)
* Fix `PONG` message processing for primary-ship tracking during fail-overs.
  (Redis#13055)
* Prevent double freeing of cluster link with `DEBUG CLUSTERLINK KILL`.
  (Redis#12930)
* Unsubscribe all clients from replica for shard channel if the primary
  ownership changes. (Redis#12577)

Bug Fixes - Tooling
===============
* Fix `valkey-check-aof` misidentifying data in manifest format as MP-AOF.
  (Redis#12958)
* Fix `valkey-cli` to respect the `--count` option without requiring
  `--pattern`. (Redis#13092)
* Fix `valkey-benchmark` to distribute operations across all slots owned by
  a node in cluster mode. (Redis#12986)

Internal Codebase Improvements
==============================
* Enable debug asserts for cluster and sentinel tests. (#588)
* Introduce a minimal debugger for Tcl integration test suite. (#683)
* Set up clang-format GitHub action for automated code formatting checks. (#538)
* Replace custom atomic logic with C11 _Atomics. (#490)
* Add fast fail option for Tcl test cases. (#482)
* Introduce a simple unit test framework. (#460)
* An initial simple unit test framework. (#344)
* Introduce Codecov for automated code coverage tracking. (#316)
* Remove deprecated `redis-trib` CLI program. (#281)
* Add `-fno-omit-frame-pointer` to default compilation flags to improve
  debuggability. (Redis#12973)
* Refactor the per-slot dict-array db.c into a new kvstore data structure.
  (Redis#12822)
* Unified database rehash method for both standalone and cluster modes.
  (Redis#12848)
* Clarify and decouple the sampling logic in eviction to improve readability.
  (Redis#12781)
* Rewrite large printf calls to smaller ones for readability. (Redis#12257)

Experimental
============
* Introduce Valkey Over RDMA transport (experimental). (#477)

We appreciate the efforts of all who contributed code to this release!

lan Slang, Binbin, Brennan, Chen Tianjie, Cui Fliter, Daniel House, Darren Jiang,
David Carlier, Debing Sun, Dingrui, Dmitry Polyakovsky, Eran Liberty, Gabi Ganam,
George Guimares, Guillaume Koenig, Guybe, Harkrishn Patro, Hassaan Khan, Hwang Si Yeon,
ICHINOSE Shogo, icy17, Ikko Eltociear Ashimine, iKun, Itamar Haber, Jachin, Jacob Murphy,
Jason Elbaum, Jeff Liu, John Sully, John Vandenberg, Jonathan Wright, Jonghoonpark, Joe Hu,
Josiah Carlson, Juho Kim, judeng, Jun Luo, K.G. Wang, Karthik Subbarao, Karthick Ariyaratnam,
kell0gg, Kyle Kim, Leibale Eidelman, LiiNen, Lipeng Zhu, Lior Kogan, Lior Lahav, Madelyn Olson,
Makdon, Maria Markova, Mason Hall, Matthew Douglass, meiravgri, michalbiesek, Mike Dolan,
Mikel Olasagasti Uranga, Moshe Kaplan, mwish, naglera, NAM UK KIM, Neal Gompa, nitaicaro,
Nir Rattner, Oran Agra, Ouri Half, Ozan Tezcan, Parth, PatrickJS, Pengfei Han, Pierre, Ping Xie,
poiuj, pshankinclarke, ranshid, Ronen Kalish, Roshan Khatri, Samuel Adetunji, Sankar, secwall,
Sergey Fedorov, Sher_Sun, Shivshankar, skyfirelee, Slava Koyfman, Subhi Al Hasan, sundb,
Ted Lyngmo, Thomas Fline, tison, Tom Morris, Tyler Bream, uriyage, Viktor Söderqvist, Vitaly,
Vitah Lin, VoletiRam, w. ian douglas, WangYu, Wen Hui, Wenwen Chen, Yaacov Hazan, Yanqi Lv,
Yehoshua Hershberg, Yves LeBras, zalj, Zhao Zhao, zhenwei pi, zisong.cw
