|
1 |
| -Hello! This file is just a placeholder, since this is the "unstable" branch |
2 |
| -of Valkey, the place where all the development happens. |
| 1 | +Valkey 9.0 release notes |
| 2 | +======================== |
3 | 3 |
|
4 |
| -There is no release notes for this branch, it gets forked into another branch |
5 |
| -every time there is a partial feature freeze in order to eventually create |
6 |
| -a new stable release. |
| 4 | +Upgrade urgency levels: |
7 | 5 |
|
8 |
| -Usually "unstable" is stable enough for you to use it in development environments |
9 |
| -however you should never use it in production environments. It is possible |
10 |
| -to download the latest stable release here: |
| 6 | +| Level | Meaning | |
| 7 | +|----------|---------------------------------------------------------------------| |
| 8 | +| LOW | No need to upgrade unless there are new features you want to use. | |
| 9 | +| MODERATE | Program an upgrade of the server, but it's not urgent. | |
| 10 | +| HIGH | There is a critical bug that may affect a subset of users. Upgrade! | |
| 11 | +| CRITICAL | There is a critical bug affecting MOST USERS. Upgrade ASAP. | |
| 12 | +| SECURITY | There are security fixes in the release. | |
11 | 13 |
|
12 |
| - https://valkey.io/download/ |
| 14 | +Valkey 9.0.0-rc1 - August 14, 2025 |
| 15 | +---------------------------------- |
13 | 16 |
|
14 |
| -More information is available at https://valkey.io |
| 17 | +Upgrade urgency LOW: This is the first release candidate of Valkey 9.0.0, with |
| 18 | +performance improvements, atomic slot migrations, hash field expiration, and numbered databases in cluster mode, |
| 19 | +as well as a whole host of new items as listed below. |
15 | 20 |
|
16 |
| -Happy hacking! |
| 21 | +### New Features |
| 22 | +* Client Commands Extended Filtering by @sarthakaggarwal97 (#1466) |
| 23 | +* Add multi-database support to cluster mode by @xbasel (#1671) |
| 24 | +* Support BYPOLYGON option for GEOSEARCH by @KarthikSubbarao (#1809) |
| 25 | +* Introduce MPTCP by @pizhenwei (#1811) |
| 26 | +* Add sentinel_total_tilt to sentinel INFO sentinel by @carlosfu (#1904) |
| 27 | +* Add support for automatic client authentication via TLS certificate fields by @omanges (#1920) |
| 28 | +* Add --hotkeys-count option for valkey-cli by @hwware (#1933) |
| 29 | +* Introduce atomic slot migration by @murphyjacob4 (#1949) |
| 30 | +* Introduce MPTCP for replica by @pizhenwei (#1961) |
| 31 | +* Add DELIFEQ command by @LinusU (#1975) |
| 32 | +* Allow dynamic modification of io-threads num by @ayush933 (#2033) |
| 33 | +* Introduce HASH items expiration by @ranshid (#2089) |
| 34 | +* Add SAFE option to SHUTDOWN to reject shutdown in unsafe situations by @enjoy-binbin (#2195) |
| 35 | +* Support negative filtering for client command filters by @soloestoy (#2378) |
| 36 | + |
| 37 | +### New Configs |
| 38 | +* Auto-failover on shutdown unified config by @zuiderkwast (#2292) |
| 39 | + |
| 40 | +### Logging and Tooling Improvements |
| 41 | +* Add node pfail and fail count to cluster info metrics by @hpatro (#1910) |
| 42 | +* Introduce support for lttng based tracing by @artikell (#2070) |
| 43 | + |
| 44 | +### Performance/Efficiency Improvements |
| 45 | +* Optimize bitcount command by SIMD by @chzhoo (#1741) |
| 46 | +* Save RDB file to disk using a background thread on replica(s) (#1784) |
| 47 | +* Improve replication stability by prioritizing replication traffic in the replica by @xbasel (#1838) |
| 48 | +* Optimize hyperloglog commands with ARM NEON SIMD instructions by @xbasel (#1859) |
| 49 | +* Optimize BITCOUNT using ARM NEON SIMD by @xbasel (#1867) |
| 50 | +* Optimize string-to-integer performance using AVX512 by @zhulipeng (#1944) |
| 51 | +* Improve system responsiveness by limiting number of new cluster link connections per cycle by @hpatro (#2009) |
| 52 | +* Optimize hash table performance using SIMD by @zhulipeng (#2030) |
| 53 | +* Improve performance of network operations by directly writing responses to clients by @xbasel (#2078) |
| 54 | +* Allow shrinking hashtables in low memory situations by @Fusl (#2095) |
| 55 | +* Optimize string2ll with load-time CPU feature check using IFUNC resolver by @zhulipeng (#2099) |
| 56 | +* Optimize WATCH by equalStringObjects early length check by @vitahlin (#2107) |
| 57 | +* Optimize GEORADIUS command performance with pre-allocated buffer by @chzhoo (#2116) |
| 58 | +* Improve zcount performance by combing range element ranks calculation with range elements search to @SoftlyRaining (#2129) |
| 59 | +* Optimize scan/sscan/hscan/zscan commands by replacing list with vector by @chzhoo (#2160) |
| 60 | + |
| 61 | +### Cluster |
| 62 | +* Trigger manual failover on SIGTERM / shutdown to cluster primary by @enjoy-binbin (#1091) |
| 63 | +* Add CLUSTER FLUSHSLOT command by @wuranxx (#1384) |
| 64 | +* Allow replicas to become primaries without data by using CLUSTER REPLICATE NO ONE by @skolosov-snap (#1674) |
| 65 | +* Add cluster bus port out of range error message for CLUSTER MEET command by @hwware (#1686) |
| 66 | +* Add cluster-manual-failover-timeout to configure the timeout for manual failover by @enjoy-binbin (#1690) |
| 67 | + |
| 68 | +### Module |
| 69 | +* Add new module API flag to bypass command validation by @sungming2 (#1357) |
| 70 | + |
| 71 | +### Bug Fixes |
| 72 | +* Avoid shard id update of replica if it doesn't match with primary shard id by @hpatro (#573) |
| 73 | +* Change "Redis ver." to "Valkey ver." in LOLWUT output by @sarthakaggarwal97 (#1559) |
| 74 | +* Fix temp file leak during replication error handling by @enjoy-binbin (#1721) |
| 75 | +* Fix raxRemove crash at memcpy() due to key size exceeds max Rax size by @VoletiRam (#1722) |
| 76 | +* Respect process umask when creating data files by @kronwerk (#1725) |
| 77 | +* Fix error "SSL routines::bad length" when connTLSWrite is called second time with smaller buffer by @zori-janea (#1737) |
| 78 | +* cmd's out bytes need count deferred reply by @soloestoy (#1760) |
| 79 | +* Enable TCP_NODELAY by default in incoming and outgoing connections by @sungming2 (#1763) |
| 80 | +* Ignore stale gossip packets that arrive out of order by @enjoy-binbin (#1777) |
| 81 | +* Remove unicode optimization in Lua cjson library by @rjd15372 (#1785) |
| 82 | +* Save config file and broadcast PONG message on configEpoch change by @enjoy-binbin (#1813) |
| 83 | +* Fix engine crash on module client blocking during keyspace events by @yairgott (#1819) |
| 84 | +* Fix bug where invalidation messages were getting sent to closing clients by @madolson (#1823) |
| 85 | +* Fix ACL LOAD crash on replica since the primary client don't has a user by @bogdanp05 (#1842) |
| 86 | +* Fix RANDOMKEY infinite loop during CLIENT PAUSE by @li-benson (#1850) |
| 87 | +* Improve clarity of errors for GEO commands when member does not exist by @chx9 (#1943) |
| 88 | +* Fix panic in primary when blocking shutdown after previous block with timeout by @murphyjacob4 (#1948) |
| 89 | +* fix cluster slot stats assertion during promotion of replica by @Fusl (#1950) |
| 90 | +* Fix incorrect lag reported in XINFO GROUPS by @nesty92 (#1952) |
| 91 | +* Fix crash during TLS handshake with I/O threads by @uriyage (#1955) |
| 92 | +* Disallow sending REPLY ON / OFF / SKIP inside a multi-exec transaction by @sarthakaggarwal97 (#1966) |
| 93 | +* Fix random element in skewed sparse hash table by @zuiderkwast (#2085) |
| 94 | +* Allow mixing quoted and unquoted inline args by @Fusl (#2098) |
| 95 | +* Only mark the client reprocessing flag when unblocked on keys by @ranshid (#2109) |
| 96 | +* CLIENT UNBLOCK should't be able to unpause paused clients by @enjoy-binbin (#2117) |
| 97 | +* Fix memory corruption in sharded pubsub unsubscribe by @uriyage (#2137) |
| 98 | +* Detect SSL_new() returning NULL in outgoing connections by @zuiderkwast (#2140) |
| 99 | +* Correctly handle large cluster bus extensions which may have resulted in dropped cluster packets by @madolson (#2144) |
| 100 | +* Converge divergent shard-id persisted in nodes.conf to primary's shard ID by @hpatro (#2174) |
| 101 | +* Fix replica can't finish failover when config epoch is outdated by @enjoy-binbin (#2178) |
| 102 | +* Fix CLUSTER SLOTS/NODES showing wrong port after updating port/tls-port by @enjoy-binbin (#2186) |
| 103 | +* Fix use-after-free when active expiration triggers hashtable to shrink by @gusakovy (#2257) |
| 104 | +* Redact user data when a module crashes for not handling I/O errors enabled by @YueTang-Vanessa (#2274) |
| 105 | +* Generate a new shard_id when the replica executes CLUSTER RESET SOFT by @enjoy-binbin (#2283) |
| 106 | +* Fix missing response when AUTH returns an error inside a transaction by @enjoy-binbin (#2287) |
| 107 | +* Fix memory leak when shrinking a hashtable without entries by @yzc-yzc (#2288) |
| 108 | +* Fix MEMORY USAGE to consider embedded keys by @yulazariy (#2290) |
| 109 | +* Fix replicas claiming to still have slots after manual failover by @enjoy-binbin (#2301) |
| 110 | +* Prevent bad memory access when NOTOUCH client gets unblocked by @uriyage (#2347) |
| 111 | +* Fix large allocations crashing Valkey during active defrag by @Fusl (#2353) |
| 112 | + |
| 113 | +### Build and Tooling |
| 114 | +* Support for RDB analysis reports by @artikell (#1743) |
| 115 | +* Implement RPS control for valkey-benchmark by @artikell (#1761) |
| 116 | +* valkey-cli: ensure output ends with a newline if missing when printing reply by @xbasel (#1782) |
| 117 | +* Drop lua object files on clean by @secwall (#1812) |
| 118 | +* Check both arm64 and aarch64 for ARM based system architecture by @eifrah-aws (#1829) |
| 119 | +* Add --sequential option to valkey-benchmark to support populating entire keyspace by @SoftlyRaining (#1839) |
| 120 | +* Support environment variable VALKEYCLI_AUTH alongside REDISCLI_AUTH in valkey-cli by @HiranmoyChowdhury (#1995) |
| 121 | +* Add MGET test to valkey-benchmark by @zuiderkwast (#2015) |
| 122 | +* Add support to send multiple arbitrary commands to valkey-benchmark by @zuiderkwast (#2057) |
| 123 | +* Support RDMA for valkey-cli and benchmark by @pizhenwei (#2059) |
| 124 | +* Support MPTCP for valkey-cli and benchmark by @pizhenwei (#2067) |
| 125 | +* Allow valkey-benchmark to support multiple random (or sequential) placeholders by @SoftlyRaining (#2102) |
| 126 | +* Change default values of valkey-cli to use valkey naming, and added fallback to old values by @avifenesh (#2334) |
| 127 | +* Fix duplicate Acks for RDMA events and fix extremely large max latency for RDMA benchmark (#2430) |
| 128 | + |
| 129 | +### Behavior Change |
| 130 | +* Move auth check to the front, before command exist/arity/protected check by @enjoy-binbin (#1475) |
| 131 | +* Include command fullname in error message when returning errors in multi-execs by @enjoy-binbin (#2286) |
| 132 | +* Add STALE command flag to SCRIPT-EXISTS, SCRIPT-SHOW and SCRIPT-FLUSH by @enjoy-binbin (#2419) |
| 133 | + |
| 134 | +### Contributors |
| 135 | +* Ran Shidlansik @ranshid |
| 136 | +* Binbin @enjoy-binbin |
| 137 | +* Jacob Murphy @murphyjacob4 |
| 138 | +* Madelyn Olson @madolson |
| 139 | +* YueTang-Vanessa @YueTang-Vanessa |
| 140 | +* cxljs @cxljs |
| 141 | +* Sarthak Aggarwal @sarthakaggarwal97 |
| 142 | +* amanosme @amanosme |
| 143 | +* Hanxi Zhang @hanxizh9910 |
| 144 | +* Seungmin Lee @sungming2 |
| 145 | +* uriyage @uriyage |
| 146 | +* Katie Holly @Fusl |
| 147 | +* Nicky-2000 @Nicky-2000 |
| 148 | +* Allen Samuels @allenss-amazon |
| 149 | +* yzc-yzc @yzc-yzc |
| 150 | +* zhaozhao.zz @soloestoy |
| 151 | +* asagegeLiu @asagege |
| 152 | +* nitaicaro @nitaicaro |
| 153 | +* Matthew @utdrmac |
| 154 | +* Omkar Mestry @omanges |
| 155 | +* Viktor Söderqvist @zuiderkwast |
| 156 | +* kukey @kukey |
| 157 | +* Harkrishn Patro @hpatro |
| 158 | +* Avi Fenesh @avifenesh |
| 159 | +* Amit Nagler @naglera |
| 160 | +* Josh Soref @jsoref |
| 161 | +* youngmore1024 @youngmore1024 |
| 162 | +* Rain Valentine @SoftlyRaining |
| 163 | +* skyfirelee @artikell |
| 164 | +* Wen Hui @hwware |
| 165 | +* yulazariy @yulazariy |
| 166 | +* Yakov Gusakov @gusakovy |
| 167 | +* charsyam @charsyam |
| 168 | +* Simon Baatz @gmbnomis |
| 169 | +* Thalia Archibald @thaliaarchi |
| 170 | +* chzhoo @chzhoo |
| 171 | +* xbasel @xbasel |
| 172 | +* Stav Ben-Tov @stav-bentov |
| 173 | +* wuranxx @wuranxx |
| 174 | +* Ayush Sharma @ayush933 |
| 175 | +* chx9 @chx9 |
| 176 | +* KarthikSubbarao @KarthikSubbarao |
| 177 | +* Hüseyin Açacak @huseyinacacak-janea |
| 178 | +* アンドリー・アンドリ @odaysec |
| 179 | +* Ping Xie @PingXie |
| 180 | +* Lipeng Zhu @zhulipeng |
| 181 | +* Linus Unnebäck @LinusU |
| 182 | +* Vitah Lin @vitahlin |
| 183 | +* kronwerk @kronwerk |
| 184 | +* Vadym Khoptynets @poiuj |
| 185 | +* muelstefamzn @muelstefamzn |
| 186 | +* zhenwei pi @pizhenwei |
| 187 | +* George Padron @DoozkuV |
| 188 | +* Björn Svensson @bjosv |
| 189 | +* aradz44 @aradz44 |
| 190 | +* Hiranmoy Das Chowdhury @HiranmoyChowdhury |
| 191 | +* Yair Gottdenker @yairgott |
| 192 | +* Roshan Khatri @roshkhatri |
| 193 | +* nesty92 @nesty92 |
| 194 | +* carlosfu @carlosfu |
| 195 | +* Arthur Lee @arthurkiller |
| 196 | +* Shai Zarka @zarkash-aws |
| 197 | +* Sergey Kolosov @skolosov-snap |
| 198 | +* Nathan Scott @natoscott |
| 199 | +* lucasyonge @lucasyonge |
| 200 | +* WelongZuo @WelongZuo |
| 201 | +* Jim Brunner @JimB123 |
| 202 | +* jeon1226 @jeon1226 |
| 203 | +* Benson-li @li-benson |
| 204 | +* Meinhard Zhou @MeinhardZhou |
| 205 | +* Nikhil Manglore @Nikhil-Manglore |
| 206 | +* Bogdan Petre @bogdanp05 |
| 207 | +* eifrah-aws @eifrah-aws |
| 208 | +* Ricardo Dias @rjd15372 |
| 209 | +* secwall @secwall |
| 210 | +* Anastasia Alexandrova @nastena1606 |
| 211 | +* Marek Zoremba @zori-janea |
| 212 | +* VoletiRam @VoletiRam |
0 commit comments