Skip to content

Commit 00a5be7

Browse files
PingXieenjoy-binbinmadolson
authored
Valkey 8.0 RC1 release notes (#850)
Signed-off-by: Ping Xie <pingxie@google.com> Signed-off-by: Ping Xie <pingxie@outlook.com> Signed-off-by: Madelyn Olson <madelyneolson@gmail.com> Co-authored-by: Binbin <binloveplay1314@qq.com> Co-authored-by: Madelyn Olson <madelyneolson@gmail.com>
1 parent 4b8de6b commit 00a5be7

File tree

3 files changed

+288
-13
lines changed

3 files changed

+288
-13
lines changed

.config/typos.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ extend-exclude = [
55
"deps/",
66
# crc16_slottable is primarily pre-generated random strings.
77
"src/crc16_slottable.h",
8+
# 00-RELEASENOTES includes non-English names that might be flagged as typos in other contexts.
9+
"00-RELEASENOTES",
810
]
911

1012
[default.extend-words]

00-RELEASENOTES

Lines changed: 284 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,289 @@
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 8.0 release notes
2+
========================
3+
--------------------------------------------------------------------------------
4+
Upgrade urgency levels:
5+
LOW: No need to upgrade unless there are new features you want to use.
6+
MODERATE: Program an upgrade of the server, but it's not urgent.
7+
HIGH: There is a critical bug that may affect a subset of users. Upgrade!
8+
CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
9+
SECURITY: There are security fixes in the release.
10+
--------------------------------------------------------------------------------
311

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.
12+
================================================================================
13+
Valkey 8.0.0 RC1 - Released Thu 1 Aug 2024
14+
================================================================================
15+
Upgrade urgency LOW: This is the first release candidate of Valkey 8.0, with
16+
performance, reliability, and observability improvements. It includes asynchronous
17+
I/O threading, better cluster scaling reliability, dual primary-replica channel
18+
for faster full synchronization, per-slot metrics for resource management, and
19+
experimental RDMA support for increased throughput and reduced latency. This
20+
release is fully compatible with Redis OSS 7.2.4.
721

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:
22+
Un-deprecated Commands - Cluster
23+
================================
24+
* Un-deprecate the `CLUSTER SLOTS` command. (#536)
1125

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

14-
More information is available at https://valkey.io
39+
New/Modified Commands - Cluster
40+
===============================
41+
* Introduce `CLUSTER SLOT-STATS` command which allows tracking of per slot
42+
metrics for key count, CPU utilization, network bytes in, and network
43+
bytes out. (#20, #351)
44+
* Add `TIMEOUT` option to `CLUSTER SETSLOT` command. (#556, #445)
1545

16-
Happy hacking!
46+
New/Modified Metrics - Core
47+
===========================
48+
* Introduce per-client metrics for network traffic and command execution
49+
in `CLIENT LIST` and `CLIENT INFO`. (#327)
50+
* Add metrics for DB memory overhead and rehashing status to `INFO MEMORY`
51+
and `MEMORY STATS`. (Redis#12913)
52+
* Add `pubsub_clients` metric to `INFO CLIENTS`. (Redis#12849)
53+
* Add metrics for client buffer limit disconnections to `INFO`. (Redis#12476)
54+
* Add metrics for monitoring clients using `WATCH` command and watched keys.
55+
(Redis#12966)
56+
* Added allocator muzzy memory metrics to `INFO MEMORY` and `MEMORY STATS`.
57+
(Redis#12996)
58+
59+
New Features - Core
60+
===================
61+
* Support replica redirect for read/write operations to primary in standalone
62+
mode. (#325)
63+
* Add server config for cluster blacklist TTL. (#738)
64+
* Add availability zone server config. (#700)
65+
66+
New Features - Cluster
67+
======================
68+
* Support IPv4 and IPv6 dual stack and client-specific IPs in clusters. (#736)
69+
* Support `BY/GET` options for `SORT/SORT_RO` in cluster mode when pattern
70+
implies a single slot. (Redis#12728)
71+
72+
Compatibility Improvements - Core
73+
=================================
74+
* Derive RDB and module child process names based on server start name for
75+
compatibility. (#454)
76+
* Update server identity in `serverPanic` output based on `extended-redis-compatibility`
77+
config. (#415)
78+
79+
Compatibility Improvements - Sentinel
80+
=====================================
81+
* Accept `redis-sentinel` to start Valkey in sentinel mode. (#731)
82+
83+
Performance/Efficiency Improvements - Core
84+
==========================================
85+
* Introduce dual channel for more efficient full sync replication. (#60)
86+
* Introduce async IO threading for improved multi-threaded performance.
87+
(#763, #758)
88+
* Embed key directly in main dictionary entry for improved memory efficiency.
89+
(#541)
90+
* Use thread-local storage to reduce atomic contention in updating memory
91+
metrics. (#674)
92+
* Reduce redundant calls to `prepareClientToWrite` for continuous `addReply*`.
93+
(#670)
94+
* Optimize the logic for checking conversion to skip list during `ZADD` operations.
95+
(#806)
96+
* Optimize `sdsfree` with `zfree_with_size` to avoid redundant size calculation.
97+
(#453)
98+
* Combine events to eliminate redundant `kevent(2)` calls. (#638)
99+
* Introduce shared query buffer for client reads to reduce memory usage. (#258)
100+
* Optimize CRC64 performance for large batches by processing bytes in parallel.
101+
(#350)
102+
* Use `SOCK_NONBLOCK` to reduce system calls for outgoing connections. (#293)
103+
* Enable `accept4()` detection on specific versions of various platforms. (#294)
104+
* Convert CRC16 slot table to fixed-size array for improved memory efficiency.
105+
(Redis#13112)
106+
* Run `SCRIPT FLUSH` truly asynchronously and close Lua interpreter in a
107+
background thread. (Redis#13087)
108+
* Optimize `DEL` command to avoid redundant deletions for expired keys. (Redis#13080)
109+
* Improve defragmentation for large bins to enhance memory efficiency. (Redis#12996)
110+
* Optimize hash table resizing to include empty dictionaries. (Redis#12819)
111+
* Reduce performance impact of dictionary rehashing by optimizing bucket processing.
112+
(Redis#12899)
113+
* Optimize performance for simultaneous client `[P|S]UNSUBSCRIBE`. (Redis#12838)
114+
* Optimize CPU cache efficiency during dictionary rehashing. (Redis#5692)
115+
* Optimize `ZRANGE` offset location from linear search to skip list jump. (Redis#12450)
116+
* Fix `aeSetDontWait` timing to avoid unnecessary waits in `aeProcessEvent`. (Redis#12068)
117+
118+
Performance/Efficiency Improvements - Cluster
119+
=============================================
120+
* Add lightweight cluster message header for Pub/Sub messages. (#654)
121+
* Minor performance improvement in Valkey cluster by avoid initializing key
122+
buffer in `getKeysResult`. (#631)
123+
* Cache `CLUSTER SLOTS` response to improve throughput and reduce latency. (#53)
124+
* Replace slots_to_channels radix tree with slot-specific dictionaries for
125+
shard channels. (Redis#12804)
126+
* Optimize `KEYS` command when pattern includes hashtag and implies a single
127+
slot. (Redis#12754)
128+
* Optimize `SCAN` command with `MATCH` when pattern implies a single slot.
129+
(Redis#12536)
130+
* Replace cluster metadata with slot specific dictionaries to reduce memory
131+
usage when using Valkey cluster. (Redis#11695, Redis#12704)
132+
133+
Reliability Improvements - Core
134+
===============================
135+
* Limit tracking custom errors (e.g. from Lua) while allowing normal errors
136+
to be tracked (#500, Redis#13141)
137+
* Manage maximum number of new connections per cycle to prevent connection
138+
storms. (Redis#12178)
139+
140+
Reliability Improvements - Cluster
141+
==================================
142+
* Reduce fail-over time in Valkey cluster when multiple sequential fail-overs
143+
occurred by resetting `failover_auth_time` when the new primary node goes
144+
down. (#782)
145+
* Restrict node failure marking to primaries with assigned slots. (#634)
146+
* Enhance cluster meet reliability under link failures. (#461)
147+
* Improve reliability of slot migration in Valkey clusters. (#445)
148+
149+
Usability Improvements - Core
150+
=============================
151+
* Re-brand and refine latency report messages. (#644)
152+
* Optimize `ACL LOAD` to avoid disconnecting clients whose users are unchanged.
153+
(Redis#12171)
154+
155+
Usability Improvements - Cluster
156+
================================
157+
* Adjust log levels for various cluster-related logs to improve clarity. (#633)
158+
* Maintain deterministic ordering of replica(s) in `CLUSTER SLOTS` response. (#265)
159+
160+
Usability Improvements - CLI
161+
================================
162+
* Add prompt message when Ctrl-C is pressed in `valkey-cli`. (#702)
163+
* Keep an in-memory history of all commands in `valkey-cli` so that sensitive
164+
commands can be shown within the same session. (Redis#12862)
165+
166+
Module Improvements - Core
167+
==========================
168+
* Add `ValkeyModule_TryCalloc()` and `ValkeyModule_TryRealloc()` to handle
169+
allocation failures gracefully. (Redis#12985)
170+
* Make `ValkeyModule_Yield` thread-safe by handling events in the main thread.
171+
(Redis#12905)
172+
* Allow modules to declare new ACL categories. (Redis#12486)
173+
174+
Module Improvements - Cluster
175+
=============================
176+
* Add API `ValkeyModule_ClusterKeySlot` and `ValkeyModule_ClusterCanonicalKeyNameInSlot`.
177+
(Redis#13069)
178+
179+
Behavior Changes - Core
180+
=======================
181+
* Re-brand the Lua debugger. (#603)
182+
* Change default pidfile from `redis.pid` to `valkey.pid`. (#378)
183+
* Abort transactions on nested `MULTI` or `WATCH` commands. (#723)
184+
* Ensure keys that match the `SCAN` filter are not lazily expired and return
185+
an error for invalid types. (#501)
186+
* Rename `redis` in AOF logs and proc title to `valkey-aof-rewrite`. (#393)
187+
* Change default syslog-ident from `redis` to `valkey`. (#390)
188+
* Update `Redis` to `Valkey` in `serverLog` messages in server.c file. (#231)
189+
* Remove `Redis` from various error reply messages. See GitHub PR for more
190+
details. (#206)
191+
* Reject empty strings for configs `dir`, `dbfilename`, and `cluster-config-file`.
192+
(#636)
193+
* Change key-spec flag from `RW` to `OW` for `SINTERSTORE` command. (Redis#12917)
194+
* Return more precise error messages for some cases verifying keys during script
195+
execution. (Redis#12707)
196+
* Return errors for `BITCOUNT` and `BITPOS` with non-existing keys or invalid
197+
arguments instead of zero. (Redis#11734)
198+
* Validate `BITCOUNT` arguments before key existence check. (Redis#12394)
199+
* Redact ACL username information and mark `*-key-file-pass` configs as
200+
sensitive. (Redis#12860)
201+
* Allow `MULTI/EXEC` to use a small amount of additional memory beyond the
202+
used-memory limit. (Redis#12961)
203+
204+
Behavior Changes - Cluster
205+
==========================
206+
* Allow `CLUSTER NODES/INFO/MYID/MYSHARDID` during loading state. (#596)
207+
* Make cluster replicas return `ASK` and `TRYAGAIN` during slot migration. (#495)
208+
209+
Behavior Changes - Sentinel
210+
===========================
211+
* Replace `master-reboot-down-after-period` with `primary-reboot-down-after-period`
212+
in `sentinel.conf`. (#647)
213+
214+
Bug Fixes - Core
215+
================
216+
* Fix a bug that caused LRU/LFU inconsistencies for some integer objects. (#250)
217+
* Fix a bug where Valkey may use a sub-optimal encoding for some data types.
218+
(Redis#13148)
219+
* Fix propagation of `entries_read` by calling `streamPropagateGroupID`
220+
unconditionally. (Redis#12898)
221+
* Fix race condition issues between the main thread and module threads.
222+
(Redis#12817)
223+
* Wake blocked clients ASAP in next `beforeSleep` for `WAITAOF`. (Redis#12627)
224+
* Fix crash in crash-report and improve thread management with RW locks.
225+
(Redis#12623)
226+
227+
Bug Fixes - Cluster
228+
===================
229+
* Fix a bug where a shard returns the incorrect slot slot information in
230+
`CLUSTER SHARDS` command on primary failure. (#790)
231+
* Allow module authentication to succeed when the cluster is down. (#693)
232+
* Fix `PONG` message processing for primary-ship tracking during fail-overs.
233+
(Redis#13055)
234+
* Prevent double freeing of cluster link with `DEBUG CLUSTERLINK KILL`.
235+
(Redis#12930)
236+
* Unsubscribe all clients from replica for shard channel if the primary
237+
ownership changes. (Redis#12577)
238+
239+
Bug Fixes - Tooling
240+
===============
241+
* Fix `valkey-check-aof` misidentifying data in manifest format as MP-AOF.
242+
(Redis#12958)
243+
* Fix `valkey-cli` to respect the `--count` option without requiring
244+
`--pattern`. (Redis#13092)
245+
* Fix `valkey-benchmark` to distribute operations across all slots owned by
246+
a node in cluster mode. (Redis#12986)
247+
248+
Internal Codebase Improvements
249+
==============================
250+
* Enable debug asserts for cluster and sentinel tests. (#588)
251+
* Introduce a minimal debugger for Tcl integration test suite. (#683)
252+
* Set up clang-format GitHub action for automated code formatting checks. (#538)
253+
* Replace custom atomic logic with C11 _Atomics. (#490)
254+
* Add fast fail option for Tcl test cases. (#482)
255+
* Introduce a simple unit test framework. (#460)
256+
* An initial simple unit test framework. (#344)
257+
* Introduce Codecov for automated code coverage tracking. (#316)
258+
* Remove deprecated `redis-trib` CLI program. (#281)
259+
* Add `-fno-omit-frame-pointer` to default compilation flags to improve
260+
debuggability. (Redis#12973)
261+
* Refactor the per-slot dict-array db.c into a new kvstore data structure.
262+
(Redis#12822)
263+
* Unified database rehash method for both standalone and cluster modes.
264+
(Redis#12848)
265+
* Clarify and decouple the sampling logic in eviction to improve readability.
266+
(Redis#12781)
267+
* Rewrite large printf calls to smaller ones for readability. (Redis#12257)
268+
269+
Experimental
270+
============
271+
* Introduce Valkey Over RDMA transport (experimental). (#477)
272+
273+
We appreciate the efforts of all who contributed code to this release!
274+
275+
lan Slang, Binbin, Brennan, Chen Tianjie, Cui Fliter, Daniel House, Darren Jiang,
276+
David Carlier, Debing Sun, Dingrui, Dmitry Polyakovsky, Eran Liberty, Gabi Ganam,
277+
George Guimares, Guillaume Koenig, Guybe, Harkrishn Patro, Hassaan Khan, Hwang Si Yeon,
278+
ICHINOSE Shogo, icy17, Ikko Eltociear Ashimine, iKun, Itamar Haber, Jachin, Jacob Murphy,
279+
Jason Elbaum, Jeff Liu, John Sully, John Vandenberg, Jonathan Wright, Jonghoonpark, Joe Hu,
280+
Josiah Carlson, Juho Kim, judeng, Jun Luo, K.G. Wang, Karthik Subbarao, Karthick Ariyaratnam,
281+
kell0gg, Kyle Kim, Leibale Eidelman, LiiNen, Lipeng Zhu, Lior Kogan, Lior Lahav, Madelyn Olson,
282+
Makdon, Maria Markova, Mason Hall, Matthew Douglass, meiravgri, michalbiesek, Mike Dolan,
283+
Mikel Olasagasti Uranga, Moshe Kaplan, mwish, naglera, NAM UK KIM, Neal Gompa, nitaicaro,
284+
Nir Rattner, Oran Agra, Ouri Half, Ozan Tezcan, Parth, PatrickJS, Pengfei Han, Pierre, Ping Xie,
285+
poiuj, pshankinclarke, ranshid, Ronen Kalish, Roshan Khatri, Samuel Adetunji, Sankar, secwall,
286+
Sergey Fedorov, Sher_Sun, Shivshankar, skyfirelee, Slava Koyfman, Subhi Al Hasan, sundb,
287+
Ted Lyngmo, Thomas Fline, tison, Tom Morris, Tyler Bream, uriyage, Viktor Söderqvist, Vitaly,
288+
Vitah Lin, VoletiRam, w. ian douglas, WangYu, Wen Hui, Wenwen Chen, Yaacov Hazan, Yanqi Lv,
289+
Yehoshua Hershberg, Yves LeBras, zalj, Zhao Zhao, zhenwei pi, zisong.cw

src/version.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
* similar. */
55
#define SERVER_NAME "valkey"
66
#define SERVER_TITLE "Valkey"
7-
#define VALKEY_VERSION "255.255.255"
8-
#define VALKEY_VERSION_NUM 0x00ffffff
7+
#define VALKEY_VERSION "7.9.240"
8+
#define VALKEY_VERSION_NUM 0x000709f0
99

1010
/* Redis OSS compatibility version, should never
1111
* exceed 7.2.x. */

0 commit comments

Comments
 (0)