The Swift Package Index logo.Swift Package Index

Build Information

Successful build of RediStack, reference main (473fb4), with Swift 6.1 for Android on 12 Oct 2026 10:56:34 UTC.

Swift 6 data race errors: 7

Build Command

bash -c docker run --pull=always --rm -v "checkouts-54344843-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/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

 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 |                     }
[809/826] Compiling RediStack RedisChannelName.swift
[810/826] Compiling RediStack RedisClient.swift
[811/826] Compiling RediStack RedisCommandEncoder-multi-encode.swift
[812/826] Compiling RediStack RedisCommandEncoder.swift
[813/826] Compiling RediStack RedisKey.swift
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
    |                        `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
119 |         }
/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/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 |         }
120 |     }
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |                                                      `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 |         }
120 |     }
/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/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 |     }
125 |
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                                                   `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 |     }
125 |
/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/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
125 |
126 |     internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 |         self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 |     }
129 |
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
135 |     ) -> EventLoopFuture<Void> {
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
138 |                 to: channels,
    |                     `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
/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/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 |             self.client.subscribe(
138 |                 to: channels,
139 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 |                 onUnsubscribe: unsubscribeHandler,
142 |                 logger: self.logger
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 |                 logger: self.logger
143 |             )
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
152 |     ) -> EventLoopFuture<Void> {
153 |         self.eventLoop.flatSubmit {
154 |             self.client.psubscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 |             self.client.psubscribe(
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 |                 onUnsubscribe: unsubscribeHandler,
159 |                 logger: self.logger
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 |                 logger: self.logger
160 |             )
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 45 |
 46 |     /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
    |                       |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
    |                       |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
    |                       |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 52 |     /// The `Metrics.Counter` that retains the number of connections made since application startup.
 53 |     public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[814/826] Compiling RediStack RedisLogging.swift
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
    |                        `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
119 |         }
/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/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 |         }
120 |     }
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |                                                      `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 |         }
120 |     }
/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/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 |     }
125 |
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                                                   `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 |     }
125 |
/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/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
125 |
126 |     internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 |         self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 |     }
129 |
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
135 |     ) -> EventLoopFuture<Void> {
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
138 |                 to: channels,
    |                     `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
/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/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 |             self.client.subscribe(
138 |                 to: channels,
139 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 |                 onUnsubscribe: unsubscribeHandler,
142 |                 logger: self.logger
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 |                 logger: self.logger
143 |             )
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
152 |     ) -> EventLoopFuture<Void> {
153 |         self.eventLoop.flatSubmit {
154 |             self.client.psubscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 |             self.client.psubscribe(
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 |                 onUnsubscribe: unsubscribeHandler,
159 |                 logger: self.logger
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 |                 logger: self.logger
160 |             )
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 45 |
 46 |     /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
    |                       |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
    |                       |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
    |                       |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 52 |     /// The `Metrics.Counter` that retains the number of connections made since application startup.
 53 |     public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[815/826] Compiling RediStack RedisMetrics.swift
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
    |                        `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
119 |         }
/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/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 |         }
120 |     }
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |                                                      `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 |         }
120 |     }
/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/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 |     }
125 |
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                                                   `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 |     }
125 |
/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/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
125 |
126 |     internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 |         self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 |     }
129 |
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
135 |     ) -> EventLoopFuture<Void> {
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
138 |                 to: channels,
    |                     `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
/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/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 |             self.client.subscribe(
138 |                 to: channels,
139 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 |                 onUnsubscribe: unsubscribeHandler,
142 |                 logger: self.logger
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 |                 logger: self.logger
143 |             )
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
152 |     ) -> EventLoopFuture<Void> {
153 |         self.eventLoop.flatSubmit {
154 |             self.client.psubscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 |             self.client.psubscribe(
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 |                 onUnsubscribe: unsubscribeHandler,
159 |                 logger: self.logger
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 |                 logger: self.logger
160 |             )
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 45 |
 46 |     /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
    |                       |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
    |                       |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
    |                       |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 52 |     /// The `Metrics.Counter` that retains the number of connections made since application startup.
 53 |     public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[816/826] Compiling RediStack _Deprecations.swift
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
    |                        `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
119 |         }
/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/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 |         }
120 |     }
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 |     internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 |         self.eventLoop.flatSubmit {
118 |             self.client.send(command: command, with: arguments, logger: self.logger)
    |                                                      `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 |         }
120 |     }
/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/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 |     }
125 |
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 |     internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 |         self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
    |                                                                   `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 |     }
125 |
/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/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
125 |
126 |     internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 |         self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
    |                                     `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 |     }
129 |
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
135 |     ) -> EventLoopFuture<Void> {
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 |         self.eventLoop.flatSubmit {
137 |             self.client.subscribe(
138 |                 to: channels,
    |                     `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
/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/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 |             self.client.subscribe(
138 |                 to: channels,
139 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 |                 to: channels,
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 |                 onUnsubscribe: unsubscribeHandler,
142 |                 logger: self.logger
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 |                 messageReceiver: receiver,
140 |                 onSubscribe: subscribeHandler,
141 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 |                 logger: self.logger
143 |             )
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
 95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
 96 | /// instance to capture command logs within their preferred contexts.
 97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
    |                 `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
 98 |     internal var eventLoop: EventLoop { self.client.eventLoop }
 99 |
    :
152 |     ) -> EventLoopFuture<Void> {
153 |         self.eventLoop.flatSubmit {
154 |             self.client.psubscribe(
    |             `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 |             self.client.psubscribe(
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
    |                                  |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 |                 to: patterns,
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
    |                              |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                              `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 |                 onUnsubscribe: unsubscribeHandler,
159 |                 logger: self.logger
/host/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 |                 messageReceiver: receiver,
157 |                 onSubscribe: subscribeHandler,
158 |                 onUnsubscribe: unsubscribeHandler,
    |                                |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 |                 logger: self.logger
160 |             )
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 45 |
 46 |     /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
    |                       |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 47 |     public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
 48 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
    |                       |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/host/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 49 |     public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
 50 |     /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
 51 |     public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
    |                       |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 52 |     /// The `Metrics.Counter` that retains the number of connections made since application startup.
 53 |     public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[817/826] Compiling RediStack RedisByteDecoder.swift
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:116:25: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 |
115 |         default:
116 |             leadPromise.succeed(value)
    |                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
117 |             RedisMetrics.commandSuccessCount.increment()
118 |         }
/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/ChannelHandlers/RedisPubSubHandler.swift:217:17: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
215 |         guard self.eventLoop.inEventLoop else {
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:218:26: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
218 |                     for: target,
    |                          `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:219:38: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
217 |                 self.addSubscription(
218 |                     for: target,
219 |                     messageReceiver: receiver,
    |                                      |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:220:34: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
    |                                  |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
221 |                     onUnsubscribe: unsubscribeHandler
222 |                 )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:221:36: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
    |                                    |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
222 |                 )
223 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:48: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
271 |         }
272 |
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:77: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                                             `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
271 |         }
272 |
[818/826] Compiling RediStack RedisCommandHandler.swift
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:116:25: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 |
115 |         default:
116 |             leadPromise.succeed(value)
    |                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
117 |             RedisMetrics.commandSuccessCount.increment()
118 |         }
/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/ChannelHandlers/RedisPubSubHandler.swift:217:17: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
215 |         guard self.eventLoop.inEventLoop else {
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:218:26: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
218 |                     for: target,
    |                          `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:219:38: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
217 |                 self.addSubscription(
218 |                     for: target,
219 |                     messageReceiver: receiver,
    |                                      |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:220:34: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
    |                                  |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
221 |                     onUnsubscribe: unsubscribeHandler
222 |                 )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:221:36: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
    |                                    |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
222 |                 )
223 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:48: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
271 |         }
272 |
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:77: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                                             `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
271 |         }
272 |
[819/826] Compiling RediStack RedisMessageEncoder.swift
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:116:25: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 |
115 |         default:
116 |             leadPromise.succeed(value)
    |                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
117 |             RedisMetrics.commandSuccessCount.increment()
118 |         }
/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/ChannelHandlers/RedisPubSubHandler.swift:217:17: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
215 |         guard self.eventLoop.inEventLoop else {
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:218:26: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
218 |                     for: target,
    |                          `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:219:38: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
217 |                 self.addSubscription(
218 |                     for: target,
219 |                     messageReceiver: receiver,
    |                                      |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:220:34: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
    |                                  |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
221 |                     onUnsubscribe: unsubscribeHandler
222 |                 )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:221:36: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
    |                                    |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
222 |                 )
223 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:48: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
271 |         }
272 |
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:77: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                                             `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
271 |         }
272 |
[820/826] Compiling RediStack RedisPubSubHandler.swift
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:116:25: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 |
115 |         default:
116 |             leadPromise.succeed(value)
    |                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
117 |             RedisMetrics.commandSuccessCount.increment()
118 |         }
/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/ChannelHandlers/RedisPubSubHandler.swift:217:17: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
215 |         guard self.eventLoop.inEventLoop else {
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:218:26: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
218 |                     for: target,
    |                          `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:219:38: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
217 |                 self.addSubscription(
218 |                     for: target,
219 |                     messageReceiver: receiver,
    |                                      |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:220:34: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
    |                                  |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
221 |                     onUnsubscribe: unsubscribeHandler
222 |                 )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:221:36: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
    |                                    |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
222 |                 )
223 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:48: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
271 |         }
272 |
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:77: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                                             `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
271 |         }
272 |
[821/826] Compiling RediStack RedisClusterNodeDescriptionProtocol.swift
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:116:25: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 |
115 |         default:
116 |             leadPromise.succeed(value)
    |                         `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
117 |             RedisMetrics.commandSuccessCount.increment()
118 |         }
/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/ChannelHandlers/RedisPubSubHandler.swift:217:17: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
215 |         guard self.eventLoop.inEventLoop else {
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
    |                 `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:218:26: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
216 |             return self.eventLoop.flatSubmit {
217 |                 self.addSubscription(
218 |                     for: target,
    |                          `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:219:38: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
217 |                 self.addSubscription(
218 |                     for: target,
219 |                     messageReceiver: receiver,
    |                                      |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:220:34: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
218 |                     for: target,
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
    |                                  |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
221 |                     onUnsubscribe: unsubscribeHandler
222 |                 )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:221:36: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
219 |                     messageReceiver: receiver,
220 |                     onSubscribe: subscribeHandler,
221 |                     onUnsubscribe: unsubscribeHandler
    |                                    |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
    |                                    `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
222 |                 )
223 |             }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:48: warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
 99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
    |                    `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 |     private var state: State = .default
103 |
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                `- warning: capture of 'self' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
271 |         }
272 |
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:270:77: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
 43 | ///
 44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
 45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
    |             `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
 46 |     case channels([RedisChannelName])
 47 |     case patterns([String])
    :
268 |     public func removeSubscription(for target: RedisSubscriptionTarget) -> EventLoopFuture<Int> {
269 |         guard self.eventLoop.inEventLoop else {
270 |             return self.eventLoop.flatSubmit { self.removeSubscription(for: target) }
    |                                                                             `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
271 |         }
272 |
[822/826] 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)
[823/826] 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)
[824/826] 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)
[825/826] 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)
[826/826] 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)
[828/836] Compiling RediStackTestUtils _Deprecations.swift
[829/836] Compiling RediStackTestUtils General.swift
[830/836] Emitting module RedisTypes
[831/836] 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) }
[832/837] 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 |
[833/837] Emitting module RediStackTestUtils
[834/837] 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 |
[835/837] Compiling RediStackTestUtils RediStack.swift
[836/837] 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! (57.33s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-atomics",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.1.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-atomics.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "swift-metrics",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-metrics.git"
    },
    {
      "identity" : "swift-nio",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.43.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-nio.git"
    },
    {
      "identity" : "swift-nio-ssl",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.23.1",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-nio-ssl.git"
    }
  ],
  "manifest_display_name" : "RediStack",
  "name" : "RediStack",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "RediStack",
      "targets" : [
        "RediStack"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "RediStackTestUtils",
      "targets" : [
        "RediStackTestUtils"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "RedisTypes",
      "targets" : [
        "RedisTypes"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "RedisTypesTests",
      "module_type" : "SwiftTarget",
      "name" : "RedisTypesTests",
      "path" : "Tests/RedisTypesTests",
      "product_dependencies" : [
        "NIO"
      ],
      "sources" : [
        "RedisSetTests.swift",
        "RedisTypesIntegrationTestCase.swift"
      ],
      "target_dependencies" : [
        "RediStack",
        "RedisTypes",
        "RediStackTestUtils"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RedisTypes",
      "module_type" : "SwiftTarget",
      "name" : "RedisTypes",
      "path" : "Sources/RedisTypes",
      "product_memberships" : [
        "RedisTypes"
      ],
      "sources" : [
        "RedisSet.swift"
      ],
      "target_dependencies" : [
        "RediStack"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RediStackTests",
      "module_type" : "SwiftTarget",
      "name" : "RediStackTests",
      "path" : "Tests/RediStackTests",
      "product_dependencies" : [
        "Atomics",
        "NIO",
        "NIOTestUtils"
      ],
      "sources" : [
        "ChannelHandlers/RedisByteDecoderTests.swift",
        "ChannelHandlers/RedisCommandHandlerTests.swift",
        "ChannelHandlers/RedisMessageEncoderTests.swift",
        "Cluster/RedisClusterNodeDescriptionProtocolTests.swift",
        "ConfigurationTests.swift",
        "ConnectionPoolTests.swift",
        "Helpers/MockNodeDescription.swift",
        "Helpers/RedisErrorTests.swift",
        "RESPTranslatorTests.swift",
        "RESPValueTests.swift",
        "RedisCommandEncoderTests.swift",
        "RedisConnection+ConfigurationTests.swift",
        "RedisConnectionTests.swift",
        "RedisHashSlotTests.swift",
        "RedisKeyLifetime.swift"
      ],
      "target_dependencies" : [
        "RediStack",
        "RediStackTestUtils"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RediStackTestUtils",
      "module_type" : "SwiftTarget",
      "name" : "RediStackTestUtils",
      "path" : "Sources/RediStackTestUtils",
      "product_dependencies" : [
        "NIOCore",
        "NIOEmbedded"
      ],
      "product_memberships" : [
        "RediStackTestUtils"
      ],
      "sources" : [
        "EmbeddedMockRedisServer.swift",
        "Extensions/General.swift",
        "Extensions/RediStack.swift",
        "RedisConnectionPoolIntegrationTestCase.swift",
        "RedisIntegrationTestCase.swift",
        "_Deprecations.swift"
      ],
      "target_dependencies" : [
        "RediStack"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RediStackIntegrationTests",
      "module_type" : "SwiftTarget",
      "name" : "RediStackIntegrationTests",
      "path" : "Tests/RediStackIntegrationTests",
      "product_dependencies" : [
        "NIO"
      ],
      "sources" : [
        "Commands/BasicCommandsTests.swift",
        "Commands/HashCommandsTests.swift",
        "Commands/ListCommandsTests.swift",
        "Commands/PubSubCommandsTests.swift",
        "Commands/SetCommandsTests.swift",
        "Commands/SortedSetCommandsTests.swift",
        "Commands/StringCommandsTests.swift",
        "RediStackIntegrationTestCase.swift",
        "RedisConnectionPoolTests.swift",
        "RedisConnectionTests.swift",
        "RedisLoggingTests.swift"
      ],
      "target_dependencies" : [
        "RediStack",
        "RediStackTestUtils"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RediStack",
      "module_type" : "SwiftTarget",
      "name" : "RediStack",
      "path" : "Sources/RediStack",
      "product_dependencies" : [
        "NIOCore",
        "NIOPosix",
        "NIO",
        "NIOConcurrencyHelpers",
        "NIOSSL",
        "Atomics",
        "Logging",
        "Metrics"
      ],
      "product_memberships" : [
        "RediStack",
        "RediStackTestUtils",
        "RedisTypes"
      ],
      "sources" : [
        "ChannelHandlers/RedisByteDecoder.swift",
        "ChannelHandlers/RedisCommandHandler.swift",
        "ChannelHandlers/RedisMessageEncoder.swift",
        "ChannelHandlers/RedisPubSubHandler.swift",
        "Cluster/RedisClusterNodeDescriptionProtocol.swift",
        "Cluster/RedisClusterNodeID.swift",
        "Cluster/RedisClusterShardDescriptionProtocol.swift",
        "Cluster/RedisHashSlot.swift",
        "Cluster/SwiftPolyfill.swift",
        "Commands/BasicCommands.swift",
        "Commands/HashCommands.swift",
        "Commands/ListCommands.swift",
        "Commands/PubSubCommands.swift",
        "Commands/SetCommands.swift",
        "Commands/SortedSetCommands.swift",
        "Commands/StringCommands.swift",
        "ConnectionPool/ConnectionPool.swift",
        "ConnectionPool/RedisConnectionPool+Configuration.swift",
        "ConnectionPool/RedisConnectionPool.swift",
        "ConnectionPool/RedisConnectionPoolError.swift",
        "Extensions/StandardLibrary.swift",
        "Extensions/SwiftNIO.swift",
        "RESP/RESPTranslator.swift",
        "RESP/RESPValue.swift",
        "RESP/RESPValueConvertible.swift",
        "RedisChannelName.swift",
        "RedisClient.swift",
        "RedisCommandEncoder-multi-encode.swift",
        "RedisCommandEncoder.swift",
        "RedisConnection+Configuration.swift",
        "RedisConnection.swift",
        "RedisError.swift",
        "RedisKey+TTL.swift",
        "RedisKey.swift",
        "RedisLogging.swift",
        "RedisMetrics.swift",
        "_Deprecations.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RESP3Tests",
      "module_type" : "SwiftTarget",
      "name" : "RESP3Tests",
      "path" : "Tests/RESP3Tests",
      "product_dependencies" : [
        "NIOCore",
        "NIOEmbedded",
        "NIOTestUtils"
      ],
      "sources" : [
        "RESP3TokenTests.swift"
      ],
      "target_dependencies" : [
        "RESP3"
      ],
      "type" : "test"
    },
    {
      "c99name" : "RESP3",
      "module_type" : "SwiftTarget",
      "name" : "RESP3",
      "path" : "Sources/RESP3",
      "product_dependencies" : [
        "NIOCore"
      ],
      "sources" : [
        "RESP3Error.swift",
        "RESP3Token.swift",
        "RESP3TokenDecoder.swift",
        "RESP3TypeIdentifier.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.0"
}
android-6.1-latest: Pulling from saguaro1/spi-images
Digest: sha256:396310cef4466ceb116ed5462b0b92d4deb353c0dad749b406b7fd226f6db9af
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:android-6.1-latest
Done.