The Swift Package Index logo.Swift Package Index

Build Information

Successful build of RediStack, reference main (6dbee5), with Swift 6.1 for Android on 18 Feb 2026 12:24:00 UTC.

Swift 6 data race errors: 7

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-2":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 -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 2>&1

Build Log

    |                              `- warning: type 'T' does not conform to the 'Sendable' protocol
452 |                 self.forwardOperationToConnection(
453 |                     operation,
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:475:18: warning: type 'T' does not conform to the 'Sendable' protocol
440 |
441 |     @usableFromInline
442 |     internal func forwardOperationToConnection<T>(
    |                                                `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
443 |         _ operation:
444 |             @escaping (RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) ->
    :
473 |                     logger: logger
474 |                 )
475 |                 .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
    |                  `- warning: type 'T' does not conform to the 'Sendable' protocol
476 |         }
477 |
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:452: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()
    :
450 |         guard self.loop.inEventLoop else {
451 |             return self.loop.flatSubmit {
452 |                 self.forwardOperationToConnection(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
453 |                     operation,
454 |                     preferredConnection: preferredConnection,
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:453:21: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
451 |             return self.loop.flatSubmit {
452 |                 self.forwardOperationToConnection(
453 |                     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'
454 |                     preferredConnection: preferredConnection,
455 |                     context: context
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:454:42: warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
452 |                 self.forwardOperationToConnection(
453 |                     operation,
454 |                     preferredConnection: preferredConnection,
    |                                          `- warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
455 |                     context: context
456 |                 )
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:475:28: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
473 |                     logger: logger
474 |                 )
475 |                 .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'
476 |         }
477 |
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:475:42: warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
473 |                     logger: logger
474 |                 )
475 |                 .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
    |                                          `- warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
476 |         }
477 |
/host/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>
[728/739] Compiling RediStack RedisConnectionPool.swift
/host/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.
/host/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.
/host/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 |
/host/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.
/host/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)
/host/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)
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:140:17: 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>
    :
138 |         } else {
139 |             self.loop.execute {
140 |                 self.refillConnections(logger: logger)
    |                 `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
141 |             }
142 |         }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:153:17: 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>
    :
151 |         } else {
152 |             self.loop.execute {
153 |                 self.closePool(promise: promise, logger: logger)
    |                 `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
154 |             }
155 |         }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:162:30: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
160 |             return self._leaseConnection(deadline, logger: logger)
161 |         } else {
162 |             return self.loop.flatSubmit {
    |                              `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
163 |                 self._leaseConnection(deadline, logger: logger)
164 |             }
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:163:17: 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>
    :
161 |         } else {
162 |             return self.loop.flatSubmit {
163 |                 self._leaseConnection(deadline, logger: logger)
    |                 `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
164 |             }
165 |         }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:173:17: 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>
    :
171 |         } else {
172 |             return self.loop.execute {
173 |                 self._returnLeasedConnection(connection, logger: logger)
    |                 `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
174 |             }
175 |         }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:173:46: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
171 |         } else {
172 |             return self.loop.execute {
173 |                 self._returnLeasedConnection(connection, logger: logger)
    |                                              `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
174 |             }
175 |         }
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:208: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>
    :
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()
/host/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
/host/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 |         }
/host/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 |         }
/host/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()
/host/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 {
/host/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 |         }
/host/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 |
/host/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 |
/host/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()
/host/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 |     }
/host/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
/host/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,
/host/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,
/host/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()
/host/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 |         }
/host/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()
/host/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.
/host/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
/host/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
/host/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
/host/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()
/host/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,
/host/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,
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:430: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()
    :
428 |                         // a "no-op" unsub, so we need to return this connection
429 |                         guard
430 |                             self.pubsubConnection == nil,
    |                             `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
431 |                             self.leasedConnectionCount > 0
432 |                         else { return }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:433:25: warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
431 |                             self.leasedConnectionCount > 0
432 |                         else { return }
433 |                         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'
434 |                     }
435 |             },
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:433:42: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
431 |                             self.leasedConnectionCount > 0
432 |                         else { return }
433 |                         returnConnection(connection, context)
    |                                          `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
434 |                     }
435 |             },
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:451:30: warning: type 'T' does not conform to the 'Sendable' protocol
440 |
441 |     @usableFromInline
442 |     internal func forwardOperationToConnection<T>(
    |                                                `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
443 |         _ operation:
444 |             @escaping (RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) ->
    :
449 |         // Establish event loop context then jump to the in-loop version.
450 |         guard self.loop.inEventLoop else {
451 |             return self.loop.flatSubmit {
    |                              `- warning: type 'T' does not conform to the 'Sendable' protocol
452 |                 self.forwardOperationToConnection(
453 |                     operation,
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:475:18: warning: type 'T' does not conform to the 'Sendable' protocol
440 |
441 |     @usableFromInline
442 |     internal func forwardOperationToConnection<T>(
    |                                                `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
443 |         _ operation:
444 |             @escaping (RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) ->
    :
473 |                     logger: logger
474 |                 )
475 |                 .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
    |                  `- warning: type 'T' does not conform to the 'Sendable' protocol
476 |         }
477 |
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:452: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()
    :
450 |         guard self.loop.inEventLoop else {
451 |             return self.loop.flatSubmit {
452 |                 self.forwardOperationToConnection(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
453 |                     operation,
454 |                     preferredConnection: preferredConnection,
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:453:21: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
451 |             return self.loop.flatSubmit {
452 |                 self.forwardOperationToConnection(
453 |                     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'
454 |                     preferredConnection: preferredConnection,
455 |                     context: context
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:454:42: warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
452 |                 self.forwardOperationToConnection(
453 |                     operation,
454 |                     preferredConnection: preferredConnection,
    |                                          `- warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
455 |                     context: context
456 |                 )
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:475:28: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
473 |                     logger: logger
474 |                 )
475 |                 .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'
476 |         }
477 |
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:475:42: warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
473 |                     logger: logger
474 |                 )
475 |                 .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
    |                                          `- warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
476 |         }
477 |
/host/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>
[729/739] Compiling RediStack RedisConnectionPoolError.swift
/host/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.
/host/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.
/host/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 |
/host/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.
/host/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)
/host/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)
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:140:17: 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>
    :
138 |         } else {
139 |             self.loop.execute {
140 |                 self.refillConnections(logger: logger)
    |                 `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
141 |             }
142 |         }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:153:17: 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>
    :
151 |         } else {
152 |             self.loop.execute {
153 |                 self.closePool(promise: promise, logger: logger)
    |                 `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
154 |             }
155 |         }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:162:30: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
160 |             return self._leaseConnection(deadline, logger: logger)
161 |         } else {
162 |             return self.loop.flatSubmit {
    |                              `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
163 |                 self._leaseConnection(deadline, logger: logger)
164 |             }
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:163:17: 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>
    :
161 |         } else {
162 |             return self.loop.flatSubmit {
163 |                 self._leaseConnection(deadline, logger: logger)
    |                 `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
164 |             }
165 |         }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:173:17: 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>
    :
171 |         } else {
172 |             return self.loop.execute {
173 |                 self._returnLeasedConnection(connection, logger: logger)
    |                 `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
174 |             }
175 |         }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:173:46: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
171 |         } else {
172 |             return self.loop.execute {
173 |                 self._returnLeasedConnection(connection, logger: logger)
    |                                              `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
174 |             }
175 |         }
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:208: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>
    :
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()
/host/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
/host/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 |         }
/host/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 |         }
/host/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()
/host/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 {
/host/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 |         }
/host/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 |
/host/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 |
/host/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()
/host/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 |     }
/host/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
/host/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,
/host/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,
/host/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()
/host/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 |         }
/host/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()
/host/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.
/host/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
/host/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
/host/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
/host/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()
/host/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,
/host/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,
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:430: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()
    :
428 |                         // a "no-op" unsub, so we need to return this connection
429 |                         guard
430 |                             self.pubsubConnection == nil,
    |                             `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
431 |                             self.leasedConnectionCount > 0
432 |                         else { return }
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:433:25: warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
431 |                             self.leasedConnectionCount > 0
432 |                         else { return }
433 |                         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'
434 |                     }
435 |             },
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:433:42: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
431 |                             self.leasedConnectionCount > 0
432 |                         else { return }
433 |                         returnConnection(connection, context)
    |                                          `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
434 |                     }
435 |             },
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:451:30: warning: type 'T' does not conform to the 'Sendable' protocol
440 |
441 |     @usableFromInline
442 |     internal func forwardOperationToConnection<T>(
    |                                                `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
443 |         _ operation:
444 |             @escaping (RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) ->
    :
449 |         // Establish event loop context then jump to the in-loop version.
450 |         guard self.loop.inEventLoop else {
451 |             return self.loop.flatSubmit {
    |                              `- warning: type 'T' does not conform to the 'Sendable' protocol
452 |                 self.forwardOperationToConnection(
453 |                     operation,
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:475:18: warning: type 'T' does not conform to the 'Sendable' protocol
440 |
441 |     @usableFromInline
442 |     internal func forwardOperationToConnection<T>(
    |                                                `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
443 |         _ operation:
444 |             @escaping (RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) ->
    :
473 |                     logger: logger
474 |                 )
475 |                 .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
    |                  `- warning: type 'T' does not conform to the 'Sendable' protocol
476 |         }
477 |
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:452: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()
    :
450 |         guard self.loop.inEventLoop else {
451 |             return self.loop.flatSubmit {
452 |                 self.forwardOperationToConnection(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
453 |                     operation,
454 |                     preferredConnection: preferredConnection,
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:453:21: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
451 |             return self.loop.flatSubmit {
452 |                 self.forwardOperationToConnection(
453 |                     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'
454 |                     preferredConnection: preferredConnection,
455 |                     context: context
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:454:42: warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
452 |                 self.forwardOperationToConnection(
453 |                     operation,
454 |                     preferredConnection: preferredConnection,
    |                                          `- warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
455 |                     context: context
456 |                 )
/host/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()
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:475:28: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
473 |                     logger: logger
474 |                 )
475 |                 .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'
476 |         }
477 |
/host/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:475:42: warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
473 |                     logger: logger
474 |                 )
475 |                 .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
    |                                          `- warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
476 |         }
477 |
/host/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>
[730/739] Compiling RediStack StandardLibrary.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 64 |         ]
 65 |         return .andAllSucceed(
 66 |             handlers.map { self.addHandler($0, name: $1) },
    |                                            `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 67 |             on: self.eventLoop
 68 |         )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 |         self.handler(type: RedisPubSubHandler.self)
114 |             .flatMapError {
    |              `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 |                 // if it doesn't exist, add it to the pipeline
116 |                 guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 |                 return self.handler(type: RedisCommandHandler.self)
122 |                     .flatMap {
    |                      `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                                                                                  `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
 36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
 37 | public final class RedisCommandHandler {
    |                    `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 38 |     /// FIFO queue of promises waiting to receive a response value from a sent command.
 39 |     private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 |                             .map { pubsubHandler }
    |                                    `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 |                     }
127 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 |     /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 |     public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 |         self.removeHandler(handler)
    |                            `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 |             .flatMapError {
135 |                 // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
[731/739] Compiling RediStack SwiftNIO.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 64 |         ]
 65 |         return .andAllSucceed(
 66 |             handlers.map { self.addHandler($0, name: $1) },
    |                                            `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 67 |             on: self.eventLoop
 68 |         )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 |         self.handler(type: RedisPubSubHandler.self)
114 |             .flatMapError {
    |              `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 |                 // if it doesn't exist, add it to the pipeline
116 |                 guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 |                 return self.handler(type: RedisCommandHandler.self)
122 |                     .flatMap {
    |                      `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                                                                                  `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
 36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
 37 | public final class RedisCommandHandler {
    |                    `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 38 |     /// FIFO queue of promises waiting to receive a response value from a sent command.
 39 |     private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 |                             .map { pubsubHandler }
    |                                    `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 |                     }
127 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 |     /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 |     public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 |         self.removeHandler(handler)
    |                            `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 |             .flatMapError {
135 |                 // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
[732/739] Compiling RediStack RESPTranslator.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 64 |         ]
 65 |         return .andAllSucceed(
 66 |             handlers.map { self.addHandler($0, name: $1) },
    |                                            `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 67 |             on: self.eventLoop
 68 |         )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 |         self.handler(type: RedisPubSubHandler.self)
114 |             .flatMapError {
    |              `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 |                 // if it doesn't exist, add it to the pipeline
116 |                 guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 |                 return self.handler(type: RedisCommandHandler.self)
122 |                     .flatMap {
    |                      `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                                                                                  `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
 36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
 37 | public final class RedisCommandHandler {
    |                    `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 38 |     /// FIFO queue of promises waiting to receive a response value from a sent command.
 39 |     private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 |                             .map { pubsubHandler }
    |                                    `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 |                     }
127 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 |     /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 |     public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 |         self.removeHandler(handler)
    |                            `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 |             .flatMapError {
135 |                 // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
[733/739] Compiling RediStack RESPValue.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 64 |         ]
 65 |         return .andAllSucceed(
 66 |             handlers.map { self.addHandler($0, name: $1) },
    |                                            `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 67 |             on: self.eventLoop
 68 |         )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 |         self.handler(type: RedisPubSubHandler.self)
114 |             .flatMapError {
    |              `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 |                 // if it doesn't exist, add it to the pipeline
116 |                 guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 |                 return self.handler(type: RedisCommandHandler.self)
122 |                     .flatMap {
    |                      `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                                                                                  `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
 36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
 37 | public final class RedisCommandHandler {
    |                    `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 38 |     /// FIFO queue of promises waiting to receive a response value from a sent command.
 39 |     private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 |                             .map { pubsubHandler }
    |                                    `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 |                     }
127 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 |     /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 |     public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 |         self.removeHandler(handler)
    |                            `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 |             .flatMapError {
135 |                 // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
[734/739] Compiling RediStack RESPValueConvertible.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 64 |         ]
 65 |         return .andAllSucceed(
 66 |             handlers.map { self.addHandler($0, name: $1) },
    |                                            `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
 67 |             on: self.eventLoop
 68 |         )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 |         self.handler(type: RedisPubSubHandler.self)
114 |             .flatMapError {
    |              `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 |                 // if it doesn't exist, add it to the pipeline
116 |                 guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 |                 return self.handler(type: RedisCommandHandler.self)
122 |                     .flatMap {
    |                      `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 |                     .flatMap {
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
    |                                                                                                                  `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 |                             .map { pubsubHandler }
126 |                     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
 36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
 37 | public final class RedisCommandHandler {
    |                    `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
 38 |     /// FIFO queue of promises waiting to receive a response value from a sent command.
 39 |     private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 |                         let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 |                         return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 |                             .map { pubsubHandler }
    |                                    `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 |                     }
127 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 |     /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 |     public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 |         self.removeHandler(handler)
    |                            `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 |             .flatMapError {
135 |                 // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
[735/739] Compiling RediStack HashCommands.swift
/host/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)]
/host/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)
/host/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")]
/host/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,
/host/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, ...]
/host/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,
/host/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, ...]
/host/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,
/host/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] = [
/host/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)
/host/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] = [
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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))
/host/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)
[736/739] Compiling RediStack ListCommands.swift
/host/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)]
/host/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)
/host/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")]
/host/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,
/host/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, ...]
/host/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,
/host/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, ...]
/host/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,
/host/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] = [
/host/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)
/host/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] = [
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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))
/host/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)
[737/739] Compiling RediStack PubSubCommands.swift
/host/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)]
/host/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)
/host/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")]
/host/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,
/host/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, ...]
/host/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,
/host/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, ...]
/host/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,
/host/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] = [
/host/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)
/host/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] = [
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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))
/host/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)
[738/739] Compiling RediStack SetCommands.swift
/host/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)]
/host/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)
/host/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")]
/host/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,
/host/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, ...]
/host/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,
/host/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, ...]
/host/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,
/host/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] = [
/host/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)
/host/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] = [
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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))
/host/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)
[739/739] Compiling RediStack SortedSetCommands.swift
/host/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)]
/host/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)
/host/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")]
/host/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,
/host/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, ...]
/host/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,
/host/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, ...]
/host/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,
/host/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] = [
/host/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)
/host/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] = [
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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)
/host/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))
/host/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)
[741/749] Compiling RediStackTestUtils _Deprecations.swift
[742/749] Emitting module RedisTypes
[743/749] Compiling RedisTypes RedisSet.swift
/host/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) }
[744/750] Compiling RediStackTestUtils General.swift
[745/750] Compiling RediStackTestUtils RediStack.swift
[746/750] Compiling RediStackTestUtils RedisIntegrationTestCase.swift
/host/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 |             }
/host/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 | }
/host/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()
/host/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 |
[747/750] Emitting module RediStackTestUtils
[748/750] Compiling RediStackTestUtils RedisConnectionPoolIntegrationTestCase.swift
/host/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.
/host/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)
/host/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 |
[749/750] Compiling RediStackTestUtils EmbeddedMockRedisServer.swift
/host/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:
/host/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)
/host/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 |
/host/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 |
Build complete! (173.19s)
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" : "/host/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"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "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" : "6.0"
}
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:08fa5f1bd27c53c71ebe7c2842e29d52715d90da2c5b8f52513c9039c232613d
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
Done.