Releases: valkey-io/valkey-swift
Releases · valkey-io/valkey-swift
v1.2.0
BREAKING CHANGES!!
- The ValkeySearch module changed its reported interface considerably in valkey-search 1.2.0. This meant it was too hard to remove all the breaking changes from the generated source files. This should be a one off event and won't occur again. Sorry
Other changes
- Added Swift 6.3 to CI
v1.1.0
Minor release changes
- Add support for retrying pipelined commands on failure in
ValkeyClient. #353 - Add graceful shutdown support to
ValkeyClusterClient. #362 - Add a regular topology refresh to
ValkeyClient. #361 - During topology refresh verify replicas are replicas. #366
- Add Valkey command line tool written using valkey-swift. #368
Patch release changes
- Convert
TimerFiredActionreturned fromValkeyClusterClientStateMachineto enum. #352 - Added
ValkeyClusterTopologyto describe cluster topology. #351 - Replace invalid precondition in
PoolStateMachine.connectionIdleTimerTriggeredwith a reschedule idle timer. #356 - Remove invalid precondition in
PoolStateMachine.connectionKeepAliveTimerTriggered - Add timers to
ValkeyClient. #360 - Add generic parameter topology type to
ValkeyTopologyElection. #364 - Include dependency swift-configuration with no traits enabled. #365
Other changes
v1.0.0
🎉 This is the first major release of valkey-swift 🎉
Features
- Client with persistent connection pool
- Supports all the latest Valkey commands (v9.0.2)
- Command pipelining
- Subscriptions
- Multiple subscriptions on a single connection
- Client subscription connection management
- Transactions
- Standalone clients with replicas
- Run readonly commands on replicas
- Replica redirection to primary via CLIENT CAPA redirect errors
- Client supporting cluster deployment
- Automatic command routing
- Connection pooling
- Command redirection via MOVED, ASK errors
- Regular cluster topology refresh
- Run readonly commands on replicas
Breaking changes since 1.0.0-rc.1
- Add ValkeyClientSubscription for client and cluster client subscriptions. #344
- Update commands to Valkey v9.0.2, HRANDFIELD can return
nil. #345 - Remove default version of
Commands.keysAffected. #347
Minor release changes since 1.0.0-rc.1
v1.0.0 Release Candidate 1
Minor release changes
- Added support for CLIENT CAPA redirect in standalone mode (Pipelined commands not supported yet). #318, #324
- Add custom response for INFO. #319
- Add
maxAttemtpstoRetryConfiguration. #320 - Add call site info to
ValkeyClientError. #327 - Add support for swift-configuration. #328 from @hamzahrmalik
- Add
ValkeyClusterClientConfiguration. #335
Patch release changes
- Cluster: Fix shard failover logic. #329
- Cluster: Retry command if underlying connection is closing/closed or connection pool is shutdown. #336
- Cluster: Don't add failed connections to connection pool array. #339, #341
- Cluster: Pre-emptively added connection pools when we receive a MOVED error. #341
- Correctly destroy a backing off connection. #337
Other changes
- Add
MockServerConnectionsto mock multiple Valkey servers. Add tests for standalone with replicas, and cluster. #331
v1.0.0 Alpha 1
Major release changes
- Added option to ValkeyClient to use replicas for read only commands. PR #287, #289
- Added custom responses for
CLUSTER NODESPR #290XINFO GROUPS,XINFO CONSUMERS, XINFO STREAM` PR #293WAITAOFPR #296GEOSEARCH,GEORADIUS,GEORADIUSRO,GEORADIUSBYMEMBER,GEORADIUSBYMEMBERROPR #291TIME,MODULE LIST,COMMAND GETKEYSANDFLAGSPR #297PUBSUB NUMSUB,PUBSUB SHARDNUMSUBPR #298ACL GETUSERPR #303MEMORY STATSPR #302CLIENT TRACKINGINFOPR #300ZRANDMEMBERPR #307CLIENT LISTPR #313
- Add typed throw (
RESPDecodeError) toRESPTokenDecodable.init. PR #311 - Add typed throw (
ValkeyClientError) to single commandValkeyClientProtocol.execute(). PR #311 - Add typed throw (
ValkeyClientError) to subscription and generated commands. PR #312 - Pipeline and transaction functions return
[RESPToken: ValkeyClientError]. PR #314 - Removed commands referencing slave, there are alternatives using the word replica. PR #292
- Make
XCLAIMandXPENDINGresponse structs. PR #308 - Make
ValkeyClusterNode.Flaga struct so it can be extended in the future. PR #305 - Remove public from custom response initialisers that don't take a
RESPTokenparameter. PR #310
Minor release changes
- Add ValkeySearch commands. PR #263 from @eric-musliner
- Add
RESPBulkString.spanto return aSpan<UInt8>. PR #288
Patch release changes
- Add tracing spans for pipelined commands and transactions. PR #284
- Call READONLY always on cluster nodes, regardless of whether they are primary or replica. PR #317
- Use
RESPToken.decodeMapValuesin cluster command response decoding. PR #294
Other changes
- Command generator can override the response name for custom response types. PR #306
v0.5.0
Major release changes
- Add
RESPBulkStringto represent bulk string types. #271, #276 - Remove
fromRESPparameter label fromRESPTokenDecodable.init(_:). #275
Minor release changes
- Add
ValkeyConnection.triggerGracefulShutdown. #207 - Add support for setting up READONLY replicas. #255
- Add support for numbered databases. #259 from @nilanshu-sharma
- Readonly replica selection for clusters. #253
- Add custom response type for cluster commands. #260 from @nilanshu-sharma
- Add custom response type for HRANDFIELD. #262 from @nilanshu-sharma
- Require swift-nio-transport-services 1.26.0. #264
- Add support for command array parameters that render with a token for each element. #269
- Rewrite LCS response type. #267
- Replace ValkeyClusterParseError with RESPDecodeError. #265
- Add RESPDecodeError typed throws where we can. #266
- Adopt
NonIsolatedNonSendingByDefault. #272 from @fabianfett - Conform
ValkeyClusterClienttoServicefrom swift-service-lifecycle. #282 - Replace
ValkeyClusterError.clientRequestCancelledwithValkeyClientError.cancelled. #283 - Catch ConnectionPoolError and replace with equivalent
ValkeyClientError. #283 - ConnectionPool changes including
- Tidy up triggerForceShutdown to ensure pool cleans up after itself
- Add circuit breaker for when connection requests keep failing
- Add limit to how many connection requests we can have at any time
Patch release changes
- Cache static tracing parameters at startup. #278
Other changes
- Test Redis as well Valkey in CI. #258 from @zunda-pixel
- Add integration tests for TLS. #270
v0.4.0
Breaking changes
- Add protocol requirement
ValkeyClientProtocol.execute(_:). #235 - Add subscribe functions to
ValkeyClientProtocolalong with requirementValkeyClientProtocol.subscribe(command:isolation:process:). #237 - Remove
Array.decode(as:). - Add custom
Responsetypes forSCAN,HSCAN,ZSCAN,BLPOP,BRPOP. #244 from @natanrolnik , #247 - Add custom
Responsetypes for script and function commands. #216 - Rewrite transaction code to make it easier to share among clients and add to
ValkeyClient,ValkeyClusterClientand add protocol requirementValkeyClientProtocol.transaction(_:). #232, #249
Minor release changes
- Throw
ValkeyDecodeErrorwhen decoding RESPToken's instead ofRESPParsingError. #233 - Add
RESPToken.Array.decodeAsKeyValuePairs(as:).
Patch release changes
- Add upcoming feature
ExistentialAnyand fix issues: #240 - Add upcoming feature
MemberImportVisibilityand fix issues. #241 - Re-organize pipeline execute to share common functionality. #239
- Add associated type
NodeDescriptionto protocolValkeyNodeConnectionPoolFactory. #230 - Fix compiler crash on macOS open source toolchains. #251 from @NeedleInAJayStack
Documentation changes
- Fix minor typo in README. #242 from @natanrolnik
- Add article on decoding
RESPTokens to docc documentation. #245
v0.3.0
Minor release changes
- Add support for distributed tracing. #176 from @slashmo
- Cluster client: Add pipelining support. #218, #226
- Cluster client: Add subscription support that uses all primary nodes. #219
- Cluster client: Retry commands with exponential backoff when receiving a
TRYAGAINerror. #215 - Make
ValkeyClusterErrorpublic and convert tostruct. #220 - Add pipeline function that takes an array of existential
ValkeyCommand. #222 - Conform
RESPToken.ValuetoCustomDebugStringConvertible. #217 - Remove public symbols
ValkeyNodeClientandByteBuffer.writeRESP3Token. #228
Patch release changes
- Remove
hostnameandipfromValkeyNodeDescription. #229 - Reset all
ValkeySubscriptionsmembers on close
Other changes
- Add Swift 6.2 to CI
v0.2.0
Major release changes
- Add support Valkey v9 command changes, including hash expiration values and DELIFEQ. #187
Minor release changes
- Add static name to ValkeyCommand. #186 from @slashmo
- Add Subscription connection manager. #194
- Add ValkeyClient.subscribe functions that use global subscription connection. #195
- Remove platform requirement from Package.swift. #198, #202
- Fix LMOVE empty response bug. #185 from @aim2120
- Add custom BLMPOP response, removed custom SPOP response. #205
- Fixed error when compiling for iOS. #211 from @zunda-pixel
- ValkeyClusterClient TLS requirement is defined by the client configuration not individual nodes. #212
- Throw error if cluster command keys don't all come from the same hash slot. #209
- Add support for ASK errors in the cluster client. #199
Patch release changes
- Break out running clients code from ValkeyClusterClientStateMachine. #178
- Add ability to ValkeyClient to run other workloads than the connection manager. #174
- Move SETINFO to inside ChannelHandler, so they can be pipelined with HELLO. #172
- Remove half closure from client. #188
- Don't allow the SUBSCRIBE command to be cancelled. #214
Other changes
v0.1.0
Initial release of valkey-swift the Swift client for Valkey. The client includes support for the following
- All Valkey commands are available (string, list, set, sorted set, hash, stream, hyperloglog, geo-spatial etc)
- Pipelining of commands in batches to avoid waiting for round trip of each response
- Concurrent access to a single connection
- Transactions
- Subscriptions using AsyncSequences
- Valkey Clusters