summaryrefslogtreecommitdiffstats
path: root/00-RELEASENOTES
diff options
context:
space:
mode:
Diffstat (limited to '00-RELEASENOTES')
-rw-r--r--00-RELEASENOTES1083
1 files changed, 1083 insertions, 0 deletions
diff --git a/00-RELEASENOTES b/00-RELEASENOTES
new file mode 100644
index 0000000..22721d4
--- /dev/null
+++ b/00-RELEASENOTES
@@ -0,0 +1,1083 @@
+Redis 7.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.
+--------------------------------------------------------------------------------
+
+
+================================================================================
+Redis 7.0.15 Released Tue 09 Jan 2024 10:45:52 IST
+================================================================================
+
+Upgrade urgency SECURITY: See security fixes below.
+
+Security fixes
+==============
+* (CVE-2023-41056) In some cases, Redis may incorrectly handle resizing of memory
+ buffers which can result in incorrect accounting of buffer sizes and lead to
+ heap overflow and potential remote code execution.
+
+
+================================================================================
+Redis 7.0.14 Released Wed 18 Oct 2023 10:33:40 IDT
+================================================================================
+
+Upgrade urgency SECURITY: See security fixes below.
+
+Security fixes
+==============
+
+* (CVE-2023-45145) The wrong order of listen(2) and chmod(2) calls creates a
+ race condition that can be used by another process to bypass desired Unix
+ socket permissions on startup.
+
+
+================================================================================
+Redis 7.0.13 Released Wed 06 Sep 2023 15:00:00 IDT
+================================================================================
+
+Upgrade urgency SECURITY: See security fixes below.
+
+Security Fixes
+==============
+
+* (CVE-2023-41053) Redis does not correctly identify keys accessed by SORT_RO and
+ as a result may grant users executing this command access to keys that are not
+ explicitly authorized by the ACL configuration.
+
+Bug Fixes
+=========
+
+* Cluster: fix a race condition where a slot migration may revert on a
+ subsequent failover or node joining (#12344)
+* Ensure that the function load timeout is disabled during loading from RDB/AOF
+ and on replicas. (#12451)
+* Fix the assertion when script timeout occurs after it signaled a blocked client (#12459)
+
+
+================================================================================
+Redis 7.0.12 Released Mon July 10 12:00:00 IDT 2023
+================================================================================
+
+Upgrade urgency SECURITY: See security fixes below.
+
+Security Fixes:
+* (CVE-2022-24834) A specially crafted Lua script executing in Redis can trigger
+ a heap overflow in the cjson and cmsgpack libraries, and result in heap
+ corruption and potentially remote code execution. The problem exists in all
+ versions of Redis with Lua scripting support, starting from 2.6, and affects
+ only authenticated and authorized users.
+* (CVE-2023-36824) Extracting key names from a command and a list of arguments
+ may, in some cases, trigger a heap overflow and result in reading random heap
+ memory, heap corruption and potentially remote code execution. Specifically:
+ using COMMAND GETKEYS* and validation of key names in ACL rules.
+
+
+Bug Fixes
+=========
+
+* Re-enable downscale rehashing while there is a fork child (#12276)
+* Fix possible hang in HRANDFIELD, SRANDMEMBER, ZRANDMEMBER when used with `<count>` (#12276)
+* Improve fairness issue in RANDOMKEY, HRANDFIELD, SRANDMEMBER, ZRANDMEMBER, SPOP, and eviction (#12276)
+* Fix WAIT to be effective after a blocked module command being unblocked (#12220)
+* Avoid unnecessary full sync after master restart in a rare case (#12088)
+
+
+================================================================================
+Redis 7.0.11 Released Mon Apr 17 16:00:00 IST 2023
+================================================================================
+
+Upgrade urgency: SECURITY, contains fixes to security issues.
+
+Security Fixes:
+* (CVE-2023-28856) Authenticated users can use the HINCRBYFLOAT command to create
+ an invalid hash field that will crash Redis on access
+
+Bug Fixes
+=========
+
+* Add a missing fsync of AOF file in rare cases (#11973)
+* Disconnect pub-sub subscribers when revoking allchannels permission (#11992)
+
+Platform / toolchain support related improvements
+=================================================
+
+* Fix a compiler fortification induced crash when used with link time optimizations (#11982)
+
+
+================================================================================
+Redis 7.0.10 Released Mon Mar 20 16:00:00 IST 2023
+================================================================================
+
+Upgrade urgency: SECURITY, contains fixes to security issues.
+
+Security Fixes:
+* (CVE-2023-28425) Specially crafted MSETNX command can lead to assertion and denial-of-service
+
+Bug Fixes
+=========
+
+* Large blocks of replica client output buffer may lead to psync loops and unnecessary memory usage (#11666)
+* Fix CLIENT REPLY OFF|SKIP to not silence push notifications (#11875)
+* Trim excessive memory usage in stream nodes when exceeding `stream-node-max-bytes` (#11885)
+* Fix module RM_Call commands failing with OOM when maxmemory is changed to zero (#11319)
+
+================================================================================
+Redis 7.0.9 Released Tue Feb 28 12:00:00 IST 2023
+================================================================================
+
+Upgrade urgency: SECURITY, contains fixes to security issues.
+
+Security Fixes:
+* (CVE-2023-25155) Specially crafted SRANDMEMBER, ZRANDMEMBER, and HRANDFIELD
+ commands can trigger an integer overflow, resulting in a runtime assertion
+ and termination of the Redis server process.
+* (CVE-2022-36021) String matching commands (like SCAN or KEYS) with a specially
+ crafted pattern to trigger a denial-of-service attack on Redis, causing it to
+ hang and consume 100% CPU time.
+
+Bug Fixes
+=========
+
+* Fix a crash when reaching the maximum invalidations limit of client-side tracking (#11814)
+* Fix a crash when SPUBLISH is used after passing the cluster-link-sendbuf-limit (#11752)
+* Fix possible memory corruption in FLUSHALL when a client watches more than one key (#11854)
+* Fix cluster inbound link keepalive time (#11785)
+* Flush propagation list in active-expire of writable replicas to fix an assertion (#11615)
+* Avoid propagating DEL of lazy expire from SCAN and RANDOMKEY as MULTI-EXEC (#11788)
+
+Performance and resource utilization improvements
+=================================================
+
+* Avoid realloc to reduce size of strings when it is unneeded (#11766)
+* Improve CLUSTER SLOTS reply efficiency for non-continuous slots (#11745)
+
+
+================================================================================
+Redis 7.0.8 Released Mon Jan 16 12:00:00 IDT 2023
+================================================================================
+
+Upgrade urgency: SECURITY, contains fixes to security issues.
+
+Security Fixes:
+* (CVE-2022-35977) Integer overflow in the Redis SETRANGE and SORT/SORT_RO
+ commands can drive Redis to OOM panic
+* (CVE-2023-22458) Integer overflow in the Redis HRANDFIELD and ZRANDMEMBER
+ commands can lead to denial-of-service
+
+Bug Fixes
+=========
+
+* Avoid possible hang when client issues long KEYS, SRANDMEMBER, HRANDFIELD,
+ and ZRANDMEMBER commands and gets disconnected by client output buffer limit (#11676)
+* Make sure that fork child doesn't do incremental rehashing (#11692)
+* Fix a bug where blocking commands with a sub-second timeout would block forever (#11688)
+* Fix sentinel issue if replica changes IP (#11590)
+
+================================================================================
+Redis 7.0.7 Released Fri Dec 16 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency: MODERATE, Contains fix for a regression in Geo commands.
+
+Bug Fixes
+=========
+
+* Fix regression from Redis 7.0.6 in distance replies of Geo commands (#11631)
+
+================================================================================
+Redis 7.0.6 Released Mon Dec 12 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency: MODERATE, Contains fixes for a few non-critical or unlikely bugs,
+and some dramatic optimizations to Geo, EVAL, and Sorted sets commands.
+
+Potentially Breaking Bug Fixes for new Redis 7.0 features
+=======================================================
+
+* RM_ResetDataset module API should not clear the functions (#11268)
+* RM_Call module API used with the "C" flag to run scripts, would now cause
+ the commands in the script to check ACL with the designated user (#10966)
+
+Performance and resource utilization improvements
+=================================================
+
+* Geo commands speedups (#11535, #11522, #11552, #11579)
+* Fix EVAL command performance regression from Redis 7.0 (#11521, #11541)
+* Reduce EXPIRE commands performance regression from Redis 7.0 (#11602)
+* Optimize commands returning double values, mainly affecting zset commands (#11093)
+* Optimize Lua parsing of some command responses (#11556)
+* Optimize client memory usage tracking operation while client eviction is disabled (#11348)
+
+Platform / toolchain support related improvements
+=================================================
+
+* Fix compilation on Solaris (#11327)
+
+Module API changes
+==================
+
+* RM_SetContextUser, RM_SetModuleUserACLString, RM_GetModuleUserACLString (#10966)
+* Fix crash in CLIENT_CHANGE event, when the selected database is not 0 (#11500)
+
+Changes in CLI tools
+====================
+
+* redis-benchmark avoid aborting on NOPERM from CONFIG GET (#11096)
+
+Bug Fixes
+=========
+
+* Avoid hang of diskless replication fork child when parent crashes (#11463)
+* Fix crash with module API of list iterator and RM_ListDelete (#11383)
+* Fix TLS error handling to avoid connection drops on timeouts (#11563)
+* Fix runtime changes to cluster-announce-*-port to take effect on the local node too (#10745)
+* Fix sentinel function that compares hostnames if failed resolve (#11419)
+* Fix MIGRATE with AUTH set to "keys" is getting wrong key names leading to MOVED or ACL errors (#11253)
+
+Fixes for issues in previous releases of Redis 7.0
+--------------------------------------------------
+
+* Fix command line startup --sentinel problem (#11591)
+* Fis missing FCALL commands in monitor (#11510)
+* Fix CLUSTER SHARDS showing empty hostname (#11297)
+* Replica that asks for rdb-only could have missed the EOF and hang (#11296)
+
+
+================================================================================
+Redis 7.0.5 Released Wed Sep 21 20:00:00 IST 2022
+================================================================================
+
+Upgrade urgency: SECURITY, contains fixes to security issues.
+
+Security Fixes:
+* (CVE-2022-35951) Executing a XAUTOCLAIM command on a stream key in a specific
+ state, with a specially crafted COUNT argument, may cause an integer overflow,
+ a subsequent heap overflow, and potentially lead to remote code execution.
+ The problem affects Redis versions 7.0.0 or newer
+ [reported by Xion (SeungHyun Lee) of KAIST GoN].
+
+Module API changes
+==================
+
+* Fix RM_Call execution of scripts when used with M/W/S flags to properly
+ handle script flags (#11159)
+* Fix RM_SetAbsExpire and RM_GetAbsExpire API registration (#11025, #8564)
+
+Bug Fixes
+=========
+
+* Fix a hang when eviction is combined with lazy-free and maxmemory-eviction-tenacity is set to 100 (#11237)
+* Fix a crash when a replica may attempt to set itself as its master as a result of a manual failover (#11263)
+* Fix a bug where a cluster-enabled replica node may permanently set its master's hostname to '?' (#10696)
+* Fix a crash when a Lua script returns a meta-table (#11032)
+
+Fixes for issues in previous releases of Redis 7.0
+--------------------------------------------------
+
+* Fix redis-cli to do DNS lookup before sending CLUSTER MEET (#11151)
+* Fix crash when a key is lazy expired during cluster key migration (#11176)
+* Fix AOF rewrite to fsync the old AOF file when a new one is created (#11004)
+* Fix some crashes involving a list containing entries larger than 1GB (#11242)
+* Correctly handle scripts with a non-read-only shebang on a cluster replica (#11223)
+* Fix memory leak when unloading a module (#11147)
+* Fix bug with scripts ignoring client tracking NOLOOP (#11052)
+* Fix client-side tracking breaking protocol when FLUSHDB / FLUSHALL / SWAPDB is used inside MULTI-EXEC (#11038)
+* Fix ACL: BITFIELD with GET and also SET / INCRBY can be executed with read-only key permission (#11086)
+* Fix missing sections for INFO ALL when also requesting a module info section (#11291)
+
+
+================================================================================
+Redis 7.0.4 Released Monday Jul 18 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency: SECURITY, contains fixes to security issues.
+
+Security Fixes:
+* (CVE-2022-31144) A specially crafted XAUTOCLAIM command on a stream
+ key in a specific state may result with heap overflow, and potentially
+ remote code execution. The problem affects Redis versions 7.0.0 or newer.
+
+================================================================================
+Redis 7.0.3 Released Monday Jul 11 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency: MODERATE, specifically if you're using a previous release of
+Redis 7.0, contains fixes for bugs in previous 7.0 releases.
+
+
+Performance and resource utilization improvements
+=================================================
+
+* Optimize zset conversion on large ZRANGESTORE (#10789)
+* Optimize the performance of sending PING on large clusters (#10624)
+* Allow for faster restart of Redis in cluster mode (#10912)
+
+INFO fields and introspection changes
+=====================================
+
+* Add missing sharded pubsub keychannel count to CLIENT LIST (#10895)
+* Add missing pubsubshard_channels field in INFO STATS (#10929)
+
+Module API changes
+==================
+
+* Add RM_StringToULongLong and RM_CreateStringFromULongLong (#10889)
+* Add RM_SetClientNameById and RM_GetClientNameById (#10839)
+
+Changes in CLI tools
+====================
+
+* Add missing cluster-port support to redis-cli --cluster (#10344)
+
+Other General Improvements
+==========================
+
+* Account sharded pubsub channels memory consumption (#10925)
+* Allow ECHO in loading and stale modes (#10853)
+* Cluster: Throw -TRYAGAIN instead of -ASK on migrating nodes for multi-key
+ commands when the node only has some of the keys (#9526)
+
+Bug Fixes
+=========
+
+* TLS: Notify clients on connection shutdown (#10931)
+* Fsync directory while persisting AOF manifest, RDB file, and config file (#10737)
+* Script that made modification will not break with unexpected NOREPLICAS error (#10855)
+* Cluster: Fix a bug where nodes may not acknowledge a CLUSTER FAILOVER TAKEOVER
+ after a replica reboots (#10798)
+* Cluster: Fix crash during handshake and cluster shards call (#10942)
+
+Fixes for issues in previous releases of Redis 7.0
+--------------------------------------------------
+
+* TLS: Fix issues with large replies (#10909)
+* Correctly report the startup warning for vm.overcommit_memory (#10841)
+* redis-server command line allow passing config name and value in the same argument (#10866)
+* Support --save command line argument with no value for backwards compatibility (#10866)
+* Fix CLUSTER RESET command regression requiring an argument (#10898)
+
+================================================================================
+Redis 7.0.2 Released Sunday Jun 12 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency: MODERATE, specifically if you're using a previous release of
+Redis 7.0, contains fixes for bugs in previous 7.0 releases.
+
+Bug Fixes
+=========
+
+* Fixed SET and BITFIELD commands being wrongly marked movablekeys (#10837)
+ Regression in 7.0 possibly resulting in excessive roundtrip from cluster clients.
+* Fix crash when /proc/sys/vm/overcommit_memory is inaccessible (#10848)
+ Regression in 7.0.1 resulting in crash on startup on some configurations.
+
+
+================================================================================
+Redis 7.0.1 Released Wed Jun 8 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency: MODERATE, specifically if you're using a previous release of
+Redis 7.0, contains some behavior changes for new 7.0 features and important
+fixes for bugs in previous 7.0 releases.
+
+Improvements
+============
+
+* Add warning for suspected slow system clocksource setting
+ Add --check-system command line option. (#10636)
+* Allow read-only scripts (*_RO commands, and ones with `no-writes` flag)
+ during CLIENT PAUSE WRITE (#10744)
+* Add `readonly` flag in COMMAND command for EVAL_RO, EVALSHA_RO and FCALL_RO (#10728)
+* redis-server command line arguments now accept one string with spaces
+ for multi-arg configs (#10660)
+
+Potentially Breaking Changes
+============================
+
+* Omitting a config option value in command line argument no longer works (#10660)
+* Hide the `may_replicate` flag from the COMMAND command response (#10744)
+
+Potentially Breaking Changes for new Redis 7.0 features
+-------------------------------------------------------
+
+* Protocol: Sharded pubsub publish emits `smessage` instead of `message` (#10792)
+* CLUSTER SHARDS returns slots as RESP integers, not strings (#10683)
+* Block PFCOUNT and PUBLISH in read-only scripts (*_RO commands, and no-writes) (#10744)
+* Scripts that declare the `no-writes` flag are implicitly `allow-oom` too (#10699)
+
+Changes in CLI tools
+====================
+
+* redis-cli --bigkeys, --memkeys, --hotkeys, --scan. Finish nicely after Ctrl+C (#10736)
+
+Platform / toolchain support related improvements
+=================================================
+
+* Support tcp-keepalive config interval on MacOs (#10667)
+* Support RSS metrics on Haiku OS (#10687)
+
+INFO fields and introspection changes
+=====================================
+
+* Add isolated network metrics for replication. (#10062, #10810)
+
+Module API changes
+==================
+
+* Add two more new checks to RM_Call script mode (#10786)
+* Add new RM_Call flag to let Redis automatically refuse `deny-oom` commands (#10786)
+* Add module API RM_MallocUsableSize (#10795)
+* Add missing REDISMODULE_NOTIFY_NEW (#10688)
+* Fix cursor type in RedisModuleScanCursor to handle more than 2^31 elements (#10698)
+* Fix RM_Yield bugs and RM_Call("EVAL") OOM check bug (#10786)
+* Fix bugs in enum configs with overlapping bit flags (#10661)
+
+Bug Fixes
+=========
+
+* FLUSHALL correctly resets rdb_changes_since_last_save INFO field (#10691)
+* FLUSHDB is now propagated to replicas / AOF, even if the db is empty (#10691)
+* Replica fail and retry the PSYNC if the master is unresponsive (#10726)
+* Fix ZRANGESTORE crash when zset_max_listpack_entries is 0 (#10767)
+
+Fixes for issues in previous releases of Redis 7.0
+--------------------------------------------------
+
+* CONFIG REWRITE could cause a config change to be dropped for aliased configs (#10811)
+* CONFIG REWRITE would omit rename-command and include lines (#10761)
+ NOTE: Affected users who used Redis 7.0.0 to rewrite their configuration file
+ should review and fix the file.
+* Fix broken protocol after MISCONF (persistence) error (#10786)
+* Fix --save command line regression (#10690)
+* Fix possible regression around TLS config changes. re-load files even if the
+ file name didn't change. (#10713)
+* Re-add SENTINEL SLAVES command, missing in redis 7.0 (#10723)
+* BZMPOP gets unblocked by non-key args and returns them (#10764)
+* Fix possible memory leak in XADD and XTRIM (#10753)
+
+================================================================================
+Redis 7.0.0 GA Released Wed Apr 27 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency: SECURITY, contains fixes to security issues.
+
+Security Fixes:
+* (CVE-2022-24736) An attacker attempting to load a specially crafted Lua script
+ can cause NULL pointer dereference which will result with a crash of the
+ redis-server process. This issue affects all versions of Redis.
+ [reported by Aviv Yahav].
+* (CVE-2022-24735) By exploiting weaknesses in the Lua script execution
+ environment, an attacker with access to Redis can inject Lua code that will
+ execute with the (potentially higher) privileges of another Redis user.
+ [reported by Aviv Yahav].
+
+
+New Features
+============
+
+* Keyspace event for new keys (#10512)
+
+
+Command replies that have been extended
+---------------------------------------
+
+* COMMAND DOCS shows deprecated_since field in command args (#10545)
+* COMMAND DOCS shows module name where applicable (#10544)
+
+
+Potentially Breaking Changes
+============================
+
+* Replicas panic when they fail writing persistence (#10504)
+* Prevent cross slot operations in functions and scripts with shebang (#10615)
+* Rephrased some error responses about invalid commands or args (#10612)
+* Lua scripts do not have access to the print() function (#10651)
+
+
+Performance and resource utilization improvements
+=================================================
+
+* Speed optimization in streams (#10574)
+* Speed optimization in command execution pipeline (#10502)
+* Speed optimization in listpack encoded sorted (#10486)
+* Speed optimization in latency tracking at INFO (relevant for 7.0 RCs) (#10606)
+* Speed optimization when there are many replicas (relevant for 7.0 RCs) (#10588)
+
+
+New configuration options
+=========================
+
+* Allow ignoring disk persistence errors on replicas (#10504)
+* Allow abort with panic when replica fails to execute a command sent by the master (#10504)
+* Allow configuring shutdown flags of SIGTERM and SIGINT (#10594)
+* Allow attaching an operating system-specific identifier to Redis sockets (#10349)
+
+
+Module API changes
+==================
+
+* Add argument specifying ACL reason for module log entry (#10559)
+ Breaking API compatibility with 7.0 RCs
+* Add the deprecated_since field in command args of COMMAND DOCS (#10545)
+ Breaking API/ABI compatibility with 7.0 RCs
+* Add module API flag for using enum configs as bit flags (#10643)
+* Add RM_PublishMessageShard (#10543)
+* Add RM_MallocSizeString, RM_MallocSizeDict (#10542)
+* Add RM_TryAlloc (#10541)
+
+
+Bug Fixes
+=========
+
+* Replica report disk persistence errors in PING (#10603)
+* Fixes around rejecting commands on replicas and AOF when they must be respected (#10603)
+* Durability fixes for appendfsync=always policy (#9678)
+
+
+Fixes for issues in previous release candidates of Redis 7.0
+------------------------------------------------------------
+
+* Fix possible crash on CONFIG REWRITE (#10598)
+* Fix regression not aborting transaction on errors (#10612)
+* Fix auto-aof-rewrite-percentage based AOFRW trigger after restart (#10550)
+* Fix bugs when AOF enabled after startup, in case of failure before the first rewrite completes (#10616)
+* Fix RM_Yield module API bug processing future commands of the current client (#10573)
+
+
+================================================================================
+Redis 7.0 RC3 Released Tue Apr 5 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency LOW: This is another Release Candidate of Redis 7.0.
+
+New Features
+============
+
+New administrative and introspection commands and command arguments
+-------------------------------------------------------------------
+
+* CLUSTER SHARDS command deprecates CLUSTER SLOTS (#10293)
+
+
+Potentially Breaking Changes
+============================
+
+* CONFIG GET response returned in a non-deterministic order.
+ It's possible that a client was relying on configs order (#10323)
+* SORT / SORT_RO commands reject keys access patterns in GET and BY if ACL
+ doesn't grant the command full keyspace access (#10340)
+* FUNCTION LOAD command introduced in 7.0-RC1 was stripped of the ENGINE, and
+ NAME arguments which are now part of the script itself. The DESCRIPTION
+ argument was completely removed (#10500)
+* Set disable-thp config to be immutable (#10409)
+
+
+Performance and resource utilization improvements
+=================================================
+
+* Optimize performance and memory usage on replicas (#10413)
+* A faster and more robust code of zslRandomLevel using RAND_MAX (#5539)
+
+
+Changes in CLI tools
+====================
+
+* redis-cli: Use exit code 1 on error (#10468)
+* redis-cli: Do DNS lookup before sending CLUSTER MEET (#10436)
+* redis-benchmark: Fix --cluster with IPv6. (#10393)
+* redis-cli: Better --json Unicode support and --quoted-json (#10286)
+
+
+INFO fields and introspection changes
+=====================================
+
+* MEMORY STATS: Show cluster.links memory usage (#10302)
+
+
+Module API changes
+==================
+
+* APIs for exposing module configs to config file and CONFIG command (#10285)
+* Add an event notifying about configuration changes (#10311)
+* Add API for redacting command arguments from SLOWLOG and MONITOR (#10425)
+* RM_Call: new flags for script mode compatibility, no writes, and error replies (#10372)
+
+
+Bug Fixes
+=========
+
+* Sentinel: Fix no reconnect after auth-pass is changed (#10400)
+* Cluster: Fix race condition: Turn into replica on SETSLOT (#10489, #10381)
+* XREADGROUP: Unblock client when the stream key is deleted (#10306)
+
+
+Fixes for issue in previous release candidates of Redis 7.0
+-----------------------------------------------------------
+
+* ACL DRYRUN does not validate the verified command args. (#10405)
+* ACL DRYRUN returns the tested common permission error (#10359)
+* Incorrect parsing of hostname information from nodes.conf (#10435)
+* BITSET and BITFIELD SET should propagate even if just length changed (#10459)
+* SHUTDOWN, Fix a possible crash when the shutdown was aborted (#10440)
+* Script should not allow may-replicate commands when client pause write (#10364)
+* Optimization tracking memory usage from i/o threads. (#10401)
+* Initialize help when using redis-cli help or redis-cli ? (#10382)
+* Dismiss COW of client output buffer now that it's dynamic (#10371)
+* Fix memory corruption when EVAL fails before being processed (#10519)
+
+
+================================================================================
+Redis 7.0 RC2 Released Mon Feb 28 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency LOW: This is another Release Candidate of Redis 7.0.
+
+New Features
+============
+
+* Add stream consumer group lag tracking and reporting (#9127)
+* Add API for functions and eval Lua scripts to check ACL explicitly (#10220)
+
+New user commands or command arguments
+--------------------------------------
+
+* COMMAND GETKEYSANDFLAGS sub-command (#10237)
+* INFO command can take multiple section arguments (#6891)
+* XGROUP CREATE and SETID: new ENTRIESREAD optional argument (#9127)
+* XSETID new ENTRIESADDED and MAXDELETEDID optional arguments (#9127)
+
+Command replies that have been extended
+---------------------------------------
+
+* XINFO reports consumer group lag and a few other fields (#9127)
+* XAUTOCLAIM returns a new element with a list of deletes IDs (#10227)
+
+Potentially Breaking Changes
+============================
+
+* X[AUTO]CLAIM skips deleted entries instead of replying with Nil, and deletes
+ them from the pending entry list (#10227)
+* Fix messed up error codes returned from EVAL scripts (#10218, #10329)
+* COMMAND INFO, Renames key-spec "CHANNEL" flag to be "NOT_KEY" (#10299)
+
+Performance and resource utilization improvements
+=================================================
+
+* Reduce system calls and small packets for client replies (#9934)
+* Reduce memory usage of stale clients (#9822)
+* Fix regression in Z[REV]RANGE commands (by-rank) introduced in Redis 6.2 (#10337)
+
+Changes in CLI tools
+===================
+
+* Adapt redis-check-aof tool for Multi Part AOF (#10061)
+* Enable redis-benchmark to use RESP3 protocol mode (#10335)
+
+Platform / toolchain support related improvements
+=================================================
+
+* Fix OpenSSL 3.0.x related issues (#10291)
+
+INFO fields and introspection changes
+=====================================
+
+* COMMAND INFO key-specs has new variable_flags flag (#10237, #10148)
+* INFO stats: add aof_rewrites and rdb_snapshots counters (#10178)
+* INFO stats: add reply_buffer_shrinks and reply_buffer_expends (#9822)
+* INFO modules: add no-implicit-signal-modified module option (#10284)
+
+Module API changes
+==================
+
+* Add RM_SetCommandInfo API to set command metadata for the new COMMAND
+ introspection features and ACL key permissions (#10108)
+* Add RM_KeyAtPosWithFlags and RM_GetCommandKeysWithFlags APIs (#10237)
+* Add getchannels-api command flag and RM_IsChannelsPositionRequest,
+ RM_ChannelAtPosWithFlags APIs (#10299)
+* Change RM_ACLCheckChannelPermissions and RM_ACLCheckKeyPermissions APIs
+ (released in RC1) to take different flags (#10299)
+* Fix RM_SetModuleOptions flag collision. Bug in 7.0 RC1 header file, modules
+ that used OPTIONS_HANDLE_REPL_ASYNC_LOAD will mess up key invalidations (#10284)
+
+Bug Fixes
+=========
+
+* Modules: Fix thread safety violation when a module thread adds an error reply,
+ broken in 6.2 (#10278)
+* Lua: Fix Eval scripts active defrag, broken 7.0 in RC1 (#10271)
+* Fix geo search bounding box check causing missing results (#10018)
+* Lua: Add checks for min-slave-* configs when evaluating Lua scripts and
+ Functions (#10160)
+* Modules: Prevent crashes and memory leaks when MODULE UNLOAD is used on module
+ with a pending timer (#10187)
+* Fix error stats and failed command stats for blocked clients (#10309)
+* Lua/Modules: Fix missing and duplicate error stats for scripts and modules (#10329, #10278)
+* Check target node is a primary during cluster setslot (#10277)
+* Fix key deletion not to invalidate WATCH when used on a logically expired key (#10256)
+* Sentinel: return an error if configuration save fails (#10151)
+* Sentinel: fix a free-after-use issue re-registering Sentinels (#10333)
+
+================================================================================
+Redis 7.0 RC1 Released Mon Jan 31 12:00:00 IST 2022
+================================================================================
+
+Upgrade urgency LOW: This is the first Release Candidate of Redis 7.0.
+
+Redis Release Candidate (RC) versions are early versions that are made available
+for early adopters in the community to test them. We do not consider
+them suitable for production environments.
+
+Introduction to the Redis 7.0 release
+=====================================
+
+Redis 7.0 includes several new user-facing features, significant performance
+optimizations, and many other improvements. It also includes changes that
+potentially break backwards compatibility with older versions. We urge users to
+review the release notes carefully before upgrading.
+
+In particular, users should be aware of the following changes:
+
+1. Redis 7 stores AOF as multiple files in a folder; see Multi-Part AOF below.
+2. Redis 7 uses a new version 10 format for RDB files, which is incompatible
+ with older versions.
+3. Redis 7 converts ziplist encoded keys to listpacks on the fly when loading
+ an older RDB format. Conversion applies to loading a file from disk or
+ replicating from a Redis master and will slightly increase loading time.
+4. See sections about breaking changes mentioned below.
+
+Here is a comprehensive list of changes in this release compared to 6.2.6.
+Each one includes the PR number that added it so that you can get more details
+at https://github.com/redis/redis/pull/<number>
+
+New Features
+============
+
+* Redis Functions: A new way to extend Redis with server-side scripts (#8693)
+ see https://redis.io/topics/functions-intro
+* ACL: Fine-grained key-based permissions and allow users to support multiple
+ sets of command rules with selectors (#9974)
+ see https://redis.io/topics/acl#key-permissions and https://redis.io/topics/acl#selectors.
+* Cluster: Sharded (node-specific) Pub/Sub support (#8621)
+ see https://redis.io/topics/pubsub#sharded-pubsub
+* First-class handling of sub-commands in most contexts (affecting ACL
+ categories, INFO commandstats, etc.) (#9504, #10147)
+* Command metadata and documentation (#10104)
+ see https://redis.io/commands/command-docs, https://redis.io/topics/command-tips
+* Command key-specs. A better way for clients to locate key arguments and their
+ read/write purpose (#8324, #10122, #10167)
+ see https://redis.io/topics/key-specs
+* Multi-Part AOF mechanism to avoid AOF rewrite overheads (#9788)
+* Cluster: Support for hostnames, instead of IP addresses only (#9530)
+* Improved management of memory consumed by network buffers, and an option to
+ drop clients when total memory exceeds a limit (#8687)
+* Cluster: A mechanism for disconnecting cluster bus connections to prevent
+ uncontrolled buffer growth (#9774)
+* AOF: Timestamp annotations and support for point-in-time recovery (#9326)
+* Lua: support Function flags in EVAL scripts (#10126)
+ see https://redis.io/topics/eval-intro#eval-flags
+* Lua: Support RESP3 reply for Verbatim and Big-Number types (#9202)
+* Lua: Get Redis version via redis.REDIS_VERSION, redis.REDIS_VERSION_NUM (#10066)
+
+New user commands or command arguments
+--------------------------------------
+
+* ZMPOP, BZMPOP commands (#9484)
+* LMPOP, BLMPOP commands (#9373)
+* SINTERCARD, ZINTERCARD commands (#8946, #9425)
+* SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB (#8621)
+* EXPIRETIME and PEXPIRETIME commands (#8474)
+* EXPIRE command group supports NX/XX/GT/LT options (#2795)
+* SET command supports combining NX and GET flags (#8906)
+* BITPOS, BITCOUNT accepts BIT index (#9324)
+* EVAL_RO, EVALSHA_RO command variants, to run on read-only replicas (#8820)
+* SORT_RO command, to run on read-only replicas (#9299)
+* SHUTDOWN arguments: NOW, FORCE, ABORT (#9872)
+* FUNCTION *, FCALL, FCALL_RO - https://redis.io/commands/function-load
+* CONFIG SET/GET can handle multiple configs atomically, in one call (#9748, #9914)
+* QUIT promoted to be a proper command, HOST: and POST demoted (#9798)
+* XADD supports auto sequence number via <ms>-* (#9217)
+
+New administrative and introspection commands and command arguments
+-------------------------------------------------------------------
+
+* COMMAND DOCS (#9656, #10056, #10104)
+* COMMAND LIST (#9504)
+* COMMAND INFO accepts sub-commands as args, and no args too (#9504, #10056)
+* LATENCY HISTOGRAM (#9462)
+* CLUSTER LINKS (#9774)
+* CLUSTER DELSLOTSRANGE and CLUSTER ADDSLOTSRANGE (#9445)
+* CLIENT NO-EVICT (#8687)
+* ACL DRYRUN (#9974)
+* SLOWLOG GET supports passing in -1 to get all entries (#9018)
+
+Command replies that have been extended
+---------------------------------------
+
+* COMMAND and COMMAND INFO extended with tips, key-specs and sub-commands
+ see https://redis.io/commands/command
+* ACL CAT, COMMAND LIST list sub-commands (#10127)
+* MODULE LIST reply includes path and args (#4848)
+* OBJECT ENCODING returns listpack instead of ziplist (#8887, #9366)
+* CLUSTER SLOTS hostname support (#9530)
+* COMMAND command: Added the `blocking` and `module` flags (#10104, #9656)
+
+
+Potentially Breaking Changes
+============================
+
+* Modifying the bind parameter to a non-default value will no longer implicitly
+ disable protected-mode (#9034)
+* Remove EVAL script verbatim replication, propagation, and deterministic
+ execution logic (#9812)
+ This has been deprecated and off by default since Redis 6 and is no longer
+ supported.
+* ACL: pub/sub channels are blocked by default (acl-pubsub-default=resetchannels) (#10181)
+* SCRIPT LOAD and SCRIPT FLUSH are no longer propagated to replicas / AOF (#9812)
+* ACL: Declarations of duplicate ACL users in startup files and command line
+ arguments will result in an error, whereas previously the last declaration
+ would overwrite the others. (#9330)
+* Replication: TTLs are always replicated as absolute (not relative) millisecond
+ timestamps (#8474)
+* Fixes in handling multi-key commands with expired keys on writable replicas (#9572)
+* CONFIG SET maxmemory returns before starting eviction (#10019)
+* AOF: The new Multi-Part mechanism stores data as a set of multiple files in a
+ designated folder (#9788)
+* Remove STRALGO command, preserve LCS a standalone command which only works on
+ keys (#9799)
+* Remove gopher protocol support (#9057)
+* MODULE and DEBUG commands disabled (protected) by default, for better security (#9920)
+* Snapshot-creating and other admin commands in MULTI/EXEC transactions are now
+ rejected (#10015)
+* PING is now rejected with -MASTERDOWN when replica-serve-stale-data=no (#9757)
+* ACL GETUSER reply now uses ACL syntax for `keys` and `channels` (#9974)
+* COMMAND reply drops `random` and `sort-for-scripts` flags, which are now part
+ of command tips (#10104)
+* LPOP/RPOP with count against non-existing list return null array (#10095)
+* INFO commandstats now shows the stats per sub-command (#9504)
+* ZPOPMIN/ZPOPMAX used to produce wrong replies when count is 0 with non-zset (#9711)
+* LPOP/RPOP used to produce wrong replies when count is 0 (#9692)
+* CONFIG GET bind now returns the current value in effect, even if the implicit
+ default is in use (#9034)
+* CONFIG REWRITE now rewrites the list of modules to load (#4848)
+* Config: repl-diskless-sync is now set to yes by default (#10092)
+* When shutting down, Redis can optionally wait for replicas to catch up on the
+ replication link (#9872)
+* Most CONFIG SET, REWRITE, RESETSTAT commands are now allowed during loading (#9878)
+* READONLY and READWRITE commands are now allowed when loading and on stale
+ replicas (#7425)
+* Fix ACL category for SELECT, WAIT, ROLE, LASTSAVE, READONLY, READWRITE, ASKING (#9208)
+* RESET is now allowed even when on unauthenticated connections (#9798)
+* SCRIPT LOAD is now allowed on stale replicas (#10126)
+
+
+Security improvements
+=====================
+
+* Sensitive configs and commands blocked (protected) by default (#9920)
+* Improve bind and protected-mode config handling (#9034)
+* Sentinel: avoid logging auth-pass value (#9652)
+* redis-cli: sensitive commands bypass the history file (#8895)
+
+
+Performance and resource utilization improvements
+=================================================
+
+* Significant memory saving and latency improvements in cluster mode (#9356)
+* Significant memory savings in case of many hash or zset keys (#9228)
+* Replication backlog and replicas use one global shared replication buffer (#9166)
+* Significant reduction of copy-on-write memory overheads (#8974)
+* Free unused capacity in the cluster send buffer (#9255)
+* Memory efficiency, make full use of client struct memory for reply buffers (#8968)
+* Replace ziplist with listpack in Hash, List, Zset (#8887, #9366, #9740)
+* Add support for list type to store elements larger than 4GB (#9357)
+* Reuse temporary client objects for blocked clients by module (#9940)
+* Remove command argument count limit, dynamically grow argv buffer (#9528)
+* Optimize list type operations to seek from the nearest end (#9454)
+* Improvements in fsync to avoid large writes to disk (#9409)
+* BITSET and BITFIELD SET only propagated when the value actually changed (#9403)
+* Improve latency when a client is unblocked by module timer (#9593)
+
+
+Other General Improvements
+==========================
+
+* Make partial sync possible after master reboot (#8015)
+* Always create a base AOF file when redis starts from empty (#10102)
+* Replica keep serving data during repl-diskless-load=swapdb for better
+ availability (#9323)
+
+
+Changes in CLI tools
+====================
+* redis-cli --json, and -2 options (#9954)
+* redis-cli --scan, add sleep interval option (#3751)
+* redis-cli --replica optimization, skip RDB generation (#10044)
+* redis-cli --functions-rdb, generate RDB with Functions only (#9968)
+* redis-cli -X, take an arbitrary arg from stdin, extend --cluster call take -x (#9980)
+* redis-benchmark -x takes an argument from stdin (#9130)
+* redis-benchmark, Added URI support (#9314)
+* redis-cli monitor and pubsub can be aborted with Ctrl+C, keeping the cli alive (#9347)
+
+
+Platform / toolchain support related improvements
+=================================================
+
+* Upgrade jemalloc 5.2.1 (#9623)
+* Fix RSS metrics on NetBSD and OpenBSD (#10116, #10149)
+* Check somaxconn system settings on macOS, FreeBSD and OpenBSD (#9972)
+* Better fsync on MacOS, improve power failure safety (#9545)
+
+
+New configuration options
+=========================
+
+* CONFIG SET/GET can handle multiple configs in one call (#9748, #9914)
+* Support glob pattern matching for config include files (#8980)
+* appenddirname, folder where multi-part AOF files are stored (#9788)
+* shutdown-timeout, default 10 seconds (#9872)
+* maxmemory-clients, allows limiting the total memory usage by all clients (#8687)
+* cluster-port, can control the bind port of cluster bus (#9389)
+* bind-source-addr, configuration argument control IP of outgoing connections (#9142)
+* busy-reply-threshold, alias for the old lua-time-limit (#9963)
+* repl-diskless-sync-max-replicas, allows faster replication in some cases (#10092)
+* latency-tracking, enabled by default, and latency-tracking-info-percentiles (#9462)
+* cluster-announce-hostnameand cluster-preferred-endpoint-type (#9530)
+* cluster-allow-pubsubshard-when-down (#8621)
+* cluster-link-sendbuf-limit (#9774)
+* list-max-listpack-*, hash-max-listpack-*, zset-max-listpack-* as aliases for
+ the old ziplist configs (#8887, #9366, #9740)
+
+
+INFO fields and introspection changes
+=====================================
+
+* INFO: latencystats section (#9462)
+* INFO: total_active_defrag_time and current_active_defrag_time (#9377)
+* INFO: total_eviction_exceeded_time and current_eviction_exceeded_time (#9031)
+* INFO: evicted_clients (#8687)
+* INFO: mem_cluster_links, total_cluster_links_buffer_limit_exceeded (#9774)
+* INFO: current_cow_peak (#8974)
+* INFO: Remove aof_rewrite_buffer_length (#9788)
+* MEMORY STATS: Report slot to keys map size in in cluster mode (#10017)
+* INFO MEMORY: changes to separate memory usage of Functions and EVAL (#9780)
+* INFO MEMORY: Add mem_total_replication_buffers, change meaning of
+ mem_clients_slaves (#9166)
+* CLIENT LIST: tot-mem, multi-mem (#8687)
+* CLIENT LIST, INFO: Show RESP version (#9508)
+* SENTINEL INFO: tilt_mode_since (#9000)
+* LATENCY: Track module-acquire-GIL latency (#9608)
+
+
+Module API changes
+==================
+
+* Add API for replying with RESP3 types (#8521, #9639, #9632)
+* Add API for parsing RESP3 replies from RM_Call (#9202)
+* Add RM_Call '0' and '3' flags to control RESP version to be used (#9202)
+* Add Support for validating ACL explicitly (#9309, #9974)
+* Add missing list type functionality APIs (#8439)
+* Add API for yielding to Redis events during long busy jobs (#9963)
+* Add API for registering other file descriptors to the Redis event loop (#10001)
+* Enhance mem_usage/free_effort/unlink/copy and IO callbacks to have key name
+ and DB index (#8999)
+* Enhance mem_usage callback to get the requested sample size (#9612)
+* RM_GetContextFlags: CTX_FLAGS_ASYNC_LOADING, CTX_FLAGS_RESP3 (#9323, #9202)
+* Mark APIs as non-experimental (#9983)
+* RM_CreateSubcommand (#9504)
+* RM_KeyExists (#9600)
+* RM_TrimStringAllocation (#9540)
+* RM_LoadDataTypeFromStringEncver (#9537)
+* RM_MonotonicMicroseconds (#10101)
+* Add ReplAsyncLoad event and deprecate the ReplBackup event (#9323)
+* Add RM_SetModuleOptions OPTIONS_HANDLE_REPL_ASYNC_LOAD flag (#9323)
+
+
+Bug Fixes
+=========
+
+* Fix COMMAND GETKEYS on EVAL without keys (#9733)
+* Improve MEMORY USAGE with allocator overheads (#9095)
+* Unpause clients after manual failover ends instead of waiting for timed (#9676)
+* Lua: fix crash on a script call with many arguments, a regression in v6.2.6 (#9809)
+* Lua: Use all characters to calculate string hash to prevent hash collisions (#9449)
+* Prevent LCS from allocating temp memory over proto-max-bulk-len (#9817)
+* Tracking: Make invalidation messages always after command's reply (#9422)
+* Cluster: Hide empty replicas from CLUSTER SLOTS responses (#9287)
+* CLIENT KILL killed all clients when used with ID of 0 (#9853)
+* Fix bugs around lists with list-compress-depth (#9849, #9779)
+* Fix one in a blue moon LRU bug in RESTORE, RDB loading, and module API (#9279)
+* Reset lazyfreed_objects info field with RESETSTAT, test for stream lazyfree (#8934)
+* Fix RDB and list node compression for handling values larger than 4GB (#9776)
+* Fix a crash when adding elements larger than 2GB to a Set or Hash (#9916)
+* Diskless replication could not count as a change and skip next database SAVE (#9323)
+* Fix excessive stream trimming due to an overflow (#10068)
+* Safe and organized exit when receiving SIGTERM while loading (#10003)
+* Improve EXPIRE TTL overflow detection (#9839)
+* Add missed error counting for INFO errorstats (#9646)
+* DECRBY LLONG_MIN caused negation overflow (#9577)
+* Delay discarding cached master when full synchronization (#9398)
+* Fix Stream keyspace notification and persistence triggers in consumer
+ creation and deletion (#9263)
+* Fix rank overflow in zset with more than 2B entries (#9249)
+* Avoid starting in check-aof / check-rdb / sentinel modes if only the folder
+ name contains that name (#9215, #9176)
+* create the log file only after done parsing the entire config file (#6741)
+* redis-cli: Fix SCAN sleep interval for --bigkeys, --memkeys, --hotkeys (#9624)
+* redis-cli: Fix prompt to show the right DB num and transaction state after
+ RESET (#9096)
+* Module API: fix possible propagation bugs in case a module calls CONFIG SET
+ maxmemory outside a command (#10019, #9890)
+* Module API: carry through client RESP version to module blocked clients (#9634)
+* Module API: release clients blocked on module commands in cluster resharding
+ and down state (#9483)
+* Sentinel: Fix availability after master reboot (#9438)
+* Sentinel: Fix memory leak with TLS (#9753)
+* Sentinel: Fix possible failover due to duplicate zero-port (#9240)
+* Sentinel: Fix issues with hostname support (#10146)
+* Sentinel: Fix election failures on certain container environments (#10197)
+
+
+Thanks to all the users and developers who made this release possible.
+We'll follow up with more RC releases, until the code looks production ready
+and we don't get reports of serious issues for a while.
+
+A special thank you for the amount of work put into this release by:
+
+- Guy Benoish
+- Meir Shpilraien
+- Oran Agra
+- Chen Yang
+- Zhu Binbin
+- Yoav Steinberg
+- sundb
+- Madelyn Olson
+- Yossi Gottlieb
+- Viktor Söderqvist
+- Wang Yuan
+- Harkrishn Patro
+- Nick Chun
+- Ozan Tezcan
+- Wen Hui
+- Huang Zhw
+- Nan Yan
+- Filipe Oliveira
+- Eduardo Semprebon
+- Yaacov Hazan
+- Itamar Haber
+- Zhao Zhao
+- Itay Perry
+- Moti Cohen
+- Ning Sun
+- zhugezy
+- Ran Shidlansik
+- menwen
+- Andy Pan
+