"Fossies" - the Fresh Open Source Software Archive

Member "redis-7.0.5/00-RELEASENOTES" (21 Sep 2022, 37069 Bytes) of package /linux/misc/redis-7.0.5.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "00-RELEASENOTES": 7.0.4_vs_7.0.5.

    1 Redis 7.0 release notes
    2 =======================
    3 
    4 --------------------------------------------------------------------------------
    5 Upgrade urgency levels:
    6 
    7 LOW:      No need to upgrade unless there are new features you want to use.
    8 MODERATE: Program an upgrade of the server, but it's not urgent.
    9 HIGH:     There is a critical bug that may affect a subset of users. Upgrade!
   10 CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
   11 SECURITY: There are security fixes in the release.
   12 --------------------------------------------------------------------------------
   13 
   14 
   15 ================================================================================
   16 Redis 7.0.5 Released Wed Sep 21 20:00:00 IST 2022
   17 ================================================================================
   18 
   19 Upgrade urgency: SECURITY, contains fixes to security issues.
   20 
   21 Security Fixes:
   22 * (CVE-2022-35951) Executing a XAUTOCLAIM command on a stream key in a specific
   23   state, with a specially crafted COUNT argument, may cause an integer overflow,
   24   a subsequent heap overflow, and potentially lead to remote code execution.
   25   The problem affects Redis versions 7.0.0 or newer
   26   [reported by Xion (SeungHyun Lee) of KAIST GoN].
   27 
   28 Module API changes
   29 ==================
   30 
   31 * Fix RM_Call execution of scripts when used with M/W/S flags to properly
   32   handle script flags (#11159)
   33 * Fix RM_SetAbsExpire and RM_GetAbsExpire API registration (#11025, #8564)
   34 
   35 Bug Fixes
   36 =========
   37 
   38 * Fix a hang when eviction is combined with lazy-free and maxmemory-eviction-tenacity is set to 100 (#11237)
   39 * Fix a crash when a replica may attempt to set itself as its master as a result of a manual failover (#11263)
   40 * Fix a bug where a cluster-enabled replica node may permanently set its master's hostname to '?' (#10696)
   41 * Fix a crash when a Lua script returns a meta-table (#11032)
   42 
   43 Fixes for issues in previous releases of Redis 7.0
   44 --------------------------------------------------
   45 
   46 * Fix redis-cli to do DNS lookup before sending CLUSTER MEET (#11151)
   47 * Fix crash when a key is lazy expired during cluster key migration (#11176)
   48 * Fix AOF rewrite to fsync the old AOF file when a new one is created (#11004)
   49 * Fix some crashes involving a list containing entries larger than 1GB (#11242)
   50 * Correctly handle scripts with a non-read-only shebang on a cluster replica (#11223)
   51 * Fix memory leak when unloading a module (#11147)
   52 * Fix bug with scripts ignoring client tracking NOLOOP (#11052)
   53 * Fix client-side tracking breaking protocol when FLUSHDB / FLUSHALL / SWAPDB is used inside MULTI-EXEC (#11038)
   54 * Fix ACL: BITFIELD with GET and also SET / INCRBY can be executed with read-only key permission (#11086)
   55 * Fix missing sections for INFO ALL when also requesting a module info section (#11291)
   56 
   57 
   58 ================================================================================
   59 Redis 7.0.4 Released Monday Jul 18 12:00:00 IST 2022
   60 ================================================================================
   61 
   62 Upgrade urgency: SECURITY, contains fixes to security issues.
   63 
   64 Security Fixes:
   65 * (CVE-2022-31144) A specially crafted XAUTOCLAIM command on a stream
   66   key in a specific state may result with heap overflow, and potentially
   67   remote code execution. The problem affects Redis versions 7.0.0 or newer.
   68 
   69 ================================================================================
   70 Redis 7.0.3 Released Monday Jul 11 12:00:00 IST 2022
   71 ================================================================================
   72 
   73 Upgrade urgency: MODERATE, specifically if you're using a previous release of
   74 Redis 7.0, contains fixes for bugs in previous 7.0 releases.
   75 
   76 
   77 Performance and resource utilization improvements
   78 =================================================
   79 
   80 * Optimize zset conversion on large ZRANGESTORE (#10789)
   81 * Optimize the performance of sending PING on large clusters (#10624)
   82 * Allow for faster restart of Redis in cluster mode (#10912)
   83 
   84 INFO fields and introspection changes
   85 =====================================
   86 
   87 * Add missing sharded pubsub keychannel count to CLIENT LIST (#10895)
   88 * Add missing pubsubshard_channels field in INFO STATS (#10929)
   89 
   90 Module API changes
   91 ==================
   92 
   93 * Add RM_StringToULongLong and RM_CreateStringFromULongLong (#10889)
   94 * Add RM_SetClientNameById and RM_GetClientNameById (#10839)
   95 
   96 Changes in CLI tools
   97 ====================
   98 
   99 * Add missing cluster-port support to redis-cli --cluster (#10344)
  100 
  101 Other General Improvements
  102 ==========================
  103 
  104 * Account sharded pubsub channels memory consumption (#10925)
  105 * Allow ECHO in loading and stale modes (#10853)
  106 * Cluster: Throw -TRYAGAIN instead of -ASK on migrating nodes for multi-key
  107   commands when the node only has some of the keys (#9526)
  108 
  109 Bug Fixes
  110 =========
  111 
  112 * TLS: Notify clients on connection shutdown (#10931)
  113 * Fsync directory while persisting AOF manifest, RDB file, and config file (#10737)
  114 * Script that made modification will not break with unexpected NOREPLICAS error (#10855)
  115 * Cluster: Fix a bug where nodes may not acknowledge a CLUSTER FAILOVER TAKEOVER
  116   after a replica reboots (#10798)
  117 * Cluster: Fix crash during handshake and cluster shards call (#10942)
  118 
  119 Fixes for issues in previous releases of Redis 7.0
  120 --------------------------------------------------
  121 
  122 * TLS: Fix issues with large replies (#10909)
  123 * Correctly report the startup warning for vm.overcommit_memory (#10841)
  124 * redis-server command line allow passing config name and value in the same argument (#10866)
  125 * Support --save command line argument with no value for backwards compatibility (#10866)
  126 * Fix CLUSTER RESET command regression requiring an argument (#10898)
  127 
  128 ================================================================================
  129 Redis 7.0.2 Released Sunday Jun 12 12:00:00 IST 2022
  130 ================================================================================
  131 
  132 Upgrade urgency: MODERATE, specifically if you're using a previous release of
  133 Redis 7.0, contains fixes for bugs in previous 7.0 releases.
  134 
  135 Bug Fixes
  136 =========
  137 
  138 * Fixed SET and BITFIELD commands being wrongly marked movablekeys (#10837)
  139   Regression in 7.0 possibly resulting in excessive roundtrip from cluster clients.
  140 * Fix crash when /proc/sys/vm/overcommit_memory is inaccessible (#10848)
  141   Regression in 7.0.1 resulting in crash on startup on some configurations.
  142 
  143 
  144 ================================================================================
  145 Redis 7.0.1 Released Wed Jun 8 12:00:00 IST 2022
  146 ================================================================================
  147 
  148 Upgrade urgency: MODERATE, specifically if you're using a previous release of
  149 Redis 7.0, contains some behavior changes for new 7.0 features and important
  150 fixes for bugs in previous 7.0 releases.
  151 
  152 Improvements
  153 ============
  154 
  155 * Add warning for suspected slow system clocksource setting
  156   Add --check-system command line option. (#10636)
  157 * Allow read-only scripts (*_RO commands, and ones with `no-writes` flag)
  158   during CLIENT PAUSE WRITE (#10744)
  159 * Add `readonly` flag in COMMAND command for EVAL_RO, EVALSHA_RO and FCALL_RO (#10728)
  160 * redis-server command line arguments now accept one string with spaces
  161   for multi-arg configs (#10660)
  162 
  163 Potentially Breaking Changes
  164 ============================
  165 
  166 * Omitting a config option value in command line argument no longer works (#10660)
  167 * Hide the `may_replicate` flag from the COMMAND command response (#10744)
  168 
  169 Potentially Breaking Changes for new Redis 7.0 features
  170 -------------------------------------------------------
  171 
  172 * Protocol: Sharded pubsub publish emits `smessage` instead of `message` (#10792)
  173 * CLUSTER SHARDS returns slots as RESP integers, not strings (#10683)
  174 * Block PFCOUNT and PUBLISH in read-only scripts (*_RO commands, and no-writes) (#10744)
  175 * Scripts that declare the `no-writes` flag are implicitly `allow-oom` too (#10699)
  176 
  177 Changes in CLI tools
  178 ====================
  179 
  180 * redis-cli --bigkeys, --memkeys, --hotkeys, --scan. Finish nicely after Ctrl+C (#10736)
  181 
  182 Platform / toolchain support related improvements
  183 =================================================
  184 
  185 * Support tcp-keepalive config interval on MacOs (#10667)
  186 * Support RSS metrics on Haiku OS (#10687)
  187 
  188 INFO fields and introspection changes
  189 =====================================
  190 
  191 * Add isolated network metrics for replication. (#10062, #10810)
  192 
  193 Module API changes
  194 ==================
  195 
  196 * Add two more new checks to RM_Call script mode (#10786)
  197 * Add new RM_Call flag to let Redis automatically refuse `deny-oom` commands (#10786)
  198 * Add module API RM_MallocUsableSize (#10795)
  199 * Add missing REDISMODULE_NOTIFY_NEW (#10688)
  200 * Fix cursor type in RedisModuleScanCursor to handle more than 2^31 elements (#10698)
  201 * Fix RM_Yield bugs and RM_Call("EVAL") OOM check bug (#10786)
  202 * Fix bugs in enum configs with overlapping bit flags (#10661)
  203 
  204 Bug Fixes
  205 =========
  206 
  207 * FLUSHALL correctly resets rdb_changes_since_last_save INFO field (#10691)
  208 * FLUSHDB is now propagated to replicas / AOF, even if the db is empty (#10691)
  209 * Replica fail and retry the PSYNC if the master is unresponsive (#10726)
  210 * Fix ZRANGESTORE crash when zset_max_listpack_entries is 0 (#10767)
  211 
  212 Fixes for issues in previous releases of Redis 7.0
  213 --------------------------------------------------
  214 
  215 * CONFIG REWRITE could cause a config change to be dropped for aliased configs (#10811)
  216 * CONFIG REWRITE would omit rename-command and include lines (#10761)
  217   NOTE: Affected users who used Redis 7.0.0 to rewrite their configuration file
  218   should review and fix the file.
  219 * Fix broken protocol after MISCONF (persistence) error (#10786)
  220 * Fix --save command line regression (#10690)
  221 * Fix possible regression around TLS config changes. re-load files even if the
  222   file name didn't change. (#10713)
  223 * Re-add SENTINEL SLAVES command, missing in redis 7.0 (#10723)
  224 * BZMPOP gets unblocked by non-key args and returns them (#10764)
  225 * Fix possible memory leak in XADD and XTRIM (#10753)
  226 
  227 ================================================================================
  228 Redis 7.0.0 GA  Released Wed Apr 27 12:00:00 IST 2022
  229 ================================================================================
  230 
  231 Upgrade urgency: SECURITY, contains fixes to security issues.
  232 
  233 Security Fixes:
  234 * (CVE-2022-24736) An attacker attempting to load a specially crafted Lua script
  235   can cause NULL pointer dereference which will result with a crash of the
  236   redis-server process. This issue affects all versions of Redis.
  237   [reported by Aviv Yahav].
  238 * (CVE-2022-24735) By exploiting weaknesses in the Lua script execution
  239   environment, an attacker with access to Redis can inject Lua code that will
  240   execute with the (potentially higher) privileges of another Redis user.
  241   [reported by Aviv Yahav].
  242 
  243 
  244 New Features
  245 ============
  246 
  247 * Keyspace event for new keys (#10512)
  248 
  249 
  250 Command replies that have been extended
  251 ---------------------------------------
  252 
  253 * COMMAND DOCS shows deprecated_since field in command args (#10545)
  254 * COMMAND DOCS shows module name where applicable (#10544)
  255 
  256 
  257 Potentially Breaking Changes
  258 ============================
  259 
  260 * Replicas panic when they fail writing persistence (#10504)
  261 * Prevent cross slot operations in functions and scripts with shebang (#10615)
  262 * Rephrased some error responses about invalid commands or args (#10612)
  263 * Lua scripts do not have access to the print() function (#10651)
  264 
  265 
  266 Performance and resource utilization improvements
  267 =================================================
  268 
  269 * Speed optimization in streams (#10574)
  270 * Speed optimization in command execution pipeline (#10502)
  271 * Speed optimization in listpack encoded sorted (#10486)
  272 * Speed optimization in latency tracking at INFO (relevant for 7.0 RCs) (#10606)
  273 * Speed optimization when there are many replicas (relevant for 7.0 RCs) (#10588)
  274 
  275 
  276 New configuration options
  277 =========================
  278 
  279 * Allow ignoring disk persistence errors on replicas (#10504)
  280 * Allow abort with panic when replica fails to execute a command sent by the master (#10504)
  281 * Allow configuring shutdown flags of SIGTERM and SIGINT (#10594)
  282 * Allow attaching an operating system-specific identifier to Redis sockets (#10349)
  283 
  284 
  285 Module API changes
  286 ==================
  287 
  288 * Add argument specifying ACL reason for module log entry (#10559)
  289   Breaking API compatibility with 7.0 RCs
  290 * Add the deprecated_since field in command args of COMMAND DOCS (#10545)
  291   Breaking API/ABI compatibility with 7.0 RCs
  292 * Add module API flag for using enum configs as bit flags (#10643)
  293 * Add RM_PublishMessageShard (#10543)
  294 * Add RM_MallocSizeString, RM_MallocSizeDict (#10542)
  295 * Add RM_TryAlloc (#10541)
  296 
  297 
  298 Bug Fixes
  299 =========
  300 
  301 * Replica report disk persistence errors in PING (#10603)
  302 * Fixes around rejecting commands on replicas and AOF when they must be respected (#10603)
  303 * Durability fixes for appendfsync=always policy (#9678)
  304 
  305 
  306 Fixes for issues in previous release candidates of Redis 7.0
  307 ------------------------------------------------------------
  308 
  309 * Fix possible crash on CONFIG REWRITE (#10598)
  310 * Fix regression not aborting transaction on errors (#10612)
  311 * Fix auto-aof-rewrite-percentage based AOFRW trigger after restart (#10550)
  312 * Fix bugs when AOF enabled after startup, in case of failure before the first rewrite completes (#10616)
  313 * Fix RM_Yield module API bug processing future commands of the current client (#10573)
  314 
  315 
  316 ================================================================================
  317 Redis 7.0 RC3   Released Tue Apr 5 12:00:00 IST 2022
  318 ================================================================================
  319 
  320 Upgrade urgency LOW: This is another Release Candidate of Redis 7.0.
  321 
  322 New Features
  323 ============
  324 
  325 New administrative and introspection commands and command arguments
  326 -------------------------------------------------------------------
  327 
  328 * CLUSTER SHARDS command deprecates CLUSTER SLOTS (#10293)
  329 
  330 
  331 Potentially Breaking Changes
  332 ============================
  333 
  334 * CONFIG GET response returned in a non-deterministic order.
  335   It's possible that a client was relying on configs order (#10323)
  336 * SORT / SORT_RO commands reject keys access patterns in GET and BY if ACL
  337   doesn't grant the command full keyspace access (#10340)
  338 * FUNCTION LOAD command introduced in 7.0-RC1 was stripped of the ENGINE, and
  339   NAME arguments which are now part of the script itself. The DESCRIPTION
  340   argument was completely removed (#10500)
  341 * Set disable-thp config to be immutable (#10409)
  342 
  343 
  344 Performance and resource utilization improvements
  345 =================================================
  346 
  347 * Optimize performance and memory usage on replicas (#10413)
  348 * A faster and more robust code of zslRandomLevel using RAND_MAX (#5539)
  349 
  350 
  351 Changes in CLI tools
  352 ====================
  353 
  354 * redis-cli: Use exit code 1 on error (#10468)
  355 * redis-cli: Do DNS lookup before sending CLUSTER MEET (#10436)
  356 * redis-benchmark: Fix --cluster with IPv6. (#10393)
  357 * redis-cli: Better --json Unicode support and --quoted-json (#10286)
  358 
  359 
  360 INFO fields and introspection changes
  361 =====================================
  362 
  363 * MEMORY STATS: Show cluster.links memory usage (#10302)
  364 
  365 
  366 Module API changes
  367 ==================
  368 
  369 * APIs for exposing module configs to config file and CONFIG command (#10285)
  370 * Add an event notifying about configuration changes (#10311)
  371 * Add API for redacting command arguments from SLOWLOG and MONITOR (#10425)
  372 * RM_Call: new flags for script mode compatibility, no writes, and error replies (#10372)
  373 
  374 
  375 Bug Fixes
  376 =========
  377 
  378 * Sentinel: Fix no reconnect after auth-pass is changed (#10400)
  379 * Cluster: Fix race condition: Turn into replica on SETSLOT (#10489, #10381)
  380 * XREADGROUP: Unblock client when the stream key is deleted (#10306)
  381 
  382 
  383 Fixes for issue in previous release candidates of Redis 7.0
  384 -----------------------------------------------------------
  385 
  386 * ACL DRYRUN does not validate the verified command args. (#10405)
  387 * ACL DRYRUN returns the tested common permission error (#10359)
  388 * Incorrect parsing of hostname information from nodes.conf (#10435)
  389 * BITSET and BITFIELD SET should propagate even if just length changed (#10459)
  390 * SHUTDOWN, Fix a possible crash when the shutdown was aborted (#10440)
  391 * Script should not allow may-replicate commands when client pause write (#10364)
  392 * Optimization tracking memory usage from i/o threads. (#10401)
  393 * Initialize help when using redis-cli help or redis-cli ? (#10382)
  394 * Dismiss COW of client output buffer now that it's dynamic (#10371)
  395 * Fix memory corruption when EVAL fails before being processed (#10519)
  396 
  397 
  398 ================================================================================
  399 Redis 7.0 RC2   Released Mon Feb 28 12:00:00 IST 2022
  400 ================================================================================
  401 
  402 Upgrade urgency LOW: This is another Release Candidate of Redis 7.0.
  403 
  404 New Features
  405 ============
  406 
  407 * Add stream consumer group lag tracking and reporting (#9127)
  408 * Add API for functions and eval Lua scripts to check ACL explicitly (#10220)
  409 
  410 New user commands or command arguments
  411 --------------------------------------
  412 
  413 * COMMAND GETKEYSANDFLAGS sub-command (#10237)
  414 * INFO command can take multiple section arguments (#6891)
  415 * XGROUP CREATE and SETID: new ENTRIESREAD optional argument (#9127)
  416 * XSETID new ENTRIESADDED and MAXDELETEDID optional arguments (#9127)
  417 
  418 Command replies that have been extended
  419 ---------------------------------------
  420 
  421 * XINFO reports consumer group lag and a few other fields (#9127)
  422 * XAUTOCLAIM returns a new element with a list of deletes IDs (#10227)
  423 
  424 Potentially Breaking Changes
  425 ============================
  426 
  427 * X[AUTO]CLAIM skips deleted entries instead of replying with Nil, and deletes
  428   them from the pending entry list (#10227)
  429 * Fix messed up error codes returned from EVAL scripts (#10218, #10329)
  430 * COMMAND INFO, Renames key-spec "CHANNEL" flag to be "NOT_KEY" (#10299)
  431 
  432 Performance and resource utilization improvements
  433 =================================================
  434 
  435 * Reduce system calls and small packets for client replies (#9934)
  436 * Reduce memory usage of stale clients (#9822)
  437 * Fix regression in Z[REV]RANGE commands (by-rank) introduced in Redis 6.2 (#10337)
  438 
  439 Changes in CLI tools
  440 ===================
  441 
  442 * Adapt redis-check-aof tool for Multi Part AOF (#10061)
  443 * Enable redis-benchmark to use RESP3 protocol mode (#10335)
  444 
  445 Platform / toolchain support related improvements
  446 =================================================
  447 
  448 * Fix OpenSSL 3.0.x related issues (#10291)
  449 
  450 INFO fields and introspection changes
  451 =====================================
  452 
  453 * COMMAND INFO key-specs has new variable_flags flag (#10237, #10148)
  454 * INFO stats: add aof_rewrites and rdb_snapshots counters (#10178)
  455 * INFO stats: add reply_buffer_shrinks and reply_buffer_expends (#9822)
  456 * INFO modules: add no-implicit-signal-modified module option (#10284)
  457 
  458 Module API changes
  459 ==================
  460 
  461 * Add RM_SetCommandInfo API to set command metadata for the new COMMAND
  462   introspection features and ACL key permissions (#10108)
  463 * Add RM_KeyAtPosWithFlags and RM_GetCommandKeysWithFlags APIs (#10237)
  464 * Add getchannels-api command flag and RM_IsChannelsPositionRequest,
  465   RM_ChannelAtPosWithFlags APIs (#10299)
  466 * Change RM_ACLCheckChannelPermissions and RM_ACLCheckKeyPermissions APIs
  467   (released in RC1) to take different flags (#10299)
  468 * Fix RM_SetModuleOptions flag collision. Bug in 7.0 RC1 header file, modules
  469   that used OPTIONS_HANDLE_REPL_ASYNC_LOAD will mess up key invalidations (#10284)
  470 
  471 Bug Fixes
  472 =========
  473 
  474 * Modules: Fix thread safety violation when a module thread adds an error reply,
  475   broken in 6.2 (#10278)
  476 * Lua: Fix Eval scripts active defrag, broken 7.0 in RC1 (#10271)
  477 * Fix geo search bounding box check causing missing results (#10018)
  478 * Lua: Add checks for min-slave-* configs when evaluating Lua scripts and
  479   Functions (#10160)
  480 * Modules: Prevent crashes and memory leaks when MODULE UNLOAD is used on module
  481   with a pending timer (#10187)
  482 * Fix error stats and failed command stats for blocked clients (#10309)
  483 * Lua/Modules: Fix missing and duplicate error stats for scripts and modules (#10329, #10278)
  484 * Check target node is a primary during cluster setslot (#10277)
  485 * Fix key deletion not to invalidate WATCH when used on a logically expired key (#10256)
  486 * Sentinel: return an error if configuration save fails (#10151)
  487 * Sentinel: fix a free-after-use issue re-registering Sentinels (#10333)
  488 
  489 ================================================================================
  490 Redis 7.0 RC1   Released Mon Jan 31 12:00:00 IST 2022
  491 ================================================================================
  492 
  493 Upgrade urgency LOW: This is the first Release Candidate of Redis 7.0.
  494 
  495 Redis Release Candidate (RC) versions are early versions that are made available
  496 for early adopters in the community to test them. We do not consider
  497 them suitable for production environments.
  498 
  499 Introduction to the Redis 7.0 release
  500 =====================================
  501 
  502 Redis 7.0 includes several new user-facing features, significant performance
  503 optimizations, and many other improvements. It also includes changes that
  504 potentially break backwards compatibility with older versions. We urge users to
  505 review the release notes carefully before upgrading.
  506 
  507 In particular, users should be aware of the following changes:
  508 
  509 1. Redis 7 stores AOF as multiple files in a folder; see Multi-Part AOF below.
  510 2. Redis 7 uses a new version 10 format for RDB files, which is incompatible
  511    with older versions.
  512 3. Redis 7 converts ziplist encoded keys to listpacks on the fly when loading
  513    an older RDB format. Conversion applies to loading a file from disk or
  514    replicating from a Redis master and will slightly increase loading time.
  515 4. See sections about breaking changes mentioned below.
  516 
  517 Here is a comprehensive list of changes in this release compared to 6.2.6.
  518 Each one includes the PR number that added it so that you can get more details
  519 at https://github.com/redis/redis/pull/<number>
  520 
  521 New Features
  522 ============
  523 
  524 * Redis Functions: A new way to extend Redis with server-side scripts (#8693)
  525   see https://redis.io/topics/functions-intro
  526 * ACL: Fine-grained key-based permissions and allow users to support multiple
  527   sets of command rules with selectors (#9974)
  528   see https://redis.io/topics/acl#key-permissions and https://redis.io/topics/acl#selectors.
  529 * Cluster: Sharded (node-specific) Pub/Sub support (#8621)
  530   see https://redis.io/topics/pubsub#sharded-pubsub
  531 * First-class handling of sub-commands in most contexts (affecting ACL
  532   categories, INFO commandstats, etc.) (#9504, #10147)
  533 * Command metadata and documentation (#10104)
  534   see https://redis.io/commands/command-docs, https://redis.io/topics/command-tips
  535 * Command key-specs. A better way for clients to locate key arguments and their
  536   read/write purpose (#8324, #10122, #10167)
  537   see https://redis.io/topics/key-specs
  538 * Multi-Part AOF mechanism to avoid AOF rewrite overheads (#9788)
  539 * Cluster: Support for hostnames, instead of IP addresses only (#9530)
  540 * Improved management of memory consumed by network buffers, and an option to
  541   drop clients when total memory exceeds a limit  (#8687)
  542 * Cluster: A mechanism for disconnecting cluster bus connections to prevent
  543   uncontrolled buffer growth (#9774)
  544 * AOF: Timestamp annotations and support for point-in-time recovery (#9326)
  545 * Lua: support Function flags in EVAL scripts (#10126)
  546   see https://redis.io/topics/eval-intro#eval-flags
  547 * Lua: Support RESP3 reply for Verbatim and Big-Number types (#9202)
  548 * Lua: Get Redis version via redis.REDIS_VERSION, redis.REDIS_VERSION_NUM (#10066)
  549 
  550 New user commands or command arguments
  551 --------------------------------------
  552 
  553 * ZMPOP, BZMPOP commands (#9484)
  554 * LMPOP, BLMPOP commands (#9373)
  555 * SINTERCARD, ZINTERCARD commands (#8946, #9425)
  556 * SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB (#8621)
  557 * EXPIRETIME and PEXPIRETIME commands (#8474)
  558 * EXPIRE command group supports NX/XX/GT/LT options (#2795)
  559 * SET command supports combining NX and GET flags (#8906)
  560 * BITPOS, BITCOUNT accepts BIT index (#9324)
  561 * EVAL_RO, EVALSHA_RO command variants, to run on read-only replicas (#8820)
  562 * SORT_RO command, to run on read-only replicas (#9299)
  563 * SHUTDOWN arguments: NOW, FORCE, ABORT (#9872)
  564 * FUNCTION *, FCALL, FCALL_RO - https://redis.io/commands/function-load
  565 * CONFIG SET/GET can handle multiple configs atomically, in one call (#9748, #9914)
  566 * QUIT promoted to be a proper command, HOST: and POST demoted (#9798)
  567 * XADD supports auto sequence number via <ms>-* (#9217)
  568 
  569 New administrative and introspection commands and command arguments
  570 -------------------------------------------------------------------
  571 
  572 * COMMAND DOCS (#9656, #10056, #10104)
  573 * COMMAND LIST (#9504)
  574 * COMMAND INFO accepts sub-commands as args, and no args too (#9504, #10056)
  575 * LATENCY HISTOGRAM (#9462)
  576 * CLUSTER LINKS (#9774)
  577 * CLUSTER DELSLOTSRANGE and CLUSTER ADDSLOTSRANGE (#9445)
  578 * CLIENT NO-EVICT (#8687)
  579 * ACL DRYRUN (#9974)
  580 * SLOWLOG GET supports passing in -1 to get all entries (#9018)
  581 
  582 Command replies that have been extended
  583 ---------------------------------------
  584 
  585 * COMMAND and COMMAND INFO extended with tips, key-specs and sub-commands
  586   see https://redis.io/commands/command
  587 * ACL CAT, COMMAND LIST list sub-commands (#10127)
  588 * MODULE LIST reply includes path and args (#4848)
  589 * OBJECT ENCODING returns listpack instead of ziplist (#8887, #9366)
  590 * CLUSTER SLOTS hostname support (#9530)
  591 * COMMAND command: Added the `blocking` and `module` flags (#10104, #9656)
  592 
  593 
  594 Potentially Breaking Changes
  595 ============================
  596 
  597 * Modifying the bind parameter to a non-default value will no longer implicitly
  598   disable protected-mode (#9034)
  599 * Remove EVAL script verbatim replication, propagation, and deterministic
  600   execution logic (#9812)
  601   This has been deprecated and off by default since Redis 6 and is no longer
  602   supported.
  603 * ACL: pub/sub channels are blocked by default (acl-pubsub-default=resetchannels) (#10181)
  604 * SCRIPT LOAD and SCRIPT FLUSH are no longer propagated to replicas / AOF (#9812)
  605 * ACL: Declarations of duplicate ACL users in startup files and command line
  606   arguments will result in an error, whereas previously the last declaration
  607   would overwrite the others. (#9330)
  608 * Replication: TTLs are always replicated as absolute (not relative) millisecond
  609   timestamps (#8474)
  610 * Fixes in handling multi-key commands with expired keys on writable replicas (#9572)
  611 * CONFIG SET maxmemory returns before starting eviction (#10019)
  612 * AOF: The new Multi-Part mechanism stores data as a set of multiple files in a
  613   designated folder (#9788)
  614 * Remove STRALGO command, preserve LCS a standalone command which only works on
  615   keys (#9799)
  616 * Remove gopher protocol support (#9057)
  617 * MODULE and DEBUG commands disabled (protected) by default, for better security (#9920)
  618 * Snapshot-creating and other admin commands in MULTI/EXEC transactions are now
  619   rejected (#10015)
  620 * PING is now rejected with -MASTERDOWN when replica-serve-stale-data=no (#9757)
  621 * ACL GETUSER reply now uses ACL syntax for `keys` and `channels` (#9974)
  622 * COMMAND reply drops `random` and `sort-for-scripts` flags, which are now part
  623   of command tips (#10104)
  624 * LPOP/RPOP with count against non-existing list return null array (#10095)
  625 * INFO commandstats now shows the stats per sub-command (#9504)
  626 * ZPOPMIN/ZPOPMAX used to produce wrong replies when count is 0 with non-zset (#9711)
  627 * LPOP/RPOP used to produce wrong replies when count is 0 (#9692)
  628 * CONFIG GET bind now returns the current value in effect, even if the implicit
  629   default is in use (#9034)
  630 * CONFIG REWRITE now rewrites the list of modules to load (#4848)
  631 * Config: repl-diskless-sync is now set to yes by default (#10092)
  632 * When shutting down, Redis can optionally wait for replicas to catch up on the
  633   replication link (#9872)
  634 * Most CONFIG SET, REWRITE, RESETSTAT commands are now allowed during loading (#9878)
  635 * READONLY and READWRITE commands are now allowed when loading and on stale
  636   replicas (#7425)
  637 * Fix ACL category for SELECT, WAIT, ROLE, LASTSAVE, READONLY, READWRITE, ASKING (#9208)
  638 * RESET is now allowed even when on unauthenticated connections (#9798)
  639 * SCRIPT LOAD is now allowed on stale replicas (#10126)
  640 
  641 
  642 Security improvements
  643 =====================
  644 
  645 * Sensitive configs and commands blocked (protected) by default (#9920)
  646 * Improve bind and protected-mode config handling (#9034)
  647 * Sentinel: avoid logging auth-pass value (#9652)
  648 * redis-cli: sensitive commands bypass the history file (#8895)
  649 
  650 
  651 Performance and resource utilization improvements
  652 =================================================
  653 
  654 * Significant memory saving and latency improvements in cluster mode (#9356)
  655 * Significant memory savings in case of many hash or zset keys (#9228)
  656 * Replication backlog and replicas use one global shared replication buffer (#9166)
  657 * Significant reduction of copy-on-write memory overheads (#8974)
  658 * Free unused capacity in the cluster send buffer (#9255)
  659 * Memory efficiency, make full use of client struct memory for reply buffers (#8968)
  660 * Replace ziplist with listpack in Hash, List, Zset (#8887, #9366, #9740)
  661 * Add support for list type to store elements larger than 4GB (#9357)
  662 * Reuse temporary client objects for blocked clients by module (#9940)
  663 * Remove command argument count limit, dynamically grow argv buffer (#9528)
  664 * Optimize list type operations to seek from the nearest end (#9454)
  665 * Improvements in fsync to avoid large writes to disk (#9409)
  666 * BITSET and BITFIELD SET only propagated when the value actually changed (#9403)
  667 * Improve latency when a client is unblocked by module timer (#9593)
  668 
  669 
  670 Other General Improvements
  671 ==========================
  672 
  673 * Make partial sync possible after master reboot (#8015)
  674 * Always create a base AOF file when redis starts from empty (#10102)
  675 * Replica keep serving data during repl-diskless-load=swapdb for better
  676   availability (#9323)
  677 
  678 
  679 Changes in CLI tools
  680 ====================
  681 * redis-cli --json, and -2 options (#9954)
  682 * redis-cli --scan, add sleep interval option (#3751)
  683 * redis-cli --replica optimization, skip RDB generation (#10044)
  684 * redis-cli --functions-rdb, generate RDB with Functions only (#9968)
  685 * redis-cli -X, take an arbitrary arg from stdin, extend --cluster call take -x (#9980)
  686 * redis-benchmark -x takes an argument from stdin (#9130)
  687 * redis-benchmark, Added URI support (#9314)
  688 * redis-cli monitor and pubsub can be aborted with Ctrl+C, keeping the cli alive (#9347)
  689 
  690 
  691 Platform / toolchain support related improvements
  692 =================================================
  693 
  694 * Upgrade jemalloc 5.2.1 (#9623)
  695 * Fix RSS metrics on NetBSD and OpenBSD (#10116, #10149)
  696 * Check somaxconn system settings on macOS, FreeBSD and OpenBSD (#9972)
  697 * Better fsync on MacOS, improve power failure safety (#9545)
  698 
  699 
  700 New configuration options
  701 =========================
  702 
  703 * CONFIG SET/GET can handle multiple configs in one call (#9748, #9914)
  704 * Support glob pattern matching for config include files (#8980)
  705 * appenddirname, folder where multi-part AOF files are stored (#9788)
  706 * shutdown-timeout, default 10 seconds (#9872)
  707 * maxmemory-clients, allows limiting the total memory usage by all clients (#8687)
  708 * cluster-port, can control the bind port of cluster bus (#9389)
  709 * bind-source-addr, configuration argument control IP of outgoing connections (#9142)
  710 * busy-reply-threshold, alias for the old lua-time-limit (#9963)
  711 * repl-diskless-sync-max-replicas, allows faster replication in some cases (#10092)
  712 * latency-tracking, enabled by default, and latency-tracking-info-percentiles (#9462)
  713 * cluster-announce-hostnameand cluster-preferred-endpoint-type (#9530)
  714 * cluster-allow-pubsubshard-when-down (#8621)
  715 * cluster-link-sendbuf-limit (#9774)
  716 * list-max-listpack-*, hash-max-listpack-*, zset-max-listpack-* as aliases for
  717   the old ziplist configs (#8887, #9366, #9740)
  718 
  719 
  720 INFO fields and introspection changes
  721 =====================================
  722 
  723 * INFO: latencystats section (#9462)
  724 * INFO: total_active_defrag_time and current_active_defrag_time (#9377)
  725 * INFO: total_eviction_exceeded_time and current_eviction_exceeded_time (#9031)
  726 * INFO: evicted_clients (#8687)
  727 * INFO: mem_cluster_links, total_cluster_links_buffer_limit_exceeded (#9774)
  728 * INFO: current_cow_peak (#8974)
  729 * INFO: Remove aof_rewrite_buffer_length (#9788)
  730 * MEMORY STATS: Report slot to keys map size in in cluster mode (#10017)
  731 * INFO MEMORY: changes to separate memory usage of Functions and EVAL (#9780)
  732 * INFO MEMORY: Add mem_total_replication_buffers, change meaning of
  733   mem_clients_slaves (#9166)
  734 * CLIENT LIST: tot-mem, multi-mem (#8687)
  735 * CLIENT LIST, INFO: Show RESP version (#9508)
  736 * SENTINEL INFO: tilt_mode_since (#9000)
  737 * LATENCY: Track module-acquire-GIL latency (#9608)
  738 
  739 
  740 Module API changes
  741 ==================
  742 
  743 * Add API for replying with RESP3 types (#8521, #9639, #9632)
  744 * Add API for parsing RESP3 replies from RM_Call (#9202)
  745 * Add RM_Call '0' and '3' flags to control RESP version to be used (#9202)
  746 * Add Support for validating ACL explicitly (#9309, #9974)
  747 * Add missing list type functionality APIs (#8439)
  748 * Add API for yielding to Redis events during long busy jobs (#9963)
  749 * Add API for registering other file descriptors to the Redis event loop (#10001)
  750 * Enhance mem_usage/free_effort/unlink/copy and IO callbacks to have key name
  751   and DB index (#8999)
  752 * Enhance mem_usage callback to get the requested sample size (#9612)
  753 * RM_GetContextFlags: CTX_FLAGS_ASYNC_LOADING, CTX_FLAGS_RESP3 (#9323, #9202)
  754 * Mark APIs as non-experimental (#9983)
  755 * RM_CreateSubcommand (#9504)
  756 * RM_KeyExists (#9600)
  757 * RM_TrimStringAllocation (#9540)
  758 * RM_LoadDataTypeFromStringEncver (#9537)
  759 * RM_MonotonicMicroseconds (#10101)
  760 * Add ReplAsyncLoad event and deprecate the ReplBackup event (#9323)
  761 * Add RM_SetModuleOptions OPTIONS_HANDLE_REPL_ASYNC_LOAD flag (#9323)
  762 
  763 
  764 Bug Fixes
  765 =========
  766 
  767 * Fix COMMAND GETKEYS on EVAL without keys (#9733)
  768 * Improve MEMORY USAGE with allocator overheads (#9095)
  769 * Unpause clients after manual failover ends instead of waiting for timed (#9676)
  770 * Lua: fix crash on a script call with many arguments, a regression in v6.2.6 (#9809)
  771 * Lua: Use all characters to calculate string hash to prevent hash collisions (#9449)
  772 * Prevent LCS from allocating temp memory over proto-max-bulk-len (#9817)
  773 * Tracking: Make invalidation messages always after command's reply (#9422)
  774 * Cluster: Hide empty replicas from CLUSTER SLOTS responses (#9287)
  775 * CLIENT KILL killed all clients when used with ID of 0 (#9853)
  776 * Fix bugs around lists with list-compress-depth (#9849, #9779)
  777 * Fix one in a blue moon LRU bug in RESTORE, RDB loading, and module API (#9279)
  778 * Reset lazyfreed_objects info field with RESETSTAT, test for stream lazyfree (#8934)
  779 * Fix RDB and list node compression for handling values larger than 4GB (#9776)
  780 * Fix a crash when adding elements larger than 2GB to a Set or Hash (#9916)
  781 * Diskless replication could not count as a change and skip next database SAVE (#9323)
  782 * Fix excessive stream trimming due to an overflow (#10068)
  783 * Safe and organized exit when receiving SIGTERM while loading (#10003)
  784 * Improve EXPIRE TTL overflow detection (#9839)
  785 * Add missed error counting for INFO errorstats (#9646)
  786 * DECRBY LLONG_MIN caused negation overflow (#9577)
  787 * Delay discarding cached master when full synchronization (#9398)
  788 * Fix Stream keyspace notification and persistence triggers in consumer
  789   creation and deletion (#9263)
  790 * Fix rank overflow in zset with more than 2B entries (#9249)
  791 * Avoid starting in check-aof / check-rdb / sentinel modes if only the folder
  792   name contains that name (#9215, #9176)
  793 * create the log file only after done parsing the entire config file (#6741)
  794 * redis-cli: Fix SCAN sleep interval for --bigkeys, --memkeys, --hotkeys (#9624)
  795 * redis-cli: Fix prompt to show the right DB num and transaction state after
  796   RESET (#9096)
  797 * Module API: fix possible propagation bugs in case a module calls CONFIG SET
  798   maxmemory outside a command (#10019, #9890)
  799 * Module API: carry through client RESP version to module blocked clients (#9634)
  800 * Module API: release clients blocked on module commands in cluster resharding
  801   and down state (#9483)
  802 * Sentinel: Fix availability after master reboot (#9438)
  803 * Sentinel: Fix memory leak with TLS (#9753)
  804 * Sentinel: Fix possible failover due to duplicate zero-port (#9240)
  805 * Sentinel: Fix issues with hostname support (#10146)
  806 * Sentinel: Fix election failures on certain container environments (#10197)
  807 
  808 
  809 Thanks to all the users and developers who made this release possible.
  810 We'll follow up with more RC releases, until the code looks production ready
  811 and we don't get reports of serious issues for a while.
  812 
  813 A special thank you for the amount of work put into this release by:
  814 
  815 - Guy Benoish
  816 - Meir Shpilraien
  817 - Oran Agra
  818 - Chen Yang
  819 - Zhu Binbin
  820 - Yoav Steinberg
  821 - sundb
  822 - Madelyn Olson
  823 - Yossi Gottlieb
  824 - Viktor Söderqvist
  825 - Wang Yuan
  826 - Harkrishn Patro
  827 - Nick Chun
  828 - Ozan Tezcan
  829 - Wen Hui
  830 - Huang Zhw
  831 - Nan Yan
  832 - Filipe Oliveira
  833 - Eduardo Semprebon
  834 - Yaacov Hazan
  835 - Itamar Haber
  836 - Zhao Zhao
  837 - Itay Perry
  838 - Moti Cohen
  839 - Ning Sun
  840 - zhugezy
  841 - Ran Shidlansik
  842 - menwen
  843 - Andy Pan
  844