The Swift Package Index logo.Swift Package Index

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

Build Information

Successful build of RediStack, reference main (53fc85), with Swift 6.1 for Android on 28 May 2025 20:03:40 UTC.

Swift 6 data race errors: 7

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" 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

570 |                     return self.eventLoop.makeSucceededFuture(())
    |                            `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
571 |                 }
572 |                 logger.debug("subscription removed, with no current active subscriptions. leaving pubsub mode")
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:575:47: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
573 |                 // otherwise, remove the handler and update our state
574 |                 return self.channel.pipeline
575 |                     .removeRedisPubSubHandler(handler)
    |                                               `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
576 |                     .map {
577 |                         self.state = .open
/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/RedisConnection.swift:567:72: warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
565 |                         metadata: [
566 |                             RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 |                             RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
    |                                                                        `- warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
568 |                         ]
569 |                     )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:577:25: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
575 |                     .removeRedisPubSubHandler(handler)
576 |                     .map {
577 |                         self.state = .open
    |                         `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
578 |                         logger.debug("connection is now open to all commands")
579 |                     }
[716/728] Compiling RediStack RedisConnection.swift
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:64:14: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
 62 |             client
 63 |             .connect(to: config.address)
 64 |             .flatMap {
    |              `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
 65 |                 let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
 66 |                 return connection.start(configuration: config).map({ _ in connection })
    :
 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/RedisConnection.swift:66:75: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 64 |             .flatMap {
 65 |                 let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
 66 |                 return connection.start(configuration: config).map({ _ in connection })
    |                                                                           `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 67 |             }
 68 |     }
    :
 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/RedisConnection.swift:178:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
176 |             // if our state is still open, that means we didn't cause the closeFuture to resolve.
177 |             // update state, metrics, and logging
178 |             let oldState = self.state
    |                            `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
179 |             self.state = .closed
180 |             RedisMetrics.activeConnectionCount.decrement()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:186:17: warning: reference to captured var 'logger' in concurrently-executing code
184 |                 break
185 |             case .open, .pubsub:
186 |                 logger.warning("connection was closed unexpectedly")
    |                 `- warning: reference to captured var 'logger' in concurrently-executing code
187 |                 self.onUnexpectedClosure?()
188 |             }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:210:37: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
208 |         // if a database index is specified, use it to switch the selected database before further operations happen
209 |         if let database = configuration.initialDatabase {
210 |             return future.flatMap { self.select(database: database) }
    |                                     `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
211 |         }
212 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:257:31: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
255 |         }
256 |
257 |         return self.eventLoop.flatSubmit {
    |                               `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
258 |             self.send0(command: command, with: arguments, logger: logger)
259 |         }
/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/RedisConnection.swift:258:13: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
256 |
257 |         return self.eventLoop.flatSubmit {
258 |             self.send0(command: command, with: arguments, logger: logger)
    |             `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
259 |         }
260 |     }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:258:48: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
256 |
257 |         return self.eventLoop.flatSubmit {
258 |             self.send0(command: command, with: arguments, logger: logger)
    |                                                `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
259 |         }
260 |     }
/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/RedisConnection.swift:323:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
321 |
322 |         if self.sendCommandsImmediately {
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
    |                            `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
 20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
 21 | public struct RedisCommand {
    |               `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 22 |     /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
 23 |     public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:323:51: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
321 |
322 |         if self.sendCommandsImmediately {
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
    |                                                   `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
/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/RedisConnection.swift:325:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
    |                            `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
326 |         }
327 |     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
 20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
 21 | public struct RedisCommand {
    |               `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 22 |     /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
 23 |     public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:325:43: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
    |                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
326 |         }
327 |     }
/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/RedisConnection.swift:358:47: warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
356 |         let closePromise = self.eventLoop.makePromise(of: Void.self)
357 |         let closeFuture = closePromise.futureResult
358 |         self.channel.triggerUserOutboundEvent(RedisGracefulConnectionCloseEvent(), promise: closePromise)
    |                                               `- warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
359 |
360 |         closeFuture.whenFailure {
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:196:15: note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
194 |
195 | /// A channel event that informs the ``RedisCommandHandler`` that it should close the channel gracefully
196 | public struct RedisGracefulConnectionCloseEvent {
    |               `- note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
197 |     /// Creates a ``RedisGracefulConnectionCloseEvent``
198 |     public init() {}
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:463:18: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
461 |             return self.channel.pipeline
462 |                 .addRedisPubSubHandler()
463 |                 .flatMap { handler in
    |                  `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
464 |                     logger.trace("handler added, adding subscription")
465 |                     return
/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/RedisConnection.swift:468:34: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
466 |                         handler
467 |                         .addSubscription(
468 |                             for: target,
    |                                  `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
469 |                             messageReceiver: receiver,
470 |                             onSubscribe: onSubscribe,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:469:46: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
467 |                         .addSubscription(
468 |                             for: target,
469 |                             messageReceiver: receiver,
    |                                              |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
470 |                             onSubscribe: onSubscribe,
471 |                             onUnsubscribe: onUnsubscribe
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:470:42: warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
468 |                             for: target,
469 |                             messageReceiver: receiver,
470 |                             onSubscribe: onSubscribe,
    |                                          |- warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                          `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
471 |                             onUnsubscribe: onUnsubscribe
472 |                         )
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:471:44: warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
469 |                             messageReceiver: receiver,
470 |                             onSubscribe: onSubscribe,
471 |                             onUnsubscribe: onUnsubscribe
    |                                            |- warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                            `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
472 |                         )
473 |                         .flatMapError { error in
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
480 |                             // if there was an error, no subscriptions were made
481 |                             // so remove the handler and propogate the error to the caller by rethrowing it
482 |                             return self.channel.pipeline
    |                                    `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 |                                 .removeRedisPubSubHandler(handler)
484 |                                 .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
480 |                             // if there was an error, no subscriptions were made
481 |                             // so remove the handler and propogate the error to the caller by rethrowing it
482 |                             return self.channel.pipeline
    |                                    `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 |                                 .removeRedisPubSubHandler(handler)
484 |                                 .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:483:59: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
481 |                             // so remove the handler and propogate the error to the caller by rethrowing it
482 |                             return self.channel.pipeline
483 |                                 .removeRedisPubSubHandler(handler)
    |                                                           `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
484 |                                 .flatMapThrowing { throw error }
485 |                         }
/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/RedisConnection.swift:489:36: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
487 |                         .map { _ in
488 |                             logger.trace("successfully entered pubsub mode")
489 |                             return handler
    |                                    `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
490 |                         }
491 |                 }
/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/RedisConnection.swift:494:21: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
492 |                 // success, update our state
493 |                 .map { (handler: RedisPubSubHandler) in
494 |                     self.state = .pubsub(handler)
    |                     `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
495 |                     logger.debug("the connection is now in pubsub mode")
496 |                 }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
565 |                         metadata: [
566 |                             RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 |                             RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
    |                                                                        `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
568 |                         ]
569 |                     )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:570:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
568 |                         ]
569 |                     )
570 |                     return self.eventLoop.makeSucceededFuture(())
    |                            `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
571 |                 }
572 |                 logger.debug("subscription removed, with no current active subscriptions. leaving pubsub mode")
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:575:47: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
573 |                 // otherwise, remove the handler and update our state
574 |                 return self.channel.pipeline
575 |                     .removeRedisPubSubHandler(handler)
    |                                               `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
576 |                     .map {
577 |                         self.state = .open
/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/RedisConnection.swift:567:72: warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
565 |                         metadata: [
566 |                             RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 |                             RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
    |                                                                        `- warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
568 |                         ]
569 |                     )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:577:25: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
575 |                     .removeRedisPubSubHandler(handler)
576 |                     .map {
577 |                         self.state = .open
    |                         `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
578 |                         logger.debug("connection is now open to all commands")
579 |                     }
[717/728] Compiling RediStack RedisError.swift
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:64:14: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
 62 |             client
 63 |             .connect(to: config.address)
 64 |             .flatMap {
    |              `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
 65 |                 let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
 66 |                 return connection.start(configuration: config).map({ _ in connection })
    :
 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/RedisConnection.swift:66:75: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 64 |             .flatMap {
 65 |                 let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
 66 |                 return connection.start(configuration: config).map({ _ in connection })
    |                                                                           `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 67 |             }
 68 |     }
    :
 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/RedisConnection.swift:178:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
176 |             // if our state is still open, that means we didn't cause the closeFuture to resolve.
177 |             // update state, metrics, and logging
178 |             let oldState = self.state
    |                            `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
179 |             self.state = .closed
180 |             RedisMetrics.activeConnectionCount.decrement()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:186:17: warning: reference to captured var 'logger' in concurrently-executing code
184 |                 break
185 |             case .open, .pubsub:
186 |                 logger.warning("connection was closed unexpectedly")
    |                 `- warning: reference to captured var 'logger' in concurrently-executing code
187 |                 self.onUnexpectedClosure?()
188 |             }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:210:37: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
208 |         // if a database index is specified, use it to switch the selected database before further operations happen
209 |         if let database = configuration.initialDatabase {
210 |             return future.flatMap { self.select(database: database) }
    |                                     `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
211 |         }
212 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:257:31: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
255 |         }
256 |
257 |         return self.eventLoop.flatSubmit {
    |                               `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
258 |             self.send0(command: command, with: arguments, logger: logger)
259 |         }
/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/RedisConnection.swift:258:13: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
256 |
257 |         return self.eventLoop.flatSubmit {
258 |             self.send0(command: command, with: arguments, logger: logger)
    |             `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
259 |         }
260 |     }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:258:48: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
256 |
257 |         return self.eventLoop.flatSubmit {
258 |             self.send0(command: command, with: arguments, logger: logger)
    |                                                `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
259 |         }
260 |     }
/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/RedisConnection.swift:323:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
321 |
322 |         if self.sendCommandsImmediately {
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
    |                            `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
 20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
 21 | public struct RedisCommand {
    |               `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 22 |     /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
 23 |     public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:323:51: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
321 |
322 |         if self.sendCommandsImmediately {
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
    |                                                   `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
/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/RedisConnection.swift:325:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
    |                            `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
326 |         }
327 |     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
 20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
 21 | public struct RedisCommand {
    |               `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 22 |     /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
 23 |     public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:325:43: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
    |                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
326 |         }
327 |     }
/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/RedisConnection.swift:358:47: warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
356 |         let closePromise = self.eventLoop.makePromise(of: Void.self)
357 |         let closeFuture = closePromise.futureResult
358 |         self.channel.triggerUserOutboundEvent(RedisGracefulConnectionCloseEvent(), promise: closePromise)
    |                                               `- warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
359 |
360 |         closeFuture.whenFailure {
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:196:15: note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
194 |
195 | /// A channel event that informs the ``RedisCommandHandler`` that it should close the channel gracefully
196 | public struct RedisGracefulConnectionCloseEvent {
    |               `- note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
197 |     /// Creates a ``RedisGracefulConnectionCloseEvent``
198 |     public init() {}
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:463:18: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
461 |             return self.channel.pipeline
462 |                 .addRedisPubSubHandler()
463 |                 .flatMap { handler in
    |                  `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
464 |                     logger.trace("handler added, adding subscription")
465 |                     return
/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/RedisConnection.swift:468:34: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
466 |                         handler
467 |                         .addSubscription(
468 |                             for: target,
    |                                  `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
469 |                             messageReceiver: receiver,
470 |                             onSubscribe: onSubscribe,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:469:46: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
467 |                         .addSubscription(
468 |                             for: target,
469 |                             messageReceiver: receiver,
    |                                              |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
470 |                             onSubscribe: onSubscribe,
471 |                             onUnsubscribe: onUnsubscribe
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:470:42: warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
468 |                             for: target,
469 |                             messageReceiver: receiver,
470 |                             onSubscribe: onSubscribe,
    |                                          |- warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                          `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
471 |                             onUnsubscribe: onUnsubscribe
472 |                         )
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:471:44: warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
469 |                             messageReceiver: receiver,
470 |                             onSubscribe: onSubscribe,
471 |                             onUnsubscribe: onUnsubscribe
    |                                            |- warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                            `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
472 |                         )
473 |                         .flatMapError { error in
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
480 |                             // if there was an error, no subscriptions were made
481 |                             // so remove the handler and propogate the error to the caller by rethrowing it
482 |                             return self.channel.pipeline
    |                                    `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 |                                 .removeRedisPubSubHandler(handler)
484 |                                 .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
480 |                             // if there was an error, no subscriptions were made
481 |                             // so remove the handler and propogate the error to the caller by rethrowing it
482 |                             return self.channel.pipeline
    |                                    `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 |                                 .removeRedisPubSubHandler(handler)
484 |                                 .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:483:59: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
481 |                             // so remove the handler and propogate the error to the caller by rethrowing it
482 |                             return self.channel.pipeline
483 |                                 .removeRedisPubSubHandler(handler)
    |                                                           `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
484 |                                 .flatMapThrowing { throw error }
485 |                         }
/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/RedisConnection.swift:489:36: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
487 |                         .map { _ in
488 |                             logger.trace("successfully entered pubsub mode")
489 |                             return handler
    |                                    `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
490 |                         }
491 |                 }
/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/RedisConnection.swift:494:21: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
492 |                 // success, update our state
493 |                 .map { (handler: RedisPubSubHandler) in
494 |                     self.state = .pubsub(handler)
    |                     `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
495 |                     logger.debug("the connection is now in pubsub mode")
496 |                 }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
565 |                         metadata: [
566 |                             RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 |                             RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
    |                                                                        `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
568 |                         ]
569 |                     )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:570:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
568 |                         ]
569 |                     )
570 |                     return self.eventLoop.makeSucceededFuture(())
    |                            `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
571 |                 }
572 |                 logger.debug("subscription removed, with no current active subscriptions. leaving pubsub mode")
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:575:47: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
573 |                 // otherwise, remove the handler and update our state
574 |                 return self.channel.pipeline
575 |                     .removeRedisPubSubHandler(handler)
    |                                               `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
576 |                     .map {
577 |                         self.state = .open
/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/RedisConnection.swift:567:72: warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
565 |                         metadata: [
566 |                             RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 |                             RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
    |                                                                        `- warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
568 |                         ]
569 |                     )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:577:25: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
575 |                     .removeRedisPubSubHandler(handler)
576 |                     .map {
577 |                         self.state = .open
    |                         `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
578 |                         logger.debug("connection is now open to all commands")
579 |                     }
[718/728] Compiling RediStack RedisKey+TTL.swift
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:64:14: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
 62 |             client
 63 |             .connect(to: config.address)
 64 |             .flatMap {
    |              `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
 65 |                 let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
 66 |                 return connection.start(configuration: config).map({ _ in connection })
    :
 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/RedisConnection.swift:66:75: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 64 |             .flatMap {
 65 |                 let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
 66 |                 return connection.start(configuration: config).map({ _ in connection })
    |                                                                           `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 67 |             }
 68 |     }
    :
 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/RedisConnection.swift:178:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
176 |             // if our state is still open, that means we didn't cause the closeFuture to resolve.
177 |             // update state, metrics, and logging
178 |             let oldState = self.state
    |                            `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
179 |             self.state = .closed
180 |             RedisMetrics.activeConnectionCount.decrement()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:186:17: warning: reference to captured var 'logger' in concurrently-executing code
184 |                 break
185 |             case .open, .pubsub:
186 |                 logger.warning("connection was closed unexpectedly")
    |                 `- warning: reference to captured var 'logger' in concurrently-executing code
187 |                 self.onUnexpectedClosure?()
188 |             }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:210:37: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
208 |         // if a database index is specified, use it to switch the selected database before further operations happen
209 |         if let database = configuration.initialDatabase {
210 |             return future.flatMap { self.select(database: database) }
    |                                     `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
211 |         }
212 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:257:31: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
255 |         }
256 |
257 |         return self.eventLoop.flatSubmit {
    |                               `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
258 |             self.send0(command: command, with: arguments, logger: logger)
259 |         }
/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/RedisConnection.swift:258:13: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
256 |
257 |         return self.eventLoop.flatSubmit {
258 |             self.send0(command: command, with: arguments, logger: logger)
    |             `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
259 |         }
260 |     }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:258:48: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
256 |
257 |         return self.eventLoop.flatSubmit {
258 |             self.send0(command: command, with: arguments, logger: logger)
    |                                                `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
259 |         }
260 |     }
/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/RedisConnection.swift:323:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
321 |
322 |         if self.sendCommandsImmediately {
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
    |                            `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
 20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
 21 | public struct RedisCommand {
    |               `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 22 |     /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
 23 |     public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:323:51: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
321 |
322 |         if self.sendCommandsImmediately {
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
    |                                                   `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
/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/RedisConnection.swift:325:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
    |                            `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
326 |         }
327 |     }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
 20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
 21 | public struct RedisCommand {
    |               `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
 22 |     /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
 23 |     public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:325:43: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
323 |             return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 |         } else {
325 |             return channel.write(command).flatMap { promise.futureResult }
    |                                           `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
326 |         }
327 |     }
/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/RedisConnection.swift:358:47: warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
356 |         let closePromise = self.eventLoop.makePromise(of: Void.self)
357 |         let closeFuture = closePromise.futureResult
358 |         self.channel.triggerUserOutboundEvent(RedisGracefulConnectionCloseEvent(), promise: closePromise)
    |                                               `- warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
359 |
360 |         closeFuture.whenFailure {
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:196:15: note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
194 |
195 | /// A channel event that informs the ``RedisCommandHandler`` that it should close the channel gracefully
196 | public struct RedisGracefulConnectionCloseEvent {
    |               `- note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
197 |     /// Creates a ``RedisGracefulConnectionCloseEvent``
198 |     public init() {}
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:463:18: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
461 |             return self.channel.pipeline
462 |                 .addRedisPubSubHandler()
463 |                 .flatMap { handler in
    |                  `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
464 |                     logger.trace("handler added, adding subscription")
465 |                     return
/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/RedisConnection.swift:468:34: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
466 |                         handler
467 |                         .addSubscription(
468 |                             for: target,
    |                                  `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
469 |                             messageReceiver: receiver,
470 |                             onSubscribe: onSubscribe,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:469:46: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
467 |                         .addSubscription(
468 |                             for: target,
469 |                             messageReceiver: receiver,
    |                                              |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
470 |                             onSubscribe: onSubscribe,
471 |                             onUnsubscribe: onUnsubscribe
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:470:42: warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
468 |                             for: target,
469 |                             messageReceiver: receiver,
470 |                             onSubscribe: onSubscribe,
    |                                          |- warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                          `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
471 |                             onUnsubscribe: onUnsubscribe
472 |                         )
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:471:44: warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
469 |                             messageReceiver: receiver,
470 |                             onSubscribe: onSubscribe,
471 |                             onUnsubscribe: onUnsubscribe
    |                                            |- warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                            `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
472 |                         )
473 |                         .flatMapError { error in
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
480 |                             // if there was an error, no subscriptions were made
481 |                             // so remove the handler and propogate the error to the caller by rethrowing it
482 |                             return self.channel.pipeline
    |                                    `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 |                                 .removeRedisPubSubHandler(handler)
484 |                                 .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
480 |                             // if there was an error, no subscriptions were made
481 |                             // so remove the handler and propogate the error to the caller by rethrowing it
482 |                             return self.channel.pipeline
    |                                    `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 |                                 .removeRedisPubSubHandler(handler)
484 |                                 .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:483:59: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
481 |                             // so remove the handler and propogate the error to the caller by rethrowing it
482 |                             return self.channel.pipeline
483 |                                 .removeRedisPubSubHandler(handler)
    |                                                           `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
484 |                                 .flatMapThrowing { throw error }
485 |                         }
/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/RedisConnection.swift:489:36: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
487 |                         .map { _ in
488 |                             logger.trace("successfully entered pubsub mode")
489 |                             return handler
    |                                    `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
490 |                         }
491 |                 }
/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/RedisConnection.swift:494:21: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
492 |                 // success, update our state
493 |                 .map { (handler: RedisPubSubHandler) in
494 |                     self.state = .pubsub(handler)
    |                     `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
495 |                     logger.debug("the connection is now in pubsub mode")
496 |                 }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
565 |                         metadata: [
566 |                             RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 |                             RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
    |                                                                        `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
568 |                         ]
569 |                     )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:570:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
568 |                         ]
569 |                     )
570 |                     return self.eventLoop.makeSucceededFuture(())
    |                            `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
571 |                 }
572 |                 logger.debug("subscription removed, with no current active subscriptions. leaving pubsub mode")
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:575:47: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
573 |                 // otherwise, remove the handler and update our state
574 |                 return self.channel.pipeline
575 |                     .removeRedisPubSubHandler(handler)
    |                                               `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
576 |                     .map {
577 |                         self.state = .open
/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/RedisConnection.swift:567:72: warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
565 |                         metadata: [
566 |                             RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 |                             RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
    |                                                                        `- warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
568 |                         ]
569 |                     )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:577:25: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
 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()
    :
575 |                     .removeRedisPubSubHandler(handler)
576 |                     .map {
577 |                         self.state = .open
    |                         `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
578 |                         logger.debug("connection is now open to all commands")
579 |                     }
[719/728] 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 |
[720/728] 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 |
[721/728] 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 |
[722/728] 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 |
[723/728] 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 |
[724/728] 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)
[725/728] 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)
[726/728] 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)
[727/728] 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)
[728/728] 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)
[730/738] Emitting module RedisTypes
[731/738] 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) }
[732/738] Compiling RediStackTestUtils _Deprecations.swift
[733/739] Emitting module RediStackTestUtils
[734/739] 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 |
[735/739] 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 |
[736/739] Compiling RediStackTestUtils RediStack.swift
[737/739] Compiling RediStackTestUtils General.swift
[738/739] 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 |
Build complete! (165.99s)
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"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "RedisTypesTests",
      "module_type" : "SwiftTarget",
      "name" : "RedisTypesTests",
      "path" : "Tests/RedisTypesTests",
      "product_dependencies" : [
        "NIO"
      ],
      "sources" : [
        "RedisSetTests.swift",
        "RedisTypesIntegrationTestCase.swift"
      ],
      "target_dependencies" : [
        "RediStack",
        "RedisTypes",
        "RediStackTestUtils"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RedisTypes",
      "module_type" : "SwiftTarget",
      "name" : "RedisTypes",
      "path" : "Sources/RedisTypes",
      "product_memberships" : [
        "RedisTypes"
      ],
      "sources" : [
        "RedisSet.swift"
      ],
      "target_dependencies" : [
        "RediStack"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RediStackTests",
      "module_type" : "SwiftTarget",
      "name" : "RediStackTests",
      "path" : "Tests/RediStackTests",
      "product_dependencies" : [
        "Atomics",
        "NIO",
        "NIOTestUtils"
      ],
      "sources" : [
        "ChannelHandlers/RedisByteDecoderTests.swift",
        "ChannelHandlers/RedisCommandHandlerTests.swift",
        "ChannelHandlers/RedisMessageEncoderTests.swift",
        "Cluster/RedisClusterNodeDescriptionProtocolTests.swift",
        "ConfigurationTests.swift",
        "ConnectionPoolTests.swift",
        "Helpers/MockNodeDescription.swift",
        "Helpers/RedisErrorTests.swift",
        "RESPTranslatorTests.swift",
        "RESPValueTests.swift",
        "RedisCommandEncoderTests.swift",
        "RedisConnection+ConfigurationTests.swift",
        "RedisConnectionTests.swift",
        "RedisHashSlotTests.swift",
        "RedisKeyLifetime.swift"
      ],
      "target_dependencies" : [
        "RediStack",
        "RediStackTestUtils"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RediStackTestUtils",
      "module_type" : "SwiftTarget",
      "name" : "RediStackTestUtils",
      "path" : "Sources/RediStackTestUtils",
      "product_dependencies" : [
        "NIOCore",
        "NIOEmbedded"
      ],
      "product_memberships" : [
        "RediStackTestUtils"
      ],
      "sources" : [
        "EmbeddedMockRedisServer.swift",
        "Extensions/General.swift",
        "Extensions/RediStack.swift",
        "RedisConnectionPoolIntegrationTestCase.swift",
        "RedisIntegrationTestCase.swift",
        "_Deprecations.swift"
      ],
      "target_dependencies" : [
        "RediStack"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RediStackIntegrationTests",
      "module_type" : "SwiftTarget",
      "name" : "RediStackIntegrationTests",
      "path" : "Tests/RediStackIntegrationTests",
      "product_dependencies" : [
        "NIO"
      ],
      "sources" : [
        "Commands/BasicCommandsTests.swift",
        "Commands/HashCommandsTests.swift",
        "Commands/ListCommandsTests.swift",
        "Commands/PubSubCommandsTests.swift",
        "Commands/SetCommandsTests.swift",
        "Commands/SortedSetCommandsTests.swift",
        "Commands/StringCommandsTests.swift",
        "RediStackIntegrationTestCase.swift",
        "RedisConnectionPoolTests.swift",
        "RedisConnectionTests.swift",
        "RedisLoggingTests.swift"
      ],
      "target_dependencies" : [
        "RediStack",
        "RediStackTestUtils"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RediStack",
      "module_type" : "SwiftTarget",
      "name" : "RediStack",
      "path" : "Sources/RediStack",
      "product_dependencies" : [
        "NIOCore",
        "NIOPosix",
        "NIO",
        "NIOConcurrencyHelpers",
        "NIOSSL",
        "Atomics",
        "Logging",
        "Metrics"
      ],
      "product_memberships" : [
        "RediStack",
        "RediStackTestUtils",
        "RedisTypes"
      ],
      "sources" : [
        "ChannelHandlers/RedisByteDecoder.swift",
        "ChannelHandlers/RedisCommandHandler.swift",
        "ChannelHandlers/RedisMessageEncoder.swift",
        "ChannelHandlers/RedisPubSubHandler.swift",
        "Cluster/RedisClusterNodeDescriptionProtocol.swift",
        "Cluster/RedisClusterNodeID.swift",
        "Cluster/RedisClusterShardDescriptionProtocol.swift",
        "Cluster/RedisHashSlot.swift",
        "Cluster/SwiftPolyfill.swift",
        "Commands/BasicCommands.swift",
        "Commands/HashCommands.swift",
        "Commands/ListCommands.swift",
        "Commands/PubSubCommands.swift",
        "Commands/SetCommands.swift",
        "Commands/SortedSetCommands.swift",
        "Commands/StringCommands.swift",
        "ConnectionPool/ConnectionPool.swift",
        "ConnectionPool/RedisConnectionPool+Configuration.swift",
        "ConnectionPool/RedisConnectionPool.swift",
        "ConnectionPool/RedisConnectionPoolError.swift",
        "Extensions/StandardLibrary.swift",
        "Extensions/SwiftNIO.swift",
        "RESP/RESPTranslator.swift",
        "RESP/RESPValue.swift",
        "RESP/RESPValueConvertible.swift",
        "RedisChannelName.swift",
        "RedisClient.swift",
        "RedisCommandEncoder-multi-encode.swift",
        "RedisCommandEncoder.swift",
        "RedisConnection+Configuration.swift",
        "RedisConnection.swift",
        "RedisError.swift",
        "RedisKey+TTL.swift",
        "RedisKey.swift",
        "RedisLogging.swift",
        "RedisMetrics.swift",
        "_Deprecations.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RESP3Tests",
      "module_type" : "SwiftTarget",
      "name" : "RESP3Tests",
      "path" : "Tests/RESP3Tests",
      "product_dependencies" : [
        "NIOCore",
        "NIOEmbedded",
        "NIOTestUtils"
      ],
      "sources" : [
        "RESP3TokenTests.swift"
      ],
      "target_dependencies" : [
        "RESP3"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RESP3",
      "module_type" : "SwiftTarget",
      "name" : "RESP3",
      "path" : "Sources/RESP3",
      "product_dependencies" : [
        "NIOCore"
      ],
      "sources" : [
        "RESP3Error.swift",
        "RESP3Token.swift",
        "RESP3TokenDecoder.swift",
        "RESP3TypeIdentifier.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.6"
}
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:fe1962677657b2408c217cb5cceb3c09bc1d91486e360cebbc6eee461a5945d8
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
Done.