Skip to content

Releases: valkey-io/valkey-swift

v1.2.0

02 Apr 13:59
c355756

Choose a tag to compare

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

20 Mar 07:44

Choose a tag to compare

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 TimerFiredAction returned from ValkeyClusterClientStateMachine to enum. #352
  • Added ValkeyClusterTopology to describe cluster topology. #351
  • Replace invalid precondition in PoolStateMachine.connectionIdleTimerTriggered with 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

  • Documentation edits. #357 from @heckj
  • Cleanup ValkeyClient mock tests. #367

v1.0.0

24 Feb 09:42
8492225

Choose a tag to compare

🎉 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

  • Enable upcoming feature ExistentialAny. #343
  • Fix Swift 6.3 compile crash. #348
  • Fix resource leak. Cancel timer tasks once one of them has finished. #349

v1.0.0 Release Candidate 1

19 Feb 09:47
87f5604

Choose a tag to compare

Pre-release

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 maxAttemtps to RetryConfiguration. #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 MockServerConnections to mock multiple Valkey servers. Add tests for standalone with replicas, and cluster. #331

v1.0.0 Alpha 1

27 Jan 08:15
9815255

Choose a tag to compare

v1.0.0 Alpha 1 Pre-release
Pre-release

Major release changes

  • Added option to ValkeyClient to use replicas for read only commands. PR #287, #289
  • Added custom responses for
    • CLUSTER NODES PR #290
    • XINFO GROUPS, XINFO CONSUMERS, XINFO STREAM` PR #293
    • WAITAOF PR #296
    • GEOSEARCH, GEORADIUS, GEORADIUSRO, GEORADIUSBYMEMBER, GEORADIUSBYMEMBERRO PR #291
    • TIME, MODULE LIST, COMMAND GETKEYSANDFLAGS PR #297
    • PUBSUB NUMSUB, PUBSUB SHARDNUMSUB PR #298
    • ACL GETUSER PR #303
    • MEMORY STATS PR #302
    • CLIENT TRACKINGINFO PR #300
    • ZRANDMEMBER PR #307
    • CLIENT LIST PR #313
  • Add typed throw (RESPDecodeError) to RESPTokenDecodable.init. PR #311
  • Add typed throw (ValkeyClientError) to single command ValkeyClientProtocol.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 XCLAIM and XPENDING response structs. PR #308
  • Make ValkeyClusterNode.Flag a struct so it can be extended in the future. PR #305
  • Remove public from custom response initialisers that don't take a RESPToken parameter. PR #310

Minor release changes

  • Add ValkeySearch commands. PR #263 from @eric-musliner
  • Add RESPBulkString.span to return a Span<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.decodeMapValues in cluster command response decoding. PR #294

Other changes

  • Command generator can override the response name for custom response types. PR #306

v0.5.0

20 Dec 15:02
e4bbdd1

Choose a tag to compare

v0.5.0 Pre-release
Pre-release

Major release changes

  • Add RESPBulkString to represent bulk string types. #271, #276
  • Remove fromRESP parameter label from RESPTokenDecodable.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 ValkeyClusterClient to Service from swift-service-lifecycle. #282
  • Replace ValkeyClusterError.clientRequestCancelled with ValkeyClientError.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

v0.4.0

18 Oct 16:03
f065fc2

Choose a tag to compare

v0.4.0 Pre-release
Pre-release

Breaking changes

  • Add protocol requirement ValkeyClientProtocol.execute(_:). #235
  • Add subscribe functions to ValkeyClientProtocol along with requirement ValkeyClientProtocol.subscribe(command:isolation:process:). #237
  • Remove Array.decode(as:).
  • Add custom Response types for SCAN, HSCAN, ZSCAN, BLPOP, BRPOP. #244 from @natanrolnik , #247
  • Add custom Response types for script and function commands. #216
  • Rewrite transaction code to make it easier to share among clients and add to ValkeyClient, ValkeyClusterClient and add protocol requirementValkeyClientProtocol.transaction(_:). #232, #249

Minor release changes

  • Throw ValkeyDecodeError when decoding RESPToken's instead of RESPParsingError. #233
  • Add RESPToken.Array.decodeAsKeyValuePairs(as:).

Patch release changes

  • Add upcoming feature ExistentialAny and fix issues: #240
  • Add upcoming feature MemberImportVisibility and fix issues. #241
  • Re-organize pipeline execute to share common functionality. #239
  • Add associated type NodeDescription to protocol ValkeyNodeConnectionPoolFactory. #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

30 Sep 15:02

Choose a tag to compare

v0.3.0 Pre-release
Pre-release

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 TRYAGAIN error. #215
  • Make ValkeyClusterError public and convert to struct. #220
  • Add pipeline function that takes an array of existential ValkeyCommand. #222
  • Conform RESPToken.Value to CustomDebugStringConvertible. #217
  • Remove public symbols ValkeyNodeClient and ByteBuffer.writeRESP3Token. #228

Patch release changes

  • Remove hostname and ip from ValkeyNodeDescription. #229
  • Reset all ValkeySubscriptions members on close

Other changes

  • Add Swift 6.2 to CI

v0.2.0

11 Sep 13:53
cab1563

Choose a tag to compare

v0.2.0 Pre-release
Pre-release

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

  • Add fake server channel handler to test server close. #192
  • Updated license header and enabled license header check in CI. #203
  • Reorganise intergration tests. #206

v0.1.0

04 Aug 11:05
74c2751

Choose a tag to compare

v0.1.0 Pre-release
Pre-release

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