The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of RediStack, reference main (53fc85), with Swift 6.1 for macOS (SPM) on 27 Apr 2025 20:12:28 UTC.

Swift 6 data race errors: 7

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

433 |                     }
434 |             },
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:432:42: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
430 |                             self.leasedConnectionCount > 0
431 |                         else { return }
432 |                         returnConnection(connection, context)
    |                                          `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
433 |                     }
434 |             },
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
 86 | ///
 87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
 88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
    |                    `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
 89 |     /// A unique identifer to represent this connection.
 90 |     public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:449:30: warning: type 'T' does not conform to the 'Sendable' protocol
439 |
440 |     @usableFromInline
441 |     internal func forwardOperationToConnection<T>(
    |                                                `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
442 |         _ operation: @escaping (RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) ->
443 |             EventLoopFuture<T>,
    :
447 |         // Establish event loop context then jump to the in-loop version.
448 |         guard self.loop.inEventLoop else {
449 |             return self.loop.flatSubmit {
    |                              `- warning: type 'T' does not conform to the 'Sendable' protocol
450 |                 self.forwardOperationToConnection(
451 |                     operation,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:473:18: warning: type 'T' does not conform to the 'Sendable' protocol
439 |
440 |     @usableFromInline
441 |     internal func forwardOperationToConnection<T>(
    |                                                `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
442 |         _ operation: @escaping (RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) ->
443 |             EventLoopFuture<T>,
    :
471 |                     logger: logger
472 |                 )
473 |                 .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
    |                  `- warning: type 'T' does not conform to the 'Sendable' protocol
474 |         }
475 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:450:17: warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
 29 | /// single `EventLoop`: if callers call the API from a different `EventLoop` (or from no `EventLoop` at all)
 30 | /// `RedisConnectionPool` will ensure that the call is dispatched to the correct loop.
 31 | public final class RedisConnectionPool {
    |                    `- note: class 'RedisConnectionPool' does not conform to the 'Sendable' protocol
 32 |     /// A unique identifer to represent this connection.
 33 |     public let id = UUID()
    :
448 |         guard self.loop.inEventLoop else {
449 |             return self.loop.flatSubmit {
450 |                 self.forwardOperationToConnection(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
451 |                     operation,
452 |                     preferredConnection: preferredConnection,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:451:21: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
449 |             return self.loop.flatSubmit {
450 |                 self.forwardOperationToConnection(
451 |                     operation,
    |                     |- warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
452 |                     preferredConnection: preferredConnection,
453 |                     context: context
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:452:42: warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
450 |                 self.forwardOperationToConnection(
451 |                     operation,
452 |                     preferredConnection: preferredConnection,
    |                                          `- warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
453 |                     context: context
454 |                 )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
 86 | ///
 87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
 88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
    |                    `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
 89 |     /// A unique identifer to represent this connection.
 90 |     public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:473:28: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
471 |                     logger: logger
472 |                 )
473 |                 .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
    |                            |- warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
    |                            `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
474 |         }
475 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:473:42: warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
471 |                     logger: logger
472 |                 )
473 |                 .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
    |                                          `- warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
474 |         }
475 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:38:22: note: class 'ConnectionPool' does not conform to the 'Sendable' protocol
 36 | /// and being used, at the cost of incurring more reconnects under low load. Of course, when we're under low load we don't
 37 | /// really care how many reconnects there are.
 38 | internal final class ConnectionPool {
    |                      `- note: class 'ConnectionPool' does not conform to the 'Sendable' protocol
 39 |     /// A function used to create Redis connections.
 40 |     private let connectionFactory: (EventLoop) -> EventLoopFuture<RedisConnection>
[709/719] Compiling RediStack RedisLogging.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
    |                        `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
119 |         }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 |         }
120 |     }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |                                                      `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 |         }
120 |     }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 |     }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                                                   `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 |     }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
125 |
126 |     internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 |         self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 |     }
129 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
135 |     ) -> EventLoopFuture<Void> {
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
138 |                 to: channels,
    |                     `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 |             self.client.subscribe(
138 |                 to: channels,
139 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 |                 onUnsubscribe: unsubscribeHandler,
142 |                 logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 |                 logger: self.logger
143 |             )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
152 |     ) -> EventLoopFuture<Void> {
153 |         self.eventLoop.flatSubmit {
154 |             self.client.psubscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 |             self.client.psubscribe(
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 |                 onUnsubscribe: unsubscribeHandler,
159 |                 logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 |                 logger: self.logger
160 |             )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 45 |
 46 |     /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
    |                       |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
    |                       |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
    |                       |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 52 |     /// The `Metrics.Counter` that retains the number of connections made since application startup.
 53 |     public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[710/719] Compiling RediStack RedisMetrics.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
    |                        `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
119 |         }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 |         }
120 |     }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |                                                      `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 |         }
120 |     }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 |     }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                                                   `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 |     }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
125 |
126 |     internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 |         self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 |     }
129 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
135 |     ) -> EventLoopFuture<Void> {
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
138 |                 to: channels,
    |                     `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 |             self.client.subscribe(
138 |                 to: channels,
139 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 |                 onUnsubscribe: unsubscribeHandler,
142 |                 logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 |                 logger: self.logger
143 |             )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
152 |     ) -> EventLoopFuture<Void> {
153 |         self.eventLoop.flatSubmit {
154 |             self.client.psubscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 |             self.client.psubscribe(
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 |                 onUnsubscribe: unsubscribeHandler,
159 |                 logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 |                 logger: self.logger
160 |             )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 45 |
 46 |     /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
    |                       |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
    |                       |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
    |                       |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 52 |     /// The `Metrics.Counter` that retains the number of connections made since application startup.
 53 |     public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[711/719] Compiling RediStack _Deprecations.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
    |                        `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
119 |         }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 |         }
120 |     }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |                                                      `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 |         }
120 |     }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 |     }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                                                   `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 |     }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
125 |
126 |     internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 |         self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 |     }
129 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
135 |     ) -> EventLoopFuture<Void> {
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
138 |                 to: channels,
    |                     `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 |             self.client.subscribe(
138 |                 to: channels,
139 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 |                 onUnsubscribe: unsubscribeHandler,
142 |                 logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 |                 logger: self.logger
143 |             )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
152 |     ) -> EventLoopFuture<Void> {
153 |         self.eventLoop.flatSubmit {
154 |             self.client.psubscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 |             self.client.psubscribe(
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 |                 onUnsubscribe: unsubscribeHandler,
159 |                 logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 |                 logger: self.logger
160 |             )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 45 |
 46 |     /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
    |                       |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
    |                       |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
    |                       |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 52 |     /// The `Metrics.Counter` that retains the number of connections made since application startup.
 53 |     public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[712/719] Compiling RediStack RedisByteDecoder.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:116:25: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 |
115 |         default:
116 |             leadPromise.succeed(value)
    |                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
117 |             RedisMetrics.commandSuccessCount.increment()
118 |         }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:217:17: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
215 |         guard self.eventLoop.inEventLoop else {
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:218:26: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
218 |                     for: target,
    |                          `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:219:38: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
217 |                 self.addSubscription(
218 |                     for: target,
219 |                     messageReceiver: receiver,
    |                                      |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:220:34: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
    |                                  |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
221 |                     onUnsubscribe: unsubscribeHandler
222 |                 )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:221:36: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
    |                                    |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
222 |                 )
223 |             }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:48: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
271 |         }
272 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:77: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                                             `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
271 |         }
272 |
[713/719] Compiling RediStack RedisCommandHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:116:25: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 |
115 |         default:
116 |             leadPromise.succeed(value)
    |                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
117 |             RedisMetrics.commandSuccessCount.increment()
118 |         }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:217:17: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
215 |         guard self.eventLoop.inEventLoop else {
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:218:26: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
218 |                     for: target,
    |                          `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:219:38: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
217 |                 self.addSubscription(
218 |                     for: target,
219 |                     messageReceiver: receiver,
    |                                      |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:220:34: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
    |                                  |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
221 |                     onUnsubscribe: unsubscribeHandler
222 |                 )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:221:36: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
    |                                    |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
222 |                 )
223 |             }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:48: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
271 |         }
272 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:77: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                                             `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
271 |         }
272 |
[714/719] Compiling RediStack RedisMessageEncoder.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:116:25: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 |
115 |         default:
116 |             leadPromise.succeed(value)
    |                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
117 |             RedisMetrics.commandSuccessCount.increment()
118 |         }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:217:17: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
215 |         guard self.eventLoop.inEventLoop else {
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:218:26: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
218 |                     for: target,
    |                          `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:219:38: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
217 |                 self.addSubscription(
218 |                     for: target,
219 |                     messageReceiver: receiver,
    |                                      |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:220:34: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
    |                                  |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
221 |                     onUnsubscribe: unsubscribeHandler
222 |                 )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:221:36: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
    |                                    |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
222 |                 )
223 |             }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:48: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
271 |         }
272 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:77: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                                             `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
271 |         }
272 |
[715/719] Compiling RediStack RedisPubSubHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:116:25: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 |
115 |         default:
116 |             leadPromise.succeed(value)
    |                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
117 |             RedisMetrics.commandSuccessCount.increment()
118 |         }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:217:17: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
215 |         guard self.eventLoop.inEventLoop else {
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:218:26: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
218 |                     for: target,
    |                          `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:219:38: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
217 |                 self.addSubscription(
218 |                     for: target,
219 |                     messageReceiver: receiver,
    |                                      |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:220:34: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
    |                                  |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
221 |                     onUnsubscribe: unsubscribeHandler
222 |                 )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:221:36: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
    |                                    |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
222 |                 )
223 |             }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:48: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
271 |         }
272 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:77: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                                             `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
271 |         }
272 |
[716/719] Compiling RediStack PubSubCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 74 |     /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
 75 |     public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
 76 |         guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
    |                                                               `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 77 |
 78 |         var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
 82 |             .tryConverting(to: [RESPValue].self)
 83 |             .flatMapThrowing { response in
 84 |                 assert(response.count == channels.count * 2, "Unexpected response size!")
    |                                          `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
 85 |
 86 |                 // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 82 |             .tryConverting(to: [RESPValue].self)
 83 |             .flatMapThrowing { response in
 84 |                 assert(response.count == channels.count * 2, "Unexpected response size!")
    |                                          `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 85 |
 86 |                 // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 |         assert(count >= 0, "A negative max count is nonsense.")
151 |
152 |         guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                      `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 |         let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 |     /// - Returns: The elements randomly selected from the set.
191 |     public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 |         guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                       `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 |         let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 |     /// - Returns: A list of elements resulting from the difference.
298 |     public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 |     /// - Returns: A list of elements resulting from the intersection.
373 |     public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 |     /// - Returns: A list of elements resulting from the union.
448 |     public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 605 |
 606 |         if let c = count {
 607 |             guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
     |                                                       `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 608 |
 609 |             args.append(.init(bulk: c))
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:121:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
119 | extension RedisSetCommandCondition {
120 |     /// No condition is required to be met in order to set the key's value.
121 |     public static let none = RedisSetCommandCondition(.none)
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
122 |
123 |     /// Only set the key if it already exists.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:126:23: warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
124 |     ///
125 |     /// Redis documentation refers to this as the option "XX".
126 |     public static let keyExists = RedisSetCommandCondition(.keyExists)
    |                       |- warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keyExists' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 |     /// Only set the key if it does not already exist.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:131:23: warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
129 |     ///
130 |     /// Redis documentation refers to this as the option "NX".
131 |     public static let keyDoesNotExist = RedisSetCommandCondition(.keyDoesNotExist)
    |                       |- warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keyDoesNotExist' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
132 | }
133 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:168:23: warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
135 | ///
136 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
137 | public struct RedisSetCommandExpiration: Hashable {
    |               `- note: consider making struct 'RedisSetCommandExpiration' conform to the 'Sendable' protocol
138 |     private enum Expiration: Hashable {
139 |         case keepExisting
    :
166 |     /// Redis documentation refers to this as "KEEPTTL".
167 |     /// - Important: This is option is only available in Redis 6.0+. An error will be returned if this value is sent in lower versions of Redis.
168 |     public static let keepExisting = RedisSetCommandExpiration(.keepExisting)
    |                       |- warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keepExisting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 |
170 |     /// Expire the key after the given number of seconds.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:52:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 50 |     /// - Returns: The values stored at the keys provided, matching the same order.
 51 |     public func mget(_ keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
 52 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 53 |
 54 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
[717/719] Compiling RediStack SetCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 74 |     /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
 75 |     public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
 76 |         guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
    |                                                               `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 77 |
 78 |         var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
 82 |             .tryConverting(to: [RESPValue].self)
 83 |             .flatMapThrowing { response in
 84 |                 assert(response.count == channels.count * 2, "Unexpected response size!")
    |                                          `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
 85 |
 86 |                 // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 82 |             .tryConverting(to: [RESPValue].self)
 83 |             .flatMapThrowing { response in
 84 |                 assert(response.count == channels.count * 2, "Unexpected response size!")
    |                                          `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 85 |
 86 |                 // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 |         assert(count >= 0, "A negative max count is nonsense.")
151 |
152 |         guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                      `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 |         let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 |     /// - Returns: The elements randomly selected from the set.
191 |     public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 |         guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                       `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 |         let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 |     /// - Returns: A list of elements resulting from the difference.
298 |     public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 |     /// - Returns: A list of elements resulting from the intersection.
373 |     public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 |     /// - Returns: A list of elements resulting from the union.
448 |     public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 605 |
 606 |         if let c = count {
 607 |             guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
     |                                                       `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 608 |
 609 |             args.append(.init(bulk: c))
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:121:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
119 | extension RedisSetCommandCondition {
120 |     /// No condition is required to be met in order to set the key's value.
121 |     public static let none = RedisSetCommandCondition(.none)
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
122 |
123 |     /// Only set the key if it already exists.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:126:23: warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
124 |     ///
125 |     /// Redis documentation refers to this as the option "XX".
126 |     public static let keyExists = RedisSetCommandCondition(.keyExists)
    |                       |- warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keyExists' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 |     /// Only set the key if it does not already exist.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:131:23: warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
129 |     ///
130 |     /// Redis documentation refers to this as the option "NX".
131 |     public static let keyDoesNotExist = RedisSetCommandCondition(.keyDoesNotExist)
    |                       |- warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keyDoesNotExist' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
132 | }
133 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:168:23: warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
135 | ///
136 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
137 | public struct RedisSetCommandExpiration: Hashable {
    |               `- note: consider making struct 'RedisSetCommandExpiration' conform to the 'Sendable' protocol
138 |     private enum Expiration: Hashable {
139 |         case keepExisting
    :
166 |     /// Redis documentation refers to this as "KEEPTTL".
167 |     /// - Important: This is option is only available in Redis 6.0+. An error will be returned if this value is sent in lower versions of Redis.
168 |     public static let keepExisting = RedisSetCommandExpiration(.keepExisting)
    |                       |- warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keepExisting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 |
170 |     /// Expire the key after the given number of seconds.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:52:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 50 |     /// - Returns: The values stored at the keys provided, matching the same order.
 51 |     public func mget(_ keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
 52 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 53 |
 54 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
[718/719] Compiling RediStack SortedSetCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 74 |     /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
 75 |     public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
 76 |         guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
    |                                                               `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 77 |
 78 |         var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
 82 |             .tryConverting(to: [RESPValue].self)
 83 |             .flatMapThrowing { response in
 84 |                 assert(response.count == channels.count * 2, "Unexpected response size!")
    |                                          `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
 85 |
 86 |                 // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 82 |             .tryConverting(to: [RESPValue].self)
 83 |             .flatMapThrowing { response in
 84 |                 assert(response.count == channels.count * 2, "Unexpected response size!")
    |                                          `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 85 |
 86 |                 // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 |         assert(count >= 0, "A negative max count is nonsense.")
151 |
152 |         guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                      `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 |         let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 |     /// - Returns: The elements randomly selected from the set.
191 |     public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 |         guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                       `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 |         let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 |     /// - Returns: A list of elements resulting from the difference.
298 |     public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 |     /// - Returns: A list of elements resulting from the intersection.
373 |     public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 |     /// - Returns: A list of elements resulting from the union.
448 |     public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 605 |
 606 |         if let c = count {
 607 |             guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
     |                                                       `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 608 |
 609 |             args.append(.init(bulk: c))
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:121:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
119 | extension RedisSetCommandCondition {
120 |     /// No condition is required to be met in order to set the key's value.
121 |     public static let none = RedisSetCommandCondition(.none)
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
122 |
123 |     /// Only set the key if it already exists.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:126:23: warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
124 |     ///
125 |     /// Redis documentation refers to this as the option "XX".
126 |     public static let keyExists = RedisSetCommandCondition(.keyExists)
    |                       |- warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keyExists' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 |     /// Only set the key if it does not already exist.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:131:23: warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
129 |     ///
130 |     /// Redis documentation refers to this as the option "NX".
131 |     public static let keyDoesNotExist = RedisSetCommandCondition(.keyDoesNotExist)
    |                       |- warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keyDoesNotExist' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
132 | }
133 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:168:23: warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
135 | ///
136 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
137 | public struct RedisSetCommandExpiration: Hashable {
    |               `- note: consider making struct 'RedisSetCommandExpiration' conform to the 'Sendable' protocol
138 |     private enum Expiration: Hashable {
139 |         case keepExisting
    :
166 |     /// Redis documentation refers to this as "KEEPTTL".
167 |     /// - Important: This is option is only available in Redis 6.0+. An error will be returned if this value is sent in lower versions of Redis.
168 |     public static let keepExisting = RedisSetCommandExpiration(.keepExisting)
    |                       |- warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keepExisting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 |
170 |     /// Expire the key after the given number of seconds.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:52:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 50 |     /// - Returns: The values stored at the keys provided, matching the same order.
 51 |     public func mget(_ keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
 52 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 53 |
 54 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
[719/719] Compiling RediStack StringCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 74 |     /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
 75 |     public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
 76 |         guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
    |                                                               `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 77 |
 78 |         var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
 82 |             .tryConverting(to: [RESPValue].self)
 83 |             .flatMapThrowing { response in
 84 |                 assert(response.count == channels.count * 2, "Unexpected response size!")
    |                                          `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
 85 |
 86 |                 // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 82 |             .tryConverting(to: [RESPValue].self)
 83 |             .flatMapThrowing { response in
 84 |                 assert(response.count == channels.count * 2, "Unexpected response size!")
    |                                          `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 85 |
 86 |                 // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
   |               `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 |     RESPValueConvertible,
25 |     RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 |         assert(count >= 0, "A negative max count is nonsense.")
151 |
152 |         guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                      `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 |         let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 |     /// - Returns: The elements randomly selected from the set.
191 |     public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 |         guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                       `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 |         let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 |     /// - Returns: A list of elements resulting from the difference.
298 |     public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 |     /// - Returns: A list of elements resulting from the intersection.
373 |     public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 |     /// - Returns: A list of elements resulting from the union.
448 |     public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 605 |
 606 |         if let c = count {
 607 |             guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
     |                                                       `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 608 |
 609 |             args.append(.init(bulk: c))
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:121:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
119 | extension RedisSetCommandCondition {
120 |     /// No condition is required to be met in order to set the key's value.
121 |     public static let none = RedisSetCommandCondition(.none)
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
122 |
123 |     /// Only set the key if it already exists.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:126:23: warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
124 |     ///
125 |     /// Redis documentation refers to this as the option "XX".
126 |     public static let keyExists = RedisSetCommandCondition(.keyExists)
    |                       |- warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keyExists' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 |     /// Only set the key if it does not already exist.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:131:23: warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
 99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
    |               `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 |     private enum Condition: String, Hashable {
103 |         case keyExists = "XX"
    :
129 |     ///
130 |     /// Redis documentation refers to this as the option "NX".
131 |     public static let keyDoesNotExist = RedisSetCommandCondition(.keyDoesNotExist)
    |                       |- warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keyDoesNotExist' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
132 | }
133 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:168:23: warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
135 | ///
136 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
137 | public struct RedisSetCommandExpiration: Hashable {
    |               `- note: consider making struct 'RedisSetCommandExpiration' conform to the 'Sendable' protocol
138 |     private enum Expiration: Hashable {
139 |         case keepExisting
    :
166 |     /// Redis documentation refers to this as "KEEPTTL".
167 |     /// - Important: This is option is only available in Redis 6.0+. An error will be returned if this value is sent in lower versions of Redis.
168 |     public static let keepExisting = RedisSetCommandExpiration(.keepExisting)
    |                       |- warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'keepExisting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 |
170 |     /// Expire the key after the given number of seconds.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:52:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 50 |     /// - Returns: The values stored at the keys provided, matching the same order.
 51 |     public func mget(_ keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
 52 |         guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
    |                                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 53 |
 54 |         let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
[720/728] Emitting module RedisTypes
[721/728] Compiling RedisTypes RedisSet.swift
/Users/admin/builder/spi-builder-workspace/Sources/RedisTypes/RedisSet.swift:199:62: warning: type 'Element' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
 57 | ///
 58 | /// See [https://redis.io/topics/data-types-intro#sets](https://redis.io/topics/data-types-intro#sets)
 59 | public struct RedisSet<Element> where Element: RESPValueConvertible {
    |                        `- note: consider making generic parameter 'Element' conform to the 'Sendable' protocol
 60 |     /// The key in Redis that this instance is a reference to.
 61 |     public var identifier: RedisKey { self.id }
    :
197 |     public func popRandomElements(max count: Int) -> EventLoopFuture<[Element]> {
198 |         guard count >= 0 else { return self.client.eventLoop.makeFailedFuture(RedisError.indexOutOfRange) }
199 |         guard count >= 1 else { return self.client.eventLoop.makeSucceededFuture([]) }
    |                                                              `- warning: type 'Element' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
200 |         return self.client.spop(from: self.id, max: count)
201 |             .map { $0.compactMap(Element.init) }
[722/728] Compiling RediStackTestUtils _Deprecations.swift
[723/728] Compiling RediStackTestUtils RedisIntegrationTestCase.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisIntegrationTestCase.swift:69:37: warning: capture of 'self' with non-sendable type 'RedisIntegrationTestCase' in a '@Sendable' closure
21 | ///
22 | /// See `RedisConnection.make(configuration:boundEventLoop:)` to understand how connections are made.
23 | open class RedisIntegrationTestCase: XCTestCase {
   |            `- note: class 'RedisIntegrationTestCase' does not conform to the 'Sendable' protocol
24 |     /// An overridable value of the Redis instance's hostname to connect to for the test suite(s).
25 |     ///
   :
67 |             if self.connection.isConnected {
68 |                 _ = try self.connection.send(command: "FLUSHALL")
69 |                     .flatMap { _ in self.connection.close() }
   |                                     `- warning: capture of 'self' with non-sendable type 'RedisIntegrationTestCase' in a '@Sendable' closure
70 |                     .wait()
71 |             }
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisIntegrationTestCase.swift:91:11: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
89 |             ),
90 |             boundEventLoop: eventLoopGroup.next()
91 |         ).wait()
   |           `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
92 |     }
93 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
 86 | ///
 87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
 88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
    |                    `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
 89 |     /// A unique identifer to represent this connection.
 90 |     public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisIntegrationTestCase.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
15 | import NIOCore
16 | import NIOPosix
17 | import RediStack
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
18 | import XCTest
19 |
[724/728] Compiling RediStackTestUtils RediStack.swift
[725/728] Emitting module RediStackTestUtils
[726/728] Compiling RediStackTestUtils EmbeddedMockRedisServer.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/EmbeddedMockRedisServer.swift:62:34: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
 60 |             // We always allow this.
 61 |             let response = RESPValue.simpleString("OK".byteBuffer)
 62 |             data.responsePromise.succeed(response)
    |                                  `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
 63 |
 64 |         default:
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/EmbeddedMockRedisServer.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
 15 | import NIOCore
 16 | import NIOEmbedded
 17 | import RediStack
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
 18 | import XCTest
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/EmbeddedMockRedisServer.swift:73:13: warning: capture of 'self' with non-sendable type 'EmbeddedMockRedisServer' in a '@Sendable' closure
 26 | /// This is not really a Redis server: it's just something that lets us stub out the connection management in order to let
 27 | /// us test the connection pool.
 28 | internal final class EmbeddedMockRedisServer {
    |                      `- note: class 'EmbeddedMockRedisServer' does not conform to the 'Sendable' protocol
 29 |     var channels: ArraySlice<EmbeddedChannel> = []
 30 |     var loop: EmbeddedEventLoop = EmbeddedEventLoop()
    :
 71 |         let channel = EmbeddedChannel(handler: GracefulShutdownToCloseHandler(), loop: self.loop)
 72 |         channel.closeFuture.whenComplete { _ in
 73 |             self.channels.removeAll(where: { $0 === channel })
    |             `- warning: capture of 'self' with non-sendable type 'EmbeddedMockRedisServer' in a '@Sendable' closure
 74 |         }
 75 |
[727/728] Compiling RediStackTestUtils General.swift
[728/728] Compiling RediStackTestUtils RedisConnectionPoolIntegrationTestCase.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisConnectionPoolIntegrationTestCase.swift:67:57: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
 65 |     open override func tearDown() {
 66 |         do {
 67 |             _ = try self.pool.send(command: "FLUSHALL").wait()
    |                                                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
 68 |         } catch let err as RedisConnectionPoolError where err == .poolClosed {
 69 |             // Ok, this is fine.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 28 | ///
 29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
 30 | public enum RESPValue {
    |             `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 31 |     case null
 32 |     case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisConnectionPoolIntegrationTestCase.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
 15 | import NIOCore
 16 | import NIOPosix
 17 | import RediStack
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
 18 | import XCTest
 19 |
Build complete! (33.18s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-atomics",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.1.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-atomics.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "swift-metrics",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-metrics.git"
    },
    {
      "identity" : "swift-nio",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.43.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-nio.git"
    },
    {
      "identity" : "swift-nio-ssl",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.23.1",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-nio-ssl.git"
    }
  ],
  "manifest_display_name" : "RediStack",
  "name" : "RediStack",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "RediStack",
      "targets" : [
        "RediStack"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "RediStackTestUtils",
      "targets" : [
        "RediStackTestUtils"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "RedisTypes",
      "targets" : [
        "RedisTypes"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "RedisTypesTests",
      "module_type" : "SwiftTarget",
      "name" : "RedisTypesTests",
      "path" : "Tests/RedisTypesTests",
      "product_dependencies" : [
        "NIO"
      ],
      "sources" : [
        "RedisSetTests.swift",
        "RedisTypesIntegrationTestCase.swift"
      ],
      "target_dependencies" : [
        "RediStack",
        "RedisTypes",
        "RediStackTestUtils"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RedisTypes",
      "module_type" : "SwiftTarget",
      "name" : "RedisTypes",
      "path" : "Sources/RedisTypes",
      "product_memberships" : [
        "RedisTypes"
      ],
      "sources" : [
        "RedisSet.swift"
      ],
      "target_dependencies" : [
        "RediStack"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RediStackTests",
      "module_type" : "SwiftTarget",
      "name" : "RediStackTests",
      "path" : "Tests/RediStackTests",
      "product_dependencies" : [
        "Atomics",
        "NIO",
        "NIOTestUtils"
      ],
      "sources" : [
        "ChannelHandlers/RedisByteDecoderTests.swift",
        "ChannelHandlers/RedisCommandHandlerTests.swift",
        "ChannelHandlers/RedisMessageEncoderTests.swift",
        "Cluster/RedisClusterNodeDescriptionProtocolTests.swift",
        "ConfigurationTests.swift",
        "ConnectionPoolTests.swift",
        "Helpers/MockNodeDescription.swift",
        "Helpers/RedisErrorTests.swift",
        "RESPTranslatorTests.swift",
        "RESPValueTests.swift",
        "RedisCommandEncoderTests.swift",
        "RedisConnection+ConfigurationTests.swift",
        "RedisConnectionTests.swift",
        "RedisHashSlotTests.swift",
        "RedisKeyLifetime.swift"
      ],
      "target_dependencies" : [
        "RediStack",
        "RediStackTestUtils"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RediStackTestUtils",
      "module_type" : "SwiftTarget",
      "name" : "RediStackTestUtils",
      "path" : "Sources/RediStackTestUtils",
      "product_dependencies" : [
        "NIOCore",
        "NIOEmbedded"
      ],
      "product_memberships" : [
        "RediStackTestUtils"
      ],
      "sources" : [
        "EmbeddedMockRedisServer.swift",
        "Extensions/General.swift",
        "Extensions/RediStack.swift",
        "RedisConnectionPoolIntegrationTestCase.swift",
        "RedisIntegrationTestCase.swift",
        "_Deprecations.swift"
      ],
      "target_dependencies" : [
        "RediStack"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RediStackIntegrationTests",
      "module_type" : "SwiftTarget",
      "name" : "RediStackIntegrationTests",
      "path" : "Tests/RediStackIntegrationTests",
      "product_dependencies" : [
        "NIO"
      ],
      "sources" : [
        "Commands/BasicCommandsTests.swift",
        "Commands/HashCommandsTests.swift",
        "Commands/ListCommandsTests.swift",
        "Commands/PubSubCommandsTests.swift",
        "Commands/SetCommandsTests.swift",
        "Commands/SortedSetCommandsTests.swift",
        "Commands/StringCommandsTests.swift",
        "RediStackIntegrationTestCase.swift",
        "RedisConnectionPoolTests.swift",
        "RedisConnectionTests.swift",
        "RedisLoggingTests.swift"
      ],
      "target_dependencies" : [
        "RediStack",
        "RediStackTestUtils"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RediStack",
      "module_type" : "SwiftTarget",
      "name" : "RediStack",
      "path" : "Sources/RediStack",
      "product_dependencies" : [
        "NIOCore",
        "NIOPosix",
        "NIO",
        "NIOConcurrencyHelpers",
        "NIOSSL",
        "Atomics",
        "Logging",
        "Metrics"
      ],
      "product_memberships" : [
        "RediStack",
        "RediStackTestUtils",
        "RedisTypes"
      ],
      "sources" : [
        "ChannelHandlers/RedisByteDecoder.swift",
        "ChannelHandlers/RedisCommandHandler.swift",
        "ChannelHandlers/RedisMessageEncoder.swift",
        "ChannelHandlers/RedisPubSubHandler.swift",
        "Cluster/RedisClusterNodeDescriptionProtocol.swift",
        "Cluster/RedisClusterNodeID.swift",
        "Cluster/RedisClusterShardDescriptionProtocol.swift",
        "Cluster/RedisHashSlot.swift",
        "Cluster/SwiftPolyfill.swift",
        "Commands/BasicCommands.swift",
        "Commands/HashCommands.swift",
        "Commands/ListCommands.swift",
        "Commands/PubSubCommands.swift",
        "Commands/SetCommands.swift",
        "Commands/SortedSetCommands.swift",
        "Commands/StringCommands.swift",
        "ConnectionPool/ConnectionPool.swift",
        "ConnectionPool/RedisConnectionPool+Configuration.swift",
        "ConnectionPool/RedisConnectionPool.swift",
        "ConnectionPool/RedisConnectionPoolError.swift",
        "Extensions/StandardLibrary.swift",
        "Extensions/SwiftNIO.swift",
        "RESP/RESPTranslator.swift",
        "RESP/RESPValue.swift",
        "RESP/RESPValueConvertible.swift",
        "RedisChannelName.swift",
        "RedisClient.swift",
        "RedisCommandEncoder-multi-encode.swift",
        "RedisCommandEncoder.swift",
        "RedisConnection+Configuration.swift",
        "RedisConnection.swift",
        "RedisError.swift",
        "RedisKey+TTL.swift",
        "RedisKey.swift",
        "RedisLogging.swift",
        "RedisMetrics.swift",
        "_Deprecations.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RESP3Tests",
      "module_type" : "SwiftTarget",
      "name" : "RESP3Tests",
      "path" : "Tests/RESP3Tests",
      "product_dependencies" : [
        "NIOCore",
        "NIOEmbedded",
        "NIOTestUtils"
      ],
      "sources" : [
        "RESP3TokenTests.swift"
      ],
      "target_dependencies" : [
        "RESP3"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RESP3",
      "module_type" : "SwiftTarget",
      "name" : "RESP3",
      "path" : "Sources/RESP3",
      "product_dependencies" : [
        "NIOCore"
      ],
      "sources" : [
        "RESP3Error.swift",
        "RESP3Token.swift",
        "RESP3TokenDecoder.swift",
        "RESP3TypeIdentifier.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.6"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/swift-server/redistack/main
Repository:               swift-server/RediStack
Swift version used:       6.1
Target:                   RediStack
Extracting symbol information for 'RediStack'...
Finished extracting symbol information for 'RediStack'. (11.51s)
Building documentation for 'RediStack'...
Finished building documentation for 'RediStack' (0.92s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/swift-server/redistack/main
Updating https://github.com/apple/swift-system.git
Updating https://github.com/apple/swift-metrics.git
Updating https://github.com/apple/swift-nio.git
Updating https://github.com/apple/swift-nio-ssl.git
Updating https://github.com/apple/swift-collections.git
Updating https://github.com/apple/swift-log.git
Updating https://github.com/apple/swift-atomics.git
Updated https://github.com/apple/swift-log.git (0.56s)
Updated https://github.com/apple/swift-nio-ssl.git (0.56s)
Updated https://github.com/apple/swift-atomics.git (0.56s)
Updated https://github.com/apple/swift-collections.git (0.56s)
Fetching https://github.com/swiftlang/swift-docc-plugin from cache
Updated https://github.com/apple/swift-metrics.git (0.73s)
Updated https://github.com/apple/swift-nio.git (0.73s)
Updated https://github.com/apple/swift-system.git (0.73s)
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (0.44s)
Computing version for https://github.com/apple/swift-nio-ssl.git
Computed https://github.com/apple/swift-nio-ssl.git at 2.30.0 (1.68s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.82.0 (0.75s)
Computing version for https://github.com/apple/swift-metrics.git
Computed https://github.com/apple/swift-metrics.git at 2.6.1 (0.47s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.3 (0.47s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.2.0 (0.48s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.4.2 (0.45s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.1.4 (0.68s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.3 (0.63s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit from cache
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (0.77s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.39s)
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.4.3
Building for debugging...
[0/8] Write sources
[2/8] Write snippet-extract-tool-entitlement.plist
[4/8] Write swift-version-2F0A5646E1D333AE.txt
[6/53] Compiling SymbolKit Identifier.swift
[7/53] Compiling SymbolKit KindIdentifier.swift
[8/53] Compiling SymbolKit Location.swift
[9/53] Compiling SymbolKit Mutability.swift
[10/57] Emitting module SymbolKit
[11/57] Compiling SymbolKit Mixin+Equals.swift
[12/57] Compiling SymbolKit Mixin+Hash.swift
[13/57] Compiling SymbolKit Mixin.swift
[14/57] Compiling SymbolKit LineList.swift
[15/57] Compiling SymbolKit Position.swift
[16/57] Compiling SymbolKit Names.swift
[17/57] Compiling SymbolKit SPI.swift
[18/57] Compiling SymbolKit Snippet.swift
[19/57] Compiling SymbolKit Extension.swift
[20/57] Compiling SymbolKit DeclarationFragments.swift
[21/57] Compiling SymbolKit Fragment.swift
[22/57] Compiling SymbolKit FragmentKind.swift
[23/57] Compiling SymbolKit FunctionParameter.swift
[24/57] Compiling SymbolKit FunctionSignature.swift
[25/57] Compiling SymbolKit GenericConstraint.swift
[26/57] Compiling SymbolKit GenericParameter.swift
[27/57] Compiling SymbolKit Generics.swift
[28/57] Compiling SymbolKit Namespace.swift
[29/57] Compiling SymbolKit SourceRange.swift
[30/57] Compiling SymbolKit Metadata.swift
[31/57] Compiling SymbolKit Module.swift
[32/57] Compiling SymbolKit OperatingSystem.swift
[33/57] Compiling SymbolKit Platform.swift
[34/57] Compiling SymbolKit SemanticVersion.swift
[35/57] Compiling SymbolKit AccessControl.swift
[36/57] Compiling SymbolKit Availability.swift
[37/57] Compiling SymbolKit AvailabilityItem.swift
[38/57] Compiling SymbolKit Domain.swift
[39/57] Compiling SymbolKit Relationship.swift
[40/57] Compiling SymbolKit RelationshipKind.swift
[41/57] Compiling SymbolKit SourceOrigin.swift
[42/57] Compiling SymbolKit GenericConstraints.swift
[43/57] Compiling SymbolKit Swift.swift
[44/57] Compiling SymbolKit Symbol.swift
[45/57] Compiling SymbolKit SymbolKind.swift
[46/57] Compiling SymbolKit SymbolGraph.swift
[47/57] Compiling SymbolKit GraphCollector.swift
[48/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[49/57] Compiling SymbolKit UnifiedSymbol.swift
[50/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[51/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[52/57] Compiling Snippets Snippet.swift
[53/57] Compiling Snippets SnippetParser.swift
[54/57] Emitting module Snippets
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (5.53s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/58] Compiling Atomics AtomicStorage.swift
[3/58] Compiling Atomics AtomicValue.swift
[4/59] Compiling Logging MetadataProvider.swift
[5/59] Compiling Atomics OptionalRawRepresentable.swift
[6/59] Compiling Atomics RawRepresentable.swift
[7/59] Compiling InternalCollectionsUtilities UnsafeBufferPointer+Extras.swift
[8/59] Compiling Atomics AtomicMemoryOrderings.swift
[9/59] Compiling Atomics DoubleWord.swift
[12/61] Compiling Atomics ManagedAtomic.swift
[13/61] Compiling Atomics ManagedAtomicLazyReference.swift
[14/61] Compiling Atomics UnsafeAtomic.swift
[15/61] Compiling Atomics UnsafeAtomicLazyReference.swift
[20/61] Emitting module _NIOBase64
[21/61] Compiling _NIOBase64 Base64.swift
[22/61] Compiling InternalCollectionsUtilities UnsafeMutableBufferPointer+Extras.swift
[23/61] Compiling NIOConcurrencyHelpers NIOLock.swift
[24/61] Compiling Atomics AtomicBool.swift
[25/61] Compiling Atomics IntegerConformances.swift
[26/61] Compiling Atomics PointerConformances.swift
[27/61] Compiling Atomics Primitives.native.swift
[28/61] Compiling _NIODataStructures Heap.swift
[29/61] Compiling _NIODataStructures PriorityQueue.swift
[30/61] Compiling NIOConcurrencyHelpers NIOAtomic.swift
[31/61] Compiling Atomics IntegerOperations.swift
[32/61] Compiling Atomics Unmanaged extensions.swift
[33/61] Compiling _NIODataStructures _TinyArray.swift
[34/61] Emitting module _NIODataStructures
[35/61] Compiling NIOConcurrencyHelpers lock.swift
[36/61] Emitting module NIOConcurrencyHelpers
[37/61] Compiling NIOConcurrencyHelpers NIOLockedValueBox.swift
[38/61] Compiling NIOConcurrencyHelpers atomics.swift
[39/61] Compiling Atomics AtomicOptionalWrappable.swift
[40/61] Compiling Atomics AtomicReference.swift
[41/61] Compiling Atomics Primitives.shims.swift
[42/61] Compiling Atomics AtomicInteger.swift
[43/61] Emitting module InternalCollectionsUtilities
[44/61] Compiling CoreMetrics Locks.swift
[45/61] Emitting module CoreMetrics
[46/61] Compiling CoreMetrics Metrics.swift
[53/61] Compiling Logging Locks.swift
[54/61] Compiling Logging LogHandler.swift
[55/61] Emitting module Logging
[56/61] Compiling Logging Logging.swift
[61/79] Compiling DequeModule _DequeBufferHeader.swift
[62/79] Compiling DequeModule _DequeSlot.swift
[63/80] Emitting module Metrics
[64/80] Compiling Metrics Metrics.swift
[65/80] Emitting module Atomics
[66/80] Compiling DequeModule _UnsafeWrappedBuffer.swift
[67/80] Compiling DequeModule _DequeBuffer.swift
[68/80] Compiling DequeModule Deque._UnsafeHandle.swift
[69/80] Compiling DequeModule Deque.swift
[70/80] Compiling DequeModule Deque+Equatable.swift
[71/80] Compiling DequeModule Deque+ExpressibleByArrayLiteral.swift
[72/80] Compiling DequeModule Deque+Extras.swift
[73/80] Compiling DequeModule Deque+Hashable.swift
[74/80] Compiling DequeModule Deque+Testing.swift
[75/80] Compiling DequeModule Deque._Storage.swift
[76/80] Compiling DequeModule Deque+Codable.swift
[77/80] Compiling DequeModule Deque+Collection.swift
[78/80] Compiling DequeModule Deque+CustomReflectable.swift
[79/80] Compiling DequeModule Deque+Descriptions.swift
[80/80] Emitting module DequeModule
[81/141] Compiling NIOCore Interfaces.swift
[82/141] Compiling NIOCore Linux.swift
[83/141] Compiling NIOCore MarkedCircularBuffer.swift
[84/141] Compiling NIOCore MulticastChannel.swift
[85/141] Compiling NIOCore NIOAny.swift
[86/141] Compiling NIOCore NIOCloseOnErrorHandler.swift
[87/147] Compiling NIOCore NIOLoopBound.swift
[88/147] Compiling NIOCore NIOScheduledCallback.swift
[89/147] Compiling NIOCore NIOSendable.swift
[90/147] Compiling NIOCore RecvByteBufferAllocator.swift
[91/147] Compiling NIOCore SingleStepByteToMessageDecoder.swift
[92/147] Compiling NIOCore SocketAddresses.swift
[93/147] Compiling NIOCore AddressedEnvelope.swift
[94/147] Compiling NIOCore AsyncAwaitSupport.swift
[95/147] Compiling NIOCore AsyncChannel.swift
[96/147] Compiling NIOCore AsyncChannelHandler.swift
[97/147] Compiling NIOCore AsyncChannelInboundStream.swift
[98/147] Compiling NIOCore AsyncChannelOutboundWriter.swift
[99/147] Compiling NIOCore NIOAsyncSequenceProducer.swift
[100/147] Compiling NIOCore Codec.swift
[101/147] Compiling NIOCore ConvenienceOptionSupport.swift
[102/147] Compiling NIOCore DeadChannel.swift
[103/147] Compiling NIOCore DispatchQueue+WithFuture.swift
[104/147] Compiling NIOCore EventLoop+Deprecated.swift
[105/147] Compiling NIOCore EventLoop+SerialExecutor.swift
[106/147] Compiling NIOCore EventLoop.swift
[107/147] Compiling NIOCore NIOAsyncSequenceProducerStrategies.swift
[108/147] Compiling NIOCore NIOAsyncWriter.swift
[109/147] Compiling NIOCore NIOThrowingAsyncSequenceProducer.swift
[110/147] Compiling NIOCore BSDSocketAPI.swift
[111/147] Compiling NIOCore ByteBuffer-aux.swift
[112/147] Compiling NIOCore ByteBuffer-binaryEncodedLengthPrefix.swift
[113/147] Compiling NIOCore ByteBuffer-conversions.swift
[114/147] Compiling NIOCore SocketOptionProvider.swift
[115/147] Compiling NIOCore SystemCallHelpers.swift
[116/147] Compiling NIOCore TimeAmount+Duration.swift
[117/147] Compiling NIOCore TypeAssistedChannelHandler.swift
[118/147] Compiling NIOCore UniversalBootstrapSupport.swift
[119/147] Compiling NIOCore Utilities.swift
[120/147] Compiling NIOCore GlobalSingletons.swift
[121/147] Compiling NIOCore IO.swift
[122/147] Compiling NIOCore IOData.swift
[123/147] Compiling NIOCore IPProtocol.swift
[124/147] Compiling NIOCore IntegerBitPacking.swift
[125/147] Compiling NIOCore IntegerTypes.swift
[126/147] Compiling NIOCore Channel.swift
[127/147] Compiling NIOCore ChannelHandler.swift
[128/147] Compiling NIOCore ChannelHandlers.swift
[129/147] Compiling NIOCore ChannelInvoker.swift
[130/147] Compiling NIOCore ChannelOption.swift
[131/147] Compiling NIOCore ChannelPipeline.swift
[132/147] Compiling NIOCore CircularBuffer.swift
[133/147] Compiling NIOCore EventLoopFuture+AssumeIsolated.swift
[134/147] Compiling NIOCore EventLoopFuture+Deprecated.swift
[135/147] Compiling NIOCore EventLoopFuture+WithEventLoop.swift
[136/147] Compiling NIOCore EventLoopFuture.swift
[137/147] Compiling NIOCore FileDescriptor.swift
[138/147] Compiling NIOCore FileHandle.swift
[139/147] Compiling NIOCore FileRegion.swift
[140/147] Compiling NIOCore ByteBuffer-core.swift
[141/147] Compiling NIOCore ByteBuffer-hex.swift
[142/147] Compiling NIOCore ByteBuffer-int.swift
[143/147] Compiling NIOCore ByteBuffer-lengthPrefix.swift
[144/147] Compiling NIOCore ByteBuffer-multi-int.swift
[145/147] Compiling NIOCore ByteBuffer-quicBinaryEncodingStrategy.swift
[146/147] Compiling NIOCore ByteBuffer-views.swift
[147/147] Emitting module NIOCore
[148/200] Compiling NIOEmbedded Embedded.swift
[149/200] Compiling NIOEmbedded AsyncTestingChannel.swift
[150/200] Emitting module NIOEmbedded
[151/200] Compiling NIOEmbedded AsyncTestingEventLoop.swift
[152/200] Compiling NIOPosix SocketProtocols.swift
[153/200] Compiling NIOPosix System.swift
[154/200] Compiling NIOPosix Thread.swift
[155/200] Compiling NIOPosix ThreadPosix.swift
[156/200] Compiling NIOPosix ThreadWindows.swift
[157/200] Compiling NIOPosix LinuxCPUSet.swift
[158/200] Compiling NIOPosix LinuxUring.swift
[159/200] Compiling NIOPosix MultiThreadedEventLoopGroup.swift
[160/200] Compiling NIOPosix NIOThreadPool.swift
[161/200] Compiling NIOPosix NonBlockingFileIO.swift
[162/205] Compiling NIOPosix BSDSocketAPICommon.swift
[163/205] Compiling NIOPosix BSDSocketAPIPosix.swift
[164/205] Compiling NIOPosix BSDSocketAPIWindows.swift
[165/205] Compiling NIOPosix BaseSocket.swift
[166/205] Compiling NIOPosix BaseSocketChannel+SocketOptionProvider.swift
[167/205] Compiling NIOPosix BaseSocketChannel.swift
[168/205] Compiling NIOPosix PooledRecvBufferAllocator.swift
[169/205] Compiling NIOPosix PosixSingletons+ConcurrencyTakeOver.swift
[170/205] Compiling NIOPosix PosixSingletons.swift
[171/205] Compiling NIOPosix RawSocketBootstrap.swift
[172/205] Compiling NIOPosix Resolver.swift
[173/205] Compiling NIOPosix SelectorKqueue.swift
[174/205] Compiling NIOPosix SelectorUring.swift
[175/205] Compiling NIOPosix ServerSocket.swift
[176/205] Compiling NIOPosix Socket.swift
[177/205] Compiling NIOPosix SocketChannel.swift
[178/205] Compiling NIOPosix PendingDatagramWritesManager.swift
[179/205] Compiling NIOPosix PendingWritesManager.swift
[180/205] Compiling NIOPosix PipeChannel.swift
[181/205] Compiling NIOPosix PipePair.swift
[182/205] Compiling NIOPosix Pool.swift
[183/205] Compiling NIOPosix GetaddrinfoResolver.swift
[184/205] Compiling NIOPosix HappyEyeballs.swift
[185/205] Compiling NIOPosix IO.swift
[186/205] Compiling NIOPosix IntegerBitPacking.swift
[187/205] Compiling NIOPosix IntegerTypes.swift
[188/205] Compiling NIOPosix Linux.swift
[189/205] Compiling NIOPosix BaseStreamSocketChannel.swift
[190/205] Compiling NIOPosix Bootstrap.swift
[191/205] Compiling NIOPosix ControlMessage.swift
[192/205] Compiling NIOPosix DatagramVectorReadManager.swift
[193/205] Compiling NIOPosix Errors+Any.swift
[194/205] Compiling NIOPosix FileDescriptor.swift
[195/205] Compiling NIOPosix Selectable.swift
[196/205] Compiling NIOPosix SelectableChannel.swift
[197/205] Compiling NIOPosix SelectableEventLoop.swift
[198/205] Compiling NIOPosix SelectorEpoll.swift
[199/205] Compiling NIOPosix SelectorGeneric.swift
[200/205] Emitting module NIOPosix
[201/205] Compiling NIOPosix UnsafeTransfer.swift
[202/205] Compiling NIOPosix Utilities.swift
[203/205] Compiling NIOPosix VsockAddress.swift
[204/205] Compiling NIOPosix VsockChannelEvents.swift
[205/205] Compiling NIOPosix resource_bundle_accessor.swift
[206/207] Compiling NIO Exports.swift
[207/207] Emitting module NIO
[208/213] Compiling NIOTLS TLSEvents.swift
[209/213] Compiling NIOTLS ProtocolNegotiationHandlerStateMachine.swift
[210/213] Compiling NIOTLS NIOTypedApplicationProtocolNegotiationHandler.swift
[211/213] Compiling NIOTLS ApplicationProtocolNegotiationHandler.swift
[212/213] Compiling NIOTLS SNIHandler.swift
[213/213] Emitting module NIOTLS
[214/243] Compiling NIOSSL SSLPublicKey.swift
[215/243] Compiling NIOSSL SecurityFrameworkCertificateVerification.swift
[216/243] Compiling NIOSSL String+unsafeUninitializedCapacity.swift
[217/246] Compiling NIOSSL NIOSSLServerHandler.swift
[218/246] Compiling NIOSSL ObjectIdentifier.swift
[219/246] Compiling NIOSSL PosixPort.swift
[220/246] Compiling NIOSSL SSLInit.swift
[221/246] Compiling NIOSSL SSLPKCS12Bundle.swift
[222/246] Compiling NIOSSL SSLPrivateKey.swift
[223/246] Compiling NIOSSL LinuxCABundle.swift
[224/246] Compiling NIOSSL NIOSSLClientHandler.swift
[225/246] Compiling NIOSSL NIOSSLHandler+Configuration.swift
[226/246] Compiling NIOSSL NIOSSLHandler.swift
[227/246] Emitting module NIOSSL
[228/246] Compiling NIOSSL SubjectAlternativeName.swift
[229/246] Compiling NIOSSL NIOSSLSecureBytes.swift
[230/246] Compiling NIOSSL RNG.swift
[231/246] Compiling NIOSSL AndroidCABundle.swift
[232/246] Compiling NIOSSL ByteBufferBIO.swift
[233/246] Compiling NIOSSL CustomPrivateKey.swift
[234/246] Compiling NIOSSL IdentityVerification.swift
[235/246] Compiling NIOSSL SSLCallbacks.swift
[236/246] Compiling NIOSSL SSLCertificate.swift
[237/246] Compiling NIOSSL SSLCertificateExtensions.swift
[238/246] Compiling NIOSSL SafeCompare.swift
[239/246] Compiling NIOSSL Zeroization.swift
[240/246] Compiling NIOSSL TLSConfiguration.swift
[241/246] Compiling NIOSSL UniversalBootstrapSupport.swift
[242/246] Compiling NIOSSL UnsafeKeyAndChainTarget.swift
[243/246] Compiling NIOSSL resource_bundle_accessor.swift
[244/246] Compiling NIOSSL SSLConnection.swift
[245/246] Compiling NIOSSL SSLContext.swift
[246/246] Compiling NIOSSL SSLErrors.swift
[247/281] Compiling RediStack RedisError.swift
[248/281] Compiling RediStack RedisKey+TTL.swift
[249/281] Compiling RediStack RedisKey.swift
[250/284] Compiling RediStack RedisCommandEncoder.swift
[251/284] Compiling RediStack RedisConnection+Configuration.swift
[252/284] Compiling RediStack RedisConnection.swift
[253/284] Compiling RediStack RedisByteDecoder.swift
[254/284] Compiling RediStack RedisCommandHandler.swift
[255/284] Compiling RediStack RedisMessageEncoder.swift
[256/284] Compiling RediStack RedisPubSubHandler.swift
[257/284] Emitting module RediStack
[258/284] Compiling RediStack RedisClusterNodeDescriptionProtocol.swift
[259/284] Compiling RediStack RedisClusterNodeID.swift
[260/284] Compiling RediStack RedisClusterShardDescriptionProtocol.swift
[261/284] Compiling RediStack RedisHashSlot.swift
[262/284] Compiling RediStack RESPValueConvertible.swift
[263/284] Compiling RediStack RedisChannelName.swift
[264/284] Compiling RediStack RedisClient.swift
[265/284] Compiling RediStack RedisCommandEncoder-multi-encode.swift
[266/284] Compiling RediStack ConnectionPool.swift
[267/284] Compiling RediStack RedisConnectionPool+Configuration.swift
[268/284] Compiling RediStack RedisConnectionPool.swift
[269/284] Compiling RediStack RedisConnectionPoolError.swift
[270/284] Compiling RediStack StandardLibrary.swift
[271/284] Compiling RediStack SwiftNIO.swift
[272/284] Compiling RediStack RESPTranslator.swift
[273/284] Compiling RediStack RESPValue.swift
[274/284] Compiling RediStack SwiftPolyfill.swift
[275/284] Compiling RediStack BasicCommands.swift
[276/284] Compiling RediStack HashCommands.swift
[277/284] Compiling RediStack ListCommands.swift
[278/284] Compiling RediStack RedisLogging.swift
[279/284] Compiling RediStack RedisMetrics.swift
[280/284] Compiling RediStack _Deprecations.swift
[281/284] Compiling RediStack PubSubCommands.swift
[282/284] Compiling RediStack SetCommands.swift
[283/284] Compiling RediStack SortedSetCommands.swift
[284/284] Compiling RediStack StringCommands.swift
Build of target: 'RediStack' complete! (9.28s)
Target:                   RedisTypes
Extracting symbol information for 'RedisTypes'...
Finished extracting symbol information for 'RedisTypes'. (2.43s)
Building documentation for 'RedisTypes'...
Finished building documentation for 'RedisTypes' (0.06s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/swift-server/redistack/main
Building for debugging...
[0/3] Write swift-version-2F0A5646E1D333AE.txt
Build of product 'snippet-extract' complete! (1.92s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/3] Compiling RedisTypes RedisSet.swift
[3/3] Emitting module RedisTypes
Build of target: 'RedisTypes' complete! (2.31s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/swift-server/redistack/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/swift-server/redistack/main/linkable-paths.json
Target:                   RediStackTestUtils
Extracting symbol information for 'RediStackTestUtils'...
Finished extracting symbol information for 'RediStackTestUtils'. (4.34s)
Building documentation for 'RediStackTestUtils'...
Finished building documentation for 'RediStackTestUtils' (0.06s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/swift-server/redistack/main
Building for debugging...
[0/3] Write swift-version-2F0A5646E1D333AE.txt
Build of product 'snippet-extract' complete! (1.94s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/8] Compiling RediStackTestUtils EmbeddedMockRedisServer.swift
[3/8] Compiling RediStackTestUtils _Deprecations.swift
[4/8] Compiling RediStackTestUtils RedisConnectionPoolIntegrationTestCase.swift
[5/8] Emitting module RediStackTestUtils
[6/8] Compiling RediStackTestUtils RediStack.swift
[7/8] Compiling RediStackTestUtils General.swift
[8/8] Compiling RediStackTestUtils RedisIntegrationTestCase.swift
Build of target: 'RediStackTestUtils' complete! (2.54s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/swift-server/redistack/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/swift-server/redistack/main/linkable-paths.json
    2604
18	/Users/admin/builder/spi-builder-workspace/.docs/swift-server/redistack/main
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/swift-server/redistack/main
File count: 2604
Doc size:   18.0MB
Preparing doc bundle ...
Uploading prod-swift-server-redistack-main-464ae8d0.zip to s3://spi-docs-inbox/prod-swift-server-redistack-main-464ae8d0.zip
Copying... [10%]
Copying... [21%]
Copying... [31%]
Copying... [41%]
Copying... [52%]
Copying... [60%]
Copying... [70%]
Copying... [81%]
Copying... [91%]
Copying... [100%]
Done.