The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of RediStack, reference main (a05d4b), with Swift 6.1 for macOS (SPM) on 30 Jul 2025 13:38:25 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

    |                      `- 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>
    :
206 |
207 |         self.loop.scheduleTask(in: delay) {
208 |             self.connectionFactory(self.loop)
    |             `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
209 |                 .whenComplete { result in
210 |                     self.loop.preconditionInEventLoop()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:210:21: warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
 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>
    :
208 |             self.connectionFactory(self.loop)
209 |                 .whenComplete { result in
210 |                     self.loop.preconditionInEventLoop()
    |                     `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
211 |
212 |                     self.pendingConnectionCount -= 1
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:251:64: warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
 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>
    :
249 |             // Great, we want this. We'll be "returning" it to the pool. First,
250 |             // attach the close callback to it.
251 |             connection.channel.closeFuture.whenComplete { _ in self.poolConnectionClosed(connection, logger: logger) }
    |                                                                `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
252 |             self._returnConnection(connection, logger: logger)
253 |         }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:251:90: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
249 |             // Great, we want this. We'll be "returning" it to the pool. First,
250 |             // attach the close callback to it.
251 |             connection.channel.closeFuture.whenComplete { _ in self.poolConnectionClosed(connection, logger: logger) }
    |                                                                                          `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
252 |             self._returnConnection(connection, logger: logger)
253 |         }
/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/ConnectionPool.swift:483:13: warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
 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>
    :
481 |     private func closeConnectionForShutdown(_ connection: RedisConnection) {
482 |         connection.close().whenComplete { _ in
483 |             self.loop.preconditionInEventLoop()
    |             `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
484 |
485 |             switch self.state {
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:497:55: warning: implicit capture of 'self' requires that 'ConnectionPool' conforms to 'Sendable'; this is an error in the Swift 6 language mode
 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>
    :
495 |                 // The state must not change if we are closing a connection, while we are
496 |                 // closing the pool.
497 |                 preconditionFailure("Invalid state: \(self.state)")
    |                                                       `- warning: implicit capture of 'self' requires that 'ConnectionPool' conforms to 'Sendable'; this is an error in the Swift 6 language mode
498 |             }
499 |         }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:547:70: warning: passing non-sendable parameter 'onTimeout' to function expecting a @Sendable closure
543 |         }
544 |
545 |         mutating func scheduleDeadline(loop: EventLoop, deadline: NIODeadline, _ onTimeout: @escaping () -> Void) {
    |                                                                                  `- note: parameter 'onTimeout' is implicitly non-sendable
546 |             assert(self.timeoutTask == nil)
547 |             self.timeoutTask = loop.scheduleTask(deadline: deadline, onTimeout)
    |                                                                      `- warning: passing non-sendable parameter 'onTimeout' to function expecting a @Sendable closure
548 |         }
549 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:552:25: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
550 |         func succeed(_ connection: RedisConnection) {
551 |             self.timeoutTask?.cancel()
552 |             self.result.succeed(connection)
    |                         `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
553 |         }
554 |
/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:102:13: 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()
    :
100 |     public func activate(logger: Logger? = nil) {
101 |         self.loop.execute {
102 |             self.pool?.activate(logger: self.prepareLoggerForUse(logger))
    |             `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
103 |         }
104 |     }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:115:13: 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()
    :
113 |     public func close(promise: EventLoopPromise<Void>? = nil, logger: Logger? = nil) {
114 |         self.loop.execute {
115 |             self.pool?.close(promise: promise, logger: self.prepareLoggerForUse(logger))
    |             `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
116 |
117 |             self.pubsubConnection = nil
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:164:36: warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
162 |
163 |                 operation(connection)
164 |                     .always { _ in returnConnection(connection, context) }
    |                                    |- warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 |             },
166 |             preferredConnection: nil,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:164:53: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
162 |
163 |                 operation(connection)
164 |                     .always { _ in returnConnection(connection, context) }
    |                                                     `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
165 |             },
166 |             preferredConnection: nil,
/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:198:25: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
196 |
197 |             for request in unbufferedRequests {
198 |                 request.completeWith(self.connectionFactory(self.loop))
    |                         `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
199 |             }
200 |         }
/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:191:13: 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()
    :
189 |
190 |         self.loop.execute {
191 |             self.serverConnectionAddresses.update(newAddresses)
    |             `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
192 |
193 |             // Shiny, we can unbuffer any pending connections and pass them on as they now have somewhere to go.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:249:21: 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()
    :
247 |                 connection.allowSubscriptions = false
248 |                 connection.channel.closeFuture.whenComplete { _ in
249 |                     self.configuration.onUnexpectedConnectionClose?(connection)
    |                     `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
250 |                 }
251 |                 return connection
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:249:21: 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()
    :
247 |                 connection.allowSubscriptions = false
248 |                 connection.channel.closeFuture.whenComplete { _ in
249 |                     self.configuration.onUnexpectedConnectionClose?(connection)
    |                     `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
250 |                 }
251 |                 return connection
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:249:69: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
247 |                 connection.allowSubscriptions = false
248 |                 connection.channel.closeFuture.whenComplete { _ in
249 |                     self.configuration.onUnexpectedConnectionClose?(connection)
    |                                                                     `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
250 |                 }
251 |                 return connection
/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:324:36: warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
322 |                     connection
323 |                     .send(command: command, with: arguments, logger: context)
324 |                     .always { _ in returnConnection(connection, context) }
    |                                    |- warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
325 |             },
326 |             preferredConnection: nil,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:324:53: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
322 |                     connection
323 |                     .send(command: command, with: arguments, logger: context)
324 |                     .always { _ in returnConnection(connection, context) }
    |                                                     `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
325 |             },
326 |             preferredConnection: nil,
/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:429:29: 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()
    :
427 |                         // a "no-op" unsub, so we need to return this connection
428 |                         guard
429 |                             self.pubsubConnection == nil,
    |                             `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
430 |                             self.leasedConnectionCount > 0
431 |                         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:432:25: warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
430 |                             self.leasedConnectionCount > 0
431 |                         else { return }
432 |                         returnConnection(connection, context)
    |                         |- warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
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 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)
[713/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)
[714/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)
[715/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)
[716/719] Compiling RediStack SwiftPolyfill.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/BasicCommands.swift:257:25: warning: type 'T' does not conform to the 'Sendable' protocol
214 |
215 |     @usableFromInline
216 |     internal func _scan<T>(
    |                         `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
217 |         command: String,
218 |         resultType: T.Type = T.self,
    :
255 |             .tryConverting(to: resultType)
256 |
257 |         return position.and(elements)
    |                         `- warning: type 'T' does not conform to the 'Sendable' protocol
258 |     }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 |     /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 |     public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 |         guard fields.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
324 |
325 |         var args: [RESPValue] = [.init(from: key)]
/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 BasicCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/BasicCommands.swift:257:25: warning: type 'T' does not conform to the 'Sendable' protocol
214 |
215 |     @usableFromInline
216 |     internal func _scan<T>(
    |                         `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
217 |         command: String,
218 |         resultType: T.Type = T.self,
    :
255 |             .tryConverting(to: resultType)
256 |
257 |         return position.and(elements)
    |                         `- warning: type 'T' does not conform to the 'Sendable' protocol
258 |     }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 |     /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 |     public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 |         guard fields.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
324 |
325 |         var args: [RESPValue] = [.init(from: key)]
/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 HashCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/BasicCommands.swift:257:25: warning: type 'T' does not conform to the 'Sendable' protocol
214 |
215 |     @usableFromInline
216 |     internal func _scan<T>(
    |                         `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
217 |         command: String,
218 |         resultType: T.Type = T.self,
    :
255 |             .tryConverting(to: resultType)
256 |
257 |         return position.and(elements)
    |                         `- warning: type 'T' does not conform to the 'Sendable' protocol
258 |     }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 |     /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 |     public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 |         guard fields.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
324 |
325 |         var args: [RESPValue] = [.init(from: key)]
/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 ListCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/BasicCommands.swift:257:25: warning: type 'T' does not conform to the 'Sendable' protocol
214 |
215 |     @usableFromInline
216 |     internal func _scan<T>(
    |                         `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
217 |         command: String,
218 |         resultType: T.Type = T.self,
    :
255 |             .tryConverting(to: resultType)
256 |
257 |         return position.and(elements)
    |                         `- warning: type 'T' does not conform to the 'Sendable' protocol
258 |     }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 |     /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 |     public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 |         guard fields.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
324 |
325 |         var args: [RESPValue] = [.init(from: key)]
/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 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 |
[724/728] Compiling RediStackTestUtils RediStack.swift
[725/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 |
[726/728] Compiling RediStackTestUtils General.swift
[727/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 |
[728/728] Emitting module RediStackTestUtils
Build complete! (37.47s)
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
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/swift-docc-render-artifact/.git/
From https://github.com/swiftlang/swift-docc-render-artifact
 * branch            4633b45fc732d8c55568be09dd852f9dc1582c25 -> FETCH_HEAD
HEAD is now at 4633b45 Update the artifact
Cloned https://github.com/swiftlang/swift-docc-render-artifact
Extracting symbol information for 'RediStack'...
Finished extracting symbol information for 'RediStack'. (11.23s)
Building documentation for 'RediStack'...
Finished building documentation for 'RediStack' (0.83s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/swift-server/redistack/main
Updating https://github.com/apple/swift-nio.git
Updating https://github.com/apple/swift-atomics.git
Updating https://github.com/apple/swift-metrics.git
Updating https://github.com/apple/swift-log.git
Updating https://github.com/apple/swift-collections.git
Updating https://github.com/apple/swift-system.git
Updating https://github.com/apple/swift-nio-ssl.git
Updated https://github.com/apple/swift-system.git (0.76s)
Updated https://github.com/apple/swift-collections.git (0.76s)
Updated https://github.com/apple/swift-nio-ssl.git (0.76s)
Updated https://github.com/apple/swift-log.git (0.76s)
Updated https://github.com/apple/swift-atomics.git (0.76s)
Updated https://github.com/apple/swift-metrics.git (0.76s)
Updated https://github.com/apple/swift-nio.git (0.76s)
Fetching https://github.com/swiftlang/swift-docc-plugin from cache
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (0.68s)
Computing version for https://github.com/apple/swift-nio-ssl.git
Computed https://github.com/apple/swift-nio-ssl.git at 2.33.0 (2.08s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.85.0 (0.56s)
Computing version for https://github.com/apple/swift-metrics.git
Computed https://github.com/apple/swift-metrics.git at 2.7.0 (0.44s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.4 (0.44s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.0 (0.45s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.6.1 (0.43s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.2.1 (0.50s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.5 (0.57s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit from cache
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (0.95s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.58s)
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.5
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
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/53] Compiling SymbolKit DeclarationFragments.swift
[11/53] Compiling SymbolKit Fragment.swift
[12/53] Compiling SymbolKit FragmentKind.swift
[13/53] Compiling SymbolKit FunctionParameter.swift
[14/53] Compiling SymbolKit FunctionSignature.swift
[15/57] Compiling SymbolKit SemanticVersion.swift
[16/57] Compiling SymbolKit AccessControl.swift
[17/57] Compiling SymbolKit Availability.swift
[18/57] Compiling SymbolKit AvailabilityItem.swift
[19/57] Compiling SymbolKit Domain.swift
[20/57] Compiling SymbolKit Mixin+Equals.swift
[21/57] Compiling SymbolKit Mixin+Hash.swift
[22/57] Compiling SymbolKit Mixin.swift
[23/57] Compiling SymbolKit LineList.swift
[24/57] Compiling SymbolKit Position.swift
[25/57] Emitting module SymbolKit
[26/57] Compiling SymbolKit Names.swift
[27/57] Compiling SymbolKit SPI.swift
[28/57] Compiling SymbolKit Snippet.swift
[29/57] Compiling SymbolKit Extension.swift
[30/57] Compiling SymbolKit GenericConstraint.swift
[31/57] Compiling SymbolKit GenericParameter.swift
[32/57] Compiling SymbolKit Generics.swift
[33/57] Compiling SymbolKit Namespace.swift
[34/57] Compiling SymbolKit SourceRange.swift
[35/57] Compiling SymbolKit Metadata.swift
[36/57] Compiling SymbolKit Module.swift
[37/57] Compiling SymbolKit OperatingSystem.swift
[38/57] Compiling SymbolKit Platform.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 SnippetParser.swift
[53/57] Compiling Snippets Snippet.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.10s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/54] Compiling InternalCollectionsUtilities Debugging.swift
[3/55] Compiling InternalCollectionsUtilities _UniqueCollection.swift
[4/55] Compiling InternalCollectionsUtilities RandomAccessCollection+Offsets.swift
[5/55] Compiling InternalCollectionsUtilities UnsafeBufferPointer+Extras.swift
[6/55] Compiling InternalCollectionsUtilities Descriptions.swift
[7/55] Compiling Atomics AtomicInteger.swift
[8/55] Compiling Atomics AtomicOptionalWrappable.swift
[9/56] Compiling Logging MetadataProvider.swift
[10/56] Compiling Atomics AtomicValue.swift
[11/56] Compiling Atomics AtomicMemoryOrderings.swift
[12/56] Compiling Atomics DoubleWord.swift
[13/56] Compiling Atomics ManagedAtomic.swift
[14/56] Compiling InternalCollectionsUtilities UnsafeMutableBufferPointer+Extras.swift
[15/56] Compiling _NIODataStructures PriorityQueue.swift
[16/56] Compiling Atomics ManagedAtomicLazyReference.swift
[17/56] Compiling Atomics UnsafeAtomic.swift
[18/56] Compiling Atomics UnsafeAtomicLazyReference.swift
[19/56] Compiling Atomics IntegerOperations.swift
[20/56] Compiling Atomics Unmanaged extensions.swift
[21/56] Compiling NIOConcurrencyHelpers NIOLock.swift
[22/56] Compiling _NIOBase64 Base64.swift
[23/56] Emitting module _NIOBase64
[24/56] Compiling Atomics OptionalRawRepresentable.swift
[25/56] Compiling Atomics RawRepresentable.swift
[26/56] Compiling _NIODataStructures _TinyArray.swift
[27/56] Compiling NIOConcurrencyHelpers lock.swift
[28/56] Compiling _NIODataStructures Heap.swift
[29/56] Compiling NIOConcurrencyHelpers NIOAtomic.swift
[30/56] Compiling NIOConcurrencyHelpers NIOLockedValueBox.swift
[31/56] Compiling NIOConcurrencyHelpers atomics.swift
[32/56] Compiling Atomics AtomicReference.swift
[33/56] Compiling Atomics AtomicStorage.swift
[34/56] Emitting module InternalCollectionsUtilities
[35/56] Emitting module _NIODataStructures
[36/56] Emitting module NIOConcurrencyHelpers
[39/56] Compiling Atomics AtomicBool.swift
[40/56] Compiling Atomics IntegerConformances.swift
[41/56] Compiling Atomics PointerConformances.swift
[42/56] Compiling Atomics Primitives.native.swift
[45/56] Emitting module CoreMetrics
[46/56] Compiling CoreMetrics Metrics.swift
[47/56] Compiling CoreMetrics Locks.swift
[48/74] Compiling DequeModule _DequeBuffer.swift
[49/74] Compiling DequeModule _DequeBufferHeader.swift
[50/74] Compiling DequeModule _DequeSlot.swift
[51/75] Compiling Logging Locks.swift
[52/75] Compiling Logging Logging.swift
[53/75] Emitting module Logging
[54/75] Compiling Logging LogHandler.swift
[55/75] Compiling DequeModule Deque+Equatable.swift
[56/75] Compiling DequeModule Deque+ExpressibleByArrayLiteral.swift
[57/75] Compiling DequeModule Deque+Codable.swift
[58/75] Compiling DequeModule Deque+Collection.swift
[59/75] Compiling DequeModule _UnsafeWrappedBuffer.swift
[60/75] Compiling Metrics Metrics.swift
[61/75] Emitting module Metrics
[62/75] Compiling DequeModule Deque+Testing.swift
[63/75] Compiling DequeModule Deque._Storage.swift
[64/75] Compiling DequeModule Deque+Extras.swift
[65/75] Compiling DequeModule Deque+Hashable.swift
[66/75] Compiling DequeModule Deque._UnsafeHandle.swift
[67/75] Compiling DequeModule Deque.swift
[68/75] Compiling DequeModule Deque+CustomReflectable.swift
[69/75] Compiling DequeModule Deque+Descriptions.swift
[74/75] Emitting module DequeModule
[75/75] Emitting module Atomics
[76/138] Compiling NIOCore AddressedEnvelope.swift
[77/138] Compiling NIOCore AsyncAwaitSupport.swift
[78/138] Compiling NIOCore AsyncChannel.swift
[79/138] Compiling NIOCore AsyncChannelHandler.swift
[80/138] Compiling NIOCore AsyncChannelInboundStream.swift
[81/138] Compiling NIOCore AsyncChannelOutboundWriter.swift
[82/138] Compiling NIOCore NIOAsyncSequenceProducer.swift
[83/144] Compiling NIOCore NIOPooledRecvBufferAllocator.swift
[84/144] Compiling NIOCore NIOScheduledCallback.swift
[85/144] Compiling NIOCore NIOSendable.swift
[86/144] Compiling NIOCore RecvByteBufferAllocator.swift
[87/144] Compiling NIOCore SingleStepByteToMessageDecoder.swift
[88/144] Compiling NIOCore SocketAddresses.swift
[89/144] Compiling NIOCore EventLoopFuture+AssumeIsolated.swift
[90/144] Compiling NIOCore EventLoopFuture+Deprecated.swift
[91/144] Compiling NIOCore EventLoopFuture+WithEventLoop.swift
[92/144] Compiling NIOCore EventLoopFuture.swift
[93/144] Compiling NIOCore FileDescriptor.swift
[94/144] Compiling NIOCore FileHandle.swift
[95/144] Compiling NIOCore FileRegion.swift
[96/144] Compiling NIOCore Linux.swift
[97/144] Compiling NIOCore MarkedCircularBuffer.swift
[98/144] Compiling NIOCore MulticastChannel.swift
[99/144] Compiling NIOCore NIOAny.swift
[100/144] Compiling NIOCore NIOCloseOnErrorHandler.swift
[101/144] Compiling NIOCore NIOCoreSendableMetatype.swift
[102/144] Compiling NIOCore NIOLoopBound.swift
[103/144] Compiling NIOCore Codec.swift
[104/144] Compiling NIOCore ConvenienceOptionSupport.swift
[105/144] Compiling NIOCore DeadChannel.swift
[106/144] Compiling NIOCore DispatchQueue+WithFuture.swift
[107/144] Compiling NIOCore EventLoop+Deprecated.swift
[108/144] Compiling NIOCore EventLoop+SerialExecutor.swift
[109/144] Compiling NIOCore EventLoop.swift
[110/144] Compiling NIOCore NIOAsyncSequenceProducerStrategies.swift
[111/144] Compiling NIOCore NIOAsyncWriter.swift
[112/144] Compiling NIOCore NIOThrowingAsyncSequenceProducer.swift
[113/144] Compiling NIOCore BSDSocketAPI.swift
[114/144] Compiling NIOCore ByteBuffer-aux.swift
[115/144] Compiling NIOCore ByteBuffer-binaryEncodedLengthPrefix.swift
[116/144] Compiling NIOCore ByteBuffer-conversions.swift
[117/144] Compiling NIOCore GlobalSingletons.swift
[118/144] Compiling NIOCore IO.swift
[119/144] Compiling NIOCore IOData.swift
[120/144] Compiling NIOCore IPProtocol.swift
[121/144] Compiling NIOCore IntegerBitPacking.swift
[122/144] Compiling NIOCore IntegerTypes.swift
[123/144] Compiling NIOCore Interfaces.swift
[124/144] Compiling NIOCore SocketOptionProvider.swift
[125/144] Compiling NIOCore SystemCallHelpers.swift
[126/144] Compiling NIOCore TimeAmount+Duration.swift
[127/144] Compiling NIOCore TypeAssistedChannelHandler.swift
[128/144] Compiling NIOCore UniversalBootstrapSupport.swift
[129/144] Compiling NIOCore Utilities.swift
[130/144] Compiling NIOCore Channel.swift
[131/144] Compiling NIOCore ChannelHandler.swift
[132/144] Compiling NIOCore ChannelHandlers.swift
[133/144] Compiling NIOCore ChannelInvoker.swift
[134/144] Compiling NIOCore ChannelOption.swift
[135/144] Compiling NIOCore ChannelPipeline.swift
[136/144] Compiling NIOCore CircularBuffer.swift
[137/144] Compiling NIOCore ByteBuffer-core.swift
[138/144] Compiling NIOCore ByteBuffer-hex.swift
[139/144] Compiling NIOCore ByteBuffer-int.swift
[140/144] Compiling NIOCore ByteBuffer-lengthPrefix.swift
[141/144] Compiling NIOCore ByteBuffer-multi-int.swift
[142/144] Compiling NIOCore ByteBuffer-quicBinaryEncodingStrategy.swift
[143/144] Compiling NIOCore ByteBuffer-views.swift
[144/144] Emitting module NIOCore
[145/198] Compiling NIOEmbedded AsyncTestingEventLoop.swift
[146/198] Emitting module NIOEmbedded
[147/198] Compiling NIOEmbedded Embedded.swift
[148/198] Compiling NIOEmbedded AsyncTestingChannel.swift
[149/198] Compiling NIOPosix StructuredConcurrencyHelpers.swift
[150/198] Compiling NIOPosix System.swift
[151/198] Compiling NIOPosix Thread.swift
[152/198] Compiling NIOPosix ThreadPosix.swift
[153/198] Compiling NIOPosix ThreadWindows.swift
[154/203] Compiling NIOPosix SelectorUring.swift
[155/203] Compiling NIOPosix ServerSocket.swift
[156/203] Compiling NIOPosix Socket.swift
[157/203] Compiling NIOPosix SocketChannel.swift
[158/203] Compiling NIOPosix SocketProtocols.swift
[159/203] Compiling NIOPosix GetaddrinfoResolver.swift
[160/203] Compiling NIOPosix HappyEyeballs.swift
[161/203] Compiling NIOPosix IO.swift
[162/203] Compiling NIOPosix IntegerBitPacking.swift
[163/203] Compiling NIOPosix IntegerTypes.swift
[164/203] Compiling NIOPosix Linux.swift
[165/203] Compiling NIOPosix BSDSocketAPICommon.swift
[166/203] Compiling NIOPosix BSDSocketAPIPosix.swift
[167/203] Compiling NIOPosix BSDSocketAPIWindows.swift
[168/203] Compiling NIOPosix BaseSocket.swift
[169/203] Compiling NIOPosix BaseSocketChannel+SocketOptionProvider.swift
[170/203] Compiling NIOPosix BaseSocketChannel.swift
[171/203] Compiling NIOPosix PosixSingletons+ConcurrencyTakeOver.swift
[172/203] Compiling NIOPosix PosixSingletons.swift
[173/203] Compiling NIOPosix RawSocketBootstrap.swift
[174/203] Compiling NIOPosix Resolver.swift
[175/203] Compiling NIOPosix Selectable.swift
[176/203] Compiling NIOPosix PendingDatagramWritesManager.swift
[177/203] Compiling NIOPosix PendingWritesManager.swift
[178/203] Compiling NIOPosix PipeChannel.swift
[179/203] Compiling NIOPosix PipePair.swift
[180/203] Compiling NIOPosix Pool.swift
[181/203] Compiling NIOPosix LinuxCPUSet.swift
[182/203] Compiling NIOPosix LinuxUring.swift
[183/203] Compiling NIOPosix MultiThreadedEventLoopGroup.swift
[184/203] Compiling NIOPosix NIOPosixSendableMetatype.swift
[185/203] Compiling NIOPosix NIOThreadPool.swift
[186/203] Compiling NIOPosix NonBlockingFileIO.swift
[187/203] Compiling NIOPosix SelectableChannel.swift
[188/203] Compiling NIOPosix SelectableEventLoop.swift
[189/203] Compiling NIOPosix SelectorEpoll.swift
[190/203] Compiling NIOPosix SelectorGeneric.swift
[191/203] Compiling NIOPosix SelectorKqueue.swift
[192/203] Compiling NIOPosix UnsafeTransfer.swift
[193/203] Compiling NIOPosix Utilities.swift
[194/203] Compiling NIOPosix VsockAddress.swift
[195/203] Compiling NIOPosix VsockChannelEvents.swift
[196/203] Compiling NIOPosix resource_bundle_accessor.swift
[197/203] Compiling NIOPosix BaseStreamSocketChannel.swift
[198/203] Compiling NIOPosix Bootstrap.swift
[199/203] Compiling NIOPosix ControlMessage.swift
[200/203] Compiling NIOPosix DatagramVectorReadManager.swift
[201/203] Compiling NIOPosix Errors+Any.swift
[202/203] Compiling NIOPosix FileDescriptor.swift
[203/203] Emitting module NIOPosix
[204/205] Compiling NIO Exports.swift
[205/205] Emitting module NIO
[206/211] Compiling NIOTLS TLSEvents.swift
[207/211] Compiling NIOTLS ProtocolNegotiationHandlerStateMachine.swift
[208/211] Compiling NIOTLS NIOTypedApplicationProtocolNegotiationHandler.swift
[209/211] Emitting module NIOTLS
[210/211] Compiling NIOTLS ApplicationProtocolNegotiationHandler.swift
[211/211] Compiling NIOTLS SNIHandler.swift
[212/242] Compiling NIOSSL SSLInit.swift
[213/242] Compiling NIOSSL SSLPKCS12Bundle.swift
[214/242] Compiling NIOSSL SSLPrivateKey.swift
[215/245] Compiling NIOSSL NIOSSLServerHandler.swift
[216/245] Compiling NIOSSL ObjectIdentifier.swift
[217/245] Compiling NIOSSL PosixPort.swift
[218/245] Compiling NIOSSL SSLCallbacks.swift
[219/245] Compiling NIOSSL AndroidCABundle.swift
[220/245] Compiling NIOSSL ByteBufferBIO.swift
[221/245] Compiling NIOSSL CustomPrivateKey.swift
[222/245] Compiling NIOSSL IdentityVerification.swift
[223/245] Compiling NIOSSL SSLCertificate.swift
[224/245] Compiling NIOSSL SSLCertificateExtensions.swift
[225/245] Compiling NIOSSL SSLCertificateName.swift
[226/245] Compiling NIOSSL SubjectAlternativeName.swift
[227/245] Compiling NIOSSL NIOSSLSecureBytes.swift
[228/245] Compiling NIOSSL RNG.swift
[229/245] Emitting module NIOSSL
[230/245] Compiling NIOSSL LinuxCABundle.swift
[231/245] Compiling NIOSSL NIOSSLClientHandler.swift
[232/245] Compiling NIOSSL NIOSSLHandler+Configuration.swift
[233/245] Compiling NIOSSL NIOSSLHandler.swift
[234/245] Compiling NIOSSL SafeCompare.swift
[235/245] Compiling NIOSSL Zeroization.swift
[236/245] Compiling NIOSSL TLSConfiguration.swift
[237/245] Compiling NIOSSL SSLPublicKey.swift
[238/245] Compiling NIOSSL SecurityFrameworkCertificateVerification.swift
[239/245] Compiling NIOSSL String+unsafeUninitializedCapacity.swift
[240/245] Compiling NIOSSL UniversalBootstrapSupport.swift
[241/245] Compiling NIOSSL UnsafeKeyAndChainTarget.swift
[242/245] Compiling NIOSSL resource_bundle_accessor.swift
[243/245] Compiling NIOSSL SSLConnection.swift
[244/245] Compiling NIOSSL SSLContext.swift
[245/245] Compiling NIOSSL SSLErrors.swift
[246/280] Compiling RediStack RedisError.swift
[247/280] Compiling RediStack RedisKey+TTL.swift
[248/280] Compiling RediStack RedisKey.swift
[249/280] Compiling RediStack RedisCommandEncoder.swift
[250/280] Compiling RediStack RedisConnection+Configuration.swift
[251/280] Compiling RediStack RedisConnection.swift
[252/283] Emitting module RediStack
[253/283] Compiling RediStack RESPValueConvertible.swift
[254/283] Compiling RediStack RedisChannelName.swift
[255/283] Compiling RediStack RedisClient.swift
[256/283] Compiling RediStack RedisCommandEncoder-multi-encode.swift
[257/283] Compiling RediStack StandardLibrary.swift
[258/283] Compiling RediStack SwiftNIO.swift
[259/283] Compiling RediStack RESPTranslator.swift
[260/283] Compiling RediStack RESPValue.swift
[261/283] Compiling RediStack RedisClusterNodeDescriptionProtocol.swift
[262/283] Compiling RediStack RedisClusterNodeID.swift
[263/283] Compiling RediStack RedisClusterShardDescriptionProtocol.swift
[264/283] Compiling RediStack RedisHashSlot.swift
[265/283] Compiling RediStack ConnectionPool.swift
[266/283] Compiling RediStack RedisConnectionPool+Configuration.swift
[267/283] Compiling RediStack RedisConnectionPool.swift
[268/283] Compiling RediStack RedisConnectionPoolError.swift
[269/283] Compiling RediStack RedisByteDecoder.swift
[270/283] Compiling RediStack RedisCommandHandler.swift
[271/283] Compiling RediStack RedisMessageEncoder.swift
[272/283] Compiling RediStack RedisPubSubHandler.swift
[273/283] Compiling RediStack SwiftPolyfill.swift
[274/283] Compiling RediStack BasicCommands.swift
[275/283] Compiling RediStack HashCommands.swift
[276/283] Compiling RediStack ListCommands.swift
[277/283] Compiling RediStack PubSubCommands.swift
[278/283] Compiling RediStack SetCommands.swift
[279/283] Compiling RediStack SortedSetCommands.swift
[280/283] Compiling RediStack StringCommands.swift
[281/283] Compiling RediStack RedisLogging.swift
[282/283] Compiling RediStack RedisMetrics.swift
[283/283] Compiling RediStack _Deprecations.swift
Build of target: 'RediStack' complete! (9.05s)
Target:                   RedisTypes
Extracting symbol information for 'RedisTypes'...
Finished extracting symbol information for 'RedisTypes'. (2.35s)
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.85s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/3] Emitting module RedisTypes
[3/3] Compiling RedisTypes RedisSet.swift
Build of target: 'RedisTypes' complete! (2.21s)
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'. (3.92s)
Building documentation for 'RediStackTestUtils'...
Finished building documentation for 'RediStackTestUtils' (0.05s)
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.78s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/8] Compiling RediStackTestUtils _Deprecations.swift
[3/8] Compiling RediStackTestUtils RedisIntegrationTestCase.swift
[4/8] Compiling RediStackTestUtils RediStack.swift
[5/8] Compiling RediStackTestUtils General.swift
[6/8] Compiling RediStackTestUtils EmbeddedMockRedisServer.swift
[7/8] Compiling RediStackTestUtils RedisConnectionPoolIntegrationTestCase.swift
[8/8] Emitting module RediStackTestUtils
Build of target: 'RediStackTestUtils' complete! (2.28s)
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-c4f83f1f.zip to s3://spi-docs-inbox/prod-swift-server-redistack-main-c4f83f1f.zip
Copying... [10%]
Copying... [21%]
Copying... [31%]
Copying... [41%]
Copying... [52%]
Copying... [60%]
Copying... [70%]
Copying... [81%]
Copying... [91%]
Copying... [100%]
Done.