Valkey 9.0.0-rc1 release notes and `version.h` bump (#2476)

As per step 2 of the release checklist #2408 for 9.0.0-rc1

---------

Signed-off-by: Kyle J. Davis <kyledvs@amazon.com>
Co-authored-by: Madelyn Olson <madelyneolson@gmail.com>
Co-authored-by: Viktor Söderqvist <viktor.soderqvist@est.tech>
Co-authored-by: Harkrishn Patro <bunty.hari@gmail.com>
Co-authored-by: Ping Xie <pingxie@outlook.com>
Co-authored-by: Wen Hui <wen.hui.ware@gmail.com>
This commit is contained in:
Kyle J. Davis 2025-08-14 13:41:17 -06:00 committed by GitHub
parent 6c2e4f9553
commit 70a7ce0eb1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 210 additions and 14 deletions

View File

@ -1,16 +1,212 @@
Hello! This file is just a placeholder, since this is the "unstable" branch
of Valkey, the place where all the development happens.
Valkey 9.0 release notes
========================
There is no release notes for this branch, it gets forked into another branch
every time there is a partial feature freeze in order to eventually create
a new stable release.
Upgrade urgency levels:
Usually "unstable" is stable enough for you to use it in development environments
however you should never use it in production environments. It is possible
to download the latest stable release here:
| Level | Meaning |
|----------|---------------------------------------------------------------------|
| 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. |
https://valkey.io/download/
Valkey 9.0.0-rc1 - August 14, 2025
----------------------------------
More information is available at https://valkey.io
Upgrade urgency LOW: This is the first release candidate of Valkey 9.0.0, with
performance improvements, atomic slot migrations, hash field expiration, and numbered databases in cluster mode,
as well as a whole host of new items as listed below.
Happy hacking!
### New Features
* Client Commands Extended Filtering by @sarthakaggarwal97 (#1466)
* Add multi-database support to cluster mode by @xbasel (#1671)
* Support BYPOLYGON option for GEOSEARCH by @KarthikSubbarao (#1809)
* Introduce MPTCP by @pizhenwei (#1811)
* Add sentinel_total_tilt to sentinel INFO sentinel by @carlosfu (#1904)
* Add support for automatic client authentication via TLS certificate fields by @omanges (#1920)
* Add --hotkeys-count option for valkey-cli by @hwware (#1933)
* Introduce atomic slot migration by @murphyjacob4 (#1949)
* Introduce MPTCP for replica by @pizhenwei (#1961)
* Add DELIFEQ command by @LinusU (#1975)
* Allow dynamic modification of io-threads num by @ayush933 (#2033)
* Introduce HASH items expiration by @ranshid (#2089)
* Add SAFE option to SHUTDOWN to reject shutdown in unsafe situations by @enjoy-binbin (#2195)
* Support negative filtering for client command filters by @soloestoy (#2378)
### New Configs
* Auto-failover on shutdown unified config by @zuiderkwast (#2292)
### Logging and Tooling Improvements
* Add node pfail and fail count to cluster info metrics by @hpatro (#1910)
* Introduce support for lttng based tracing by @artikell (#2070)
### Performance/Efficiency Improvements
* Optimize bitcount command by SIMD by @chzhoo (#1741)
* Save RDB file to disk using a background thread on replica(s) (#1784)
* Improve replication stability by prioritizing replication traffic in the replica by @xbasel (#1838)
* Optimize hyperloglog commands with ARM NEON SIMD instructions by @xbasel (#1859)
* Optimize BITCOUNT using ARM NEON SIMD by @xbasel (#1867)
* Optimize string-to-integer performance using AVX512 by @zhulipeng (#1944)
* Improve system responsiveness by limiting number of new cluster link connections per cycle by @hpatro (#2009)
* Optimize hash table performance using SIMD by @zhulipeng (#2030)
* Improve performance of network operations by directly writing responses to clients by @xbasel (#2078)
* Allow shrinking hashtables in low memory situations by @Fusl (#2095)
* Optimize string2ll with load-time CPU feature check using IFUNC resolver by @zhulipeng (#2099)
* Optimize WATCH by equalStringObjects early length check by @vitahlin (#2107)
* Optimize GEORADIUS command performance with pre-allocated buffer by @chzhoo (#2116)
* Improve zcount performance by combing range element ranks calculation with range elements search to @SoftlyRaining (#2129)
* Optimize scan/sscan/hscan/zscan commands by replacing list with vector by @chzhoo (#2160)
### Cluster
* Trigger manual failover on SIGTERM / shutdown to cluster primary by @enjoy-binbin (#1091)
* Add CLUSTER FLUSHSLOT command by @wuranxx (#1384)
* Allow replicas to become primaries without data by using CLUSTER REPLICATE NO ONE by @skolosov-snap (#1674)
* Add cluster bus port out of range error message for CLUSTER MEET command by @hwware (#1686)
* Add cluster-manual-failover-timeout to configure the timeout for manual failover by @enjoy-binbin (#1690)
### Module
* Add new module API flag to bypass command validation by @sungming2 (#1357)
### Bug Fixes
* Avoid shard id update of replica if it doesn't match with primary shard id by @hpatro (#573)
* Change "Redis ver." to "Valkey ver." in LOLWUT output by @sarthakaggarwal97 (#1559)
* Fix temp file leak during replication error handling by @enjoy-binbin (#1721)
* Fix raxRemove crash at memcpy() due to key size exceeds max Rax size by @VoletiRam (#1722)
* Respect process umask when creating data files by @kronwerk (#1725)
* Fix error "SSL routines::bad length" when connTLSWrite is called second time with smaller buffer by @zori-janea (#1737)
* cmd's out bytes need count deferred reply by @soloestoy (#1760)
* Enable TCP_NODELAY by default in incoming and outgoing connections by @sungming2 (#1763)
* Ignore stale gossip packets that arrive out of order by @enjoy-binbin (#1777)
* Remove unicode optimization in Lua cjson library by @rjd15372 (#1785)
* Save config file and broadcast PONG message on configEpoch change by @enjoy-binbin (#1813)
* Fix engine crash on module client blocking during keyspace events by @yairgott (#1819)
* Fix bug where invalidation messages were getting sent to closing clients by @madolson (#1823)
* Fix ACL LOAD crash on replica since the primary client don't has a user by @bogdanp05 (#1842)
* Fix RANDOMKEY infinite loop during CLIENT PAUSE by @li-benson (#1850)
* Improve clarity of errors for GEO commands when member does not exist by @chx9 (#1943)
* Fix panic in primary when blocking shutdown after previous block with timeout by @murphyjacob4 (#1948)
* fix cluster slot stats assertion during promotion of replica by @Fusl (#1950)
* Fix incorrect lag reported in XINFO GROUPS by @nesty92 (#1952)
* Fix crash during TLS handshake with I/O threads by @uriyage (#1955)
* Disallow sending REPLY ON / OFF / SKIP inside a multi-exec transaction by @sarthakaggarwal97 (#1966)
* Fix random element in skewed sparse hash table by @zuiderkwast (#2085)
* Allow mixing quoted and unquoted inline args by @Fusl (#2098)
* Only mark the client reprocessing flag when unblocked on keys by @ranshid (#2109)
* CLIENT UNBLOCK should't be able to unpause paused clients by @enjoy-binbin (#2117)
* Fix memory corruption in sharded pubsub unsubscribe by @uriyage (#2137)
* Detect SSL_new() returning NULL in outgoing connections by @zuiderkwast (#2140)
* Correctly handle large cluster bus extensions which may have resulted in dropped cluster packets by @madolson (#2144)
* Converge divergent shard-id persisted in nodes.conf to primary's shard ID by @hpatro (#2174)
* Fix replica can't finish failover when config epoch is outdated by @enjoy-binbin (#2178)
* Fix CLUSTER SLOTS/NODES showing wrong port after updating port/tls-port by @enjoy-binbin (#2186)
* Fix use-after-free when active expiration triggers hashtable to shrink by @gusakovy (#2257)
* Redact user data when a module crashes for not handling I/O errors enabled by @YueTang-Vanessa (#2274)
* Generate a new shard_id when the replica executes CLUSTER RESET SOFT by @enjoy-binbin (#2283)
* Fix missing response when AUTH returns an error inside a transaction by @enjoy-binbin (#2287)
* Fix memory leak when shrinking a hashtable without entries by @yzc-yzc (#2288)
* Fix MEMORY USAGE to consider embedded keys by @yulazariy (#2290)
* Fix replicas claiming to still have slots after manual failover by @enjoy-binbin (#2301)
* Prevent bad memory access when NOTOUCH client gets unblocked by @uriyage (#2347)
* Fix large allocations crashing Valkey during active defrag by @Fusl (#2353)
### Build and Tooling
* Support for RDB analysis reports by @artikell (#1743)
* Implement RPS control for valkey-benchmark by @artikell (#1761)
* valkey-cli: ensure output ends with a newline if missing when printing reply by @xbasel (#1782)
* Drop lua object files on clean by @secwall (#1812)
* Check both arm64 and aarch64 for ARM based system architecture by @eifrah-aws (#1829)
* Add --sequential option to valkey-benchmark to support populating entire keyspace by @SoftlyRaining (#1839)
* Support environment variable VALKEYCLI_AUTH alongside REDISCLI_AUTH in valkey-cli by @HiranmoyChowdhury (#1995)
* Add MGET test to valkey-benchmark by @zuiderkwast (#2015)
* Add support to send multiple arbitrary commands to valkey-benchmark by @zuiderkwast (#2057)
* Support RDMA for valkey-cli and benchmark by @pizhenwei (#2059)
* Support MPTCP for valkey-cli and benchmark by @pizhenwei (#2067)
* Allow valkey-benchmark to support multiple random (or sequential) placeholders by @SoftlyRaining (#2102)
* Change default values of valkey-cli to use valkey naming, and added fallback to old values by @avifenesh (#2334)
* Fix duplicate Acks for RDMA events and fix extremely large max latency for RDMA benchmark (#2430)
### Behavior Change
* Move auth check to the front, before command exist/arity/protected check by @enjoy-binbin (#1475)
* Include command fullname in error message when returning errors in multi-execs by @enjoy-binbin (#2286)
* Add STALE command flag to SCRIPT-EXISTS, SCRIPT-SHOW and SCRIPT-FLUSH by @enjoy-binbin (#2419)
### Contributors
* Ran Shidlansik @ranshid
* Binbin @enjoy-binbin
* Jacob Murphy @murphyjacob4
* Madelyn Olson @madolson
* YueTang-Vanessa @YueTang-Vanessa
* cxljs @cxljs
* Sarthak Aggarwal @sarthakaggarwal97
* amanosme @amanosme
* Hanxi Zhang @hanxizh9910
* Seungmin Lee @sungming2
* uriyage @uriyage
* Katie Holly @Fusl
* Nicky-2000 @Nicky-2000
* Allen Samuels @allenss-amazon
* yzc-yzc @yzc-yzc
* zhaozhao.zz @soloestoy
* asagegeLiu @asagege
* nitaicaro @nitaicaro
* Matthew @utdrmac
* Omkar Mestry @omanges
* Viktor Söderqvist @zuiderkwast
* kukey @kukey
* Harkrishn Patro @hpatro
* Avi Fenesh @avifenesh
* Amit Nagler @naglera
* Josh Soref @jsoref
* youngmore1024 @youngmore1024
* Rain Valentine @SoftlyRaining
* skyfirelee @artikell
* Wen Hui @hwware
* yulazariy @yulazariy
* Yakov Gusakov @gusakovy
* charsyam @charsyam
* Simon Baatz @gmbnomis
* Thalia Archibald @thaliaarchi
* chzhoo @chzhoo
* xbasel @xbasel
* Stav Ben-Tov @stav-bentov
* wuranxx @wuranxx
* Ayush Sharma @ayush933
* chx9 @chx9
* KarthikSubbarao @KarthikSubbarao
* Hüseyin Açacak @huseyinacacak-janea
* アンドリー・アンドリ @odaysec
* Ping Xie @PingXie
* Lipeng Zhu @zhulipeng
* Linus Unnebäck @LinusU
* Vitah Lin @vitahlin
* kronwerk @kronwerk
* Vadym Khoptynets @poiuj
* muelstefamzn @muelstefamzn
* zhenwei pi @pizhenwei
* George Padron @DoozkuV
* Björn Svensson @bjosv
* aradz44 @aradz44
* Hiranmoy Das Chowdhury @HiranmoyChowdhury
* Yair Gottdenker @yairgott
* Roshan Khatri @roshkhatri
* nesty92 @nesty92
* carlosfu @carlosfu
* Arthur Lee @arthurkiller
* Shai Zarka @zarkash-aws
* Sergey Kolosov @skolosov-snap
* Nathan Scott @natoscott
* lucasyonge @lucasyonge
* WelongZuo @WelongZuo
* Jim Brunner @JimB123
* jeon1226 @jeon1226
* Benson-li @li-benson
* Meinhard Zhou @MeinhardZhou
* Nikhil Manglore @Nikhil-Manglore
* Bogdan Petre @bogdanp05
* eifrah-aws @eifrah-aws
* Ricardo Dias @rjd15372
* secwall @secwall
* Anastasia Alexandrova @nastena1606
* Marek Zoremba @zori-janea
* VoletiRam @VoletiRam

View File

@ -4,13 +4,13 @@
* similar. */
#define SERVER_NAME "valkey"
#define SERVER_TITLE "Valkey"
#define VALKEY_VERSION "255.255.255"
#define VALKEY_VERSION_NUM 0x00ffffff
#define VALKEY_VERSION "9.0.0"
#define VALKEY_VERSION_NUM 0x00090000
/* The release stage is used in order to provide release status information.
* In unstable branch the status is always "dev".
* During release process the status will be set to rc1,rc2...rcN.
* When the version is released the status will be "ga". */
#define VALKEY_RELEASE_STAGE "dev"
#define VALKEY_RELEASE_STAGE "rc1"
/* Redis OSS compatibility version, should never
* exceed 7.2.x. */