Build Information
Successful build of RediStack, reference main (53fc85
), with Swift 6.1 for Android on 28 May 2025 20:03:40 UTC.
Swift 6 data race errors: 7
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
Build Log
570 | return self.eventLoop.makeSucceededFuture(())
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
571 | }
572 | logger.debug("subscription removed, with no current active subscriptions. leaving pubsub mode")
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:575:47: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
573 | // otherwise, remove the handler and update our state
574 | return self.channel.pipeline
575 | .removeRedisPubSubHandler(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
576 | .map {
577 | self.state = .open
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
565 | metadata: [
566 | RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 | RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
| `- warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
568 | ]
569 | )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:577:25: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
575 | .removeRedisPubSubHandler(handler)
576 | .map {
577 | self.state = .open
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
578 | logger.debug("connection is now open to all commands")
579 | }
[716/728] Compiling RediStack RedisConnection.swift
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:64:14: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
62 | client
63 | .connect(to: config.address)
64 | .flatMap {
| `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
65 | let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
66 | return connection.start(configuration: config).map({ _ in connection })
:
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:66:75: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
64 | .flatMap {
65 | let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
66 | return connection.start(configuration: config).map({ _ in connection })
| `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
67 | }
68 | }
:
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:178:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
176 | // if our state is still open, that means we didn't cause the closeFuture to resolve.
177 | // update state, metrics, and logging
178 | let oldState = self.state
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
179 | self.state = .closed
180 | RedisMetrics.activeConnectionCount.decrement()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:186:17: warning: reference to captured var 'logger' in concurrently-executing code
184 | break
185 | case .open, .pubsub:
186 | logger.warning("connection was closed unexpectedly")
| `- warning: reference to captured var 'logger' in concurrently-executing code
187 | self.onUnexpectedClosure?()
188 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:210:37: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
208 | // if a database index is specified, use it to switch the selected database before further operations happen
209 | if let database = configuration.initialDatabase {
210 | return future.flatMap { self.select(database: database) }
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
211 | }
212 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:257:31: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
255 | }
256 |
257 | return self.eventLoop.flatSubmit {
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
258 | self.send0(command: command, with: arguments, logger: logger)
259 | }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:258:13: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
256 |
257 | return self.eventLoop.flatSubmit {
258 | self.send0(command: command, with: arguments, logger: logger)
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
259 | }
260 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:258:48: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
256 |
257 | return self.eventLoop.flatSubmit {
258 | self.send0(command: command, with: arguments, logger: logger)
| `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
259 | }
260 | }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:323:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
321 |
322 | if self.sendCommandsImmediately {
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
| `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
21 | public struct RedisCommand {
| `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
22 | /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
23 | public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:323:51: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
321 |
322 | if self.sendCommandsImmediately {
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:325:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
| `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
326 | }
327 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
21 | public struct RedisCommand {
| `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
22 | /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
23 | public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:325:43: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
326 | }
327 | }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:358:47: warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
356 | let closePromise = self.eventLoop.makePromise(of: Void.self)
357 | let closeFuture = closePromise.futureResult
358 | self.channel.triggerUserOutboundEvent(RedisGracefulConnectionCloseEvent(), promise: closePromise)
| `- warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
359 |
360 | closeFuture.whenFailure {
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:196:15: note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
194 |
195 | /// A channel event that informs the ``RedisCommandHandler`` that it should close the channel gracefully
196 | public struct RedisGracefulConnectionCloseEvent {
| `- note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
197 | /// Creates a ``RedisGracefulConnectionCloseEvent``
198 | public init() {}
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:463:18: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
461 | return self.channel.pipeline
462 | .addRedisPubSubHandler()
463 | .flatMap { handler in
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
464 | logger.trace("handler added, adding subscription")
465 | return
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:468:34: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
466 | handler
467 | .addSubscription(
468 | for: target,
| `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
469 | messageReceiver: receiver,
470 | onSubscribe: onSubscribe,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:469:46: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
467 | .addSubscription(
468 | for: target,
469 | messageReceiver: receiver,
| |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
470 | onSubscribe: onSubscribe,
471 | onUnsubscribe: onUnsubscribe
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:470:42: warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
468 | for: target,
469 | messageReceiver: receiver,
470 | onSubscribe: onSubscribe,
| |- warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
471 | onUnsubscribe: onUnsubscribe
472 | )
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:471:44: warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
469 | messageReceiver: receiver,
470 | onSubscribe: onSubscribe,
471 | onUnsubscribe: onUnsubscribe
| |- warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
472 | )
473 | .flatMapError { error in
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
480 | // if there was an error, no subscriptions were made
481 | // so remove the handler and propogate the error to the caller by rethrowing it
482 | return self.channel.pipeline
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 | .removeRedisPubSubHandler(handler)
484 | .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
480 | // if there was an error, no subscriptions were made
481 | // so remove the handler and propogate the error to the caller by rethrowing it
482 | return self.channel.pipeline
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 | .removeRedisPubSubHandler(handler)
484 | .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:483:59: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
481 | // so remove the handler and propogate the error to the caller by rethrowing it
482 | return self.channel.pipeline
483 | .removeRedisPubSubHandler(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
484 | .flatMapThrowing { throw error }
485 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:489:36: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
487 | .map { _ in
488 | logger.trace("successfully entered pubsub mode")
489 | return handler
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
490 | }
491 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:494:21: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
492 | // success, update our state
493 | .map { (handler: RedisPubSubHandler) in
494 | self.state = .pubsub(handler)
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
495 | logger.debug("the connection is now in pubsub mode")
496 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
565 | metadata: [
566 | RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 | RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
| `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
568 | ]
569 | )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:570:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
568 | ]
569 | )
570 | return self.eventLoop.makeSucceededFuture(())
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
571 | }
572 | logger.debug("subscription removed, with no current active subscriptions. leaving pubsub mode")
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:575:47: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
573 | // otherwise, remove the handler and update our state
574 | return self.channel.pipeline
575 | .removeRedisPubSubHandler(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
576 | .map {
577 | self.state = .open
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
565 | metadata: [
566 | RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 | RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
| `- warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
568 | ]
569 | )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:577:25: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
575 | .removeRedisPubSubHandler(handler)
576 | .map {
577 | self.state = .open
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
578 | logger.debug("connection is now open to all commands")
579 | }
[717/728] Compiling RediStack RedisError.swift
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:64:14: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
62 | client
63 | .connect(to: config.address)
64 | .flatMap {
| `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
65 | let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
66 | return connection.start(configuration: config).map({ _ in connection })
:
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:66:75: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
64 | .flatMap {
65 | let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
66 | return connection.start(configuration: config).map({ _ in connection })
| `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
67 | }
68 | }
:
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:178:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
176 | // if our state is still open, that means we didn't cause the closeFuture to resolve.
177 | // update state, metrics, and logging
178 | let oldState = self.state
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
179 | self.state = .closed
180 | RedisMetrics.activeConnectionCount.decrement()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:186:17: warning: reference to captured var 'logger' in concurrently-executing code
184 | break
185 | case .open, .pubsub:
186 | logger.warning("connection was closed unexpectedly")
| `- warning: reference to captured var 'logger' in concurrently-executing code
187 | self.onUnexpectedClosure?()
188 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:210:37: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
208 | // if a database index is specified, use it to switch the selected database before further operations happen
209 | if let database = configuration.initialDatabase {
210 | return future.flatMap { self.select(database: database) }
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
211 | }
212 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:257:31: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
255 | }
256 |
257 | return self.eventLoop.flatSubmit {
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
258 | self.send0(command: command, with: arguments, logger: logger)
259 | }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:258:13: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
256 |
257 | return self.eventLoop.flatSubmit {
258 | self.send0(command: command, with: arguments, logger: logger)
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
259 | }
260 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:258:48: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
256 |
257 | return self.eventLoop.flatSubmit {
258 | self.send0(command: command, with: arguments, logger: logger)
| `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
259 | }
260 | }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:323:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
321 |
322 | if self.sendCommandsImmediately {
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
| `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
21 | public struct RedisCommand {
| `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
22 | /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
23 | public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:323:51: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
321 |
322 | if self.sendCommandsImmediately {
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:325:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
| `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
326 | }
327 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
21 | public struct RedisCommand {
| `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
22 | /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
23 | public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:325:43: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
326 | }
327 | }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:358:47: warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
356 | let closePromise = self.eventLoop.makePromise(of: Void.self)
357 | let closeFuture = closePromise.futureResult
358 | self.channel.triggerUserOutboundEvent(RedisGracefulConnectionCloseEvent(), promise: closePromise)
| `- warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
359 |
360 | closeFuture.whenFailure {
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:196:15: note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
194 |
195 | /// A channel event that informs the ``RedisCommandHandler`` that it should close the channel gracefully
196 | public struct RedisGracefulConnectionCloseEvent {
| `- note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
197 | /// Creates a ``RedisGracefulConnectionCloseEvent``
198 | public init() {}
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:463:18: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
461 | return self.channel.pipeline
462 | .addRedisPubSubHandler()
463 | .flatMap { handler in
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
464 | logger.trace("handler added, adding subscription")
465 | return
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:468:34: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
466 | handler
467 | .addSubscription(
468 | for: target,
| `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
469 | messageReceiver: receiver,
470 | onSubscribe: onSubscribe,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:469:46: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
467 | .addSubscription(
468 | for: target,
469 | messageReceiver: receiver,
| |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
470 | onSubscribe: onSubscribe,
471 | onUnsubscribe: onUnsubscribe
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:470:42: warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
468 | for: target,
469 | messageReceiver: receiver,
470 | onSubscribe: onSubscribe,
| |- warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
471 | onUnsubscribe: onUnsubscribe
472 | )
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:471:44: warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
469 | messageReceiver: receiver,
470 | onSubscribe: onSubscribe,
471 | onUnsubscribe: onUnsubscribe
| |- warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
472 | )
473 | .flatMapError { error in
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
480 | // if there was an error, no subscriptions were made
481 | // so remove the handler and propogate the error to the caller by rethrowing it
482 | return self.channel.pipeline
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 | .removeRedisPubSubHandler(handler)
484 | .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
480 | // if there was an error, no subscriptions were made
481 | // so remove the handler and propogate the error to the caller by rethrowing it
482 | return self.channel.pipeline
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 | .removeRedisPubSubHandler(handler)
484 | .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:483:59: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
481 | // so remove the handler and propogate the error to the caller by rethrowing it
482 | return self.channel.pipeline
483 | .removeRedisPubSubHandler(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
484 | .flatMapThrowing { throw error }
485 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:489:36: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
487 | .map { _ in
488 | logger.trace("successfully entered pubsub mode")
489 | return handler
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
490 | }
491 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:494:21: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
492 | // success, update our state
493 | .map { (handler: RedisPubSubHandler) in
494 | self.state = .pubsub(handler)
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
495 | logger.debug("the connection is now in pubsub mode")
496 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
565 | metadata: [
566 | RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 | RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
| `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
568 | ]
569 | )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:570:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
568 | ]
569 | )
570 | return self.eventLoop.makeSucceededFuture(())
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
571 | }
572 | logger.debug("subscription removed, with no current active subscriptions. leaving pubsub mode")
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:575:47: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
573 | // otherwise, remove the handler and update our state
574 | return self.channel.pipeline
575 | .removeRedisPubSubHandler(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
576 | .map {
577 | self.state = .open
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
565 | metadata: [
566 | RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 | RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
| `- warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
568 | ]
569 | )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:577:25: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
575 | .removeRedisPubSubHandler(handler)
576 | .map {
577 | self.state = .open
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
578 | logger.debug("connection is now open to all commands")
579 | }
[718/728] Compiling RediStack RedisKey+TTL.swift
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:64:14: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
62 | client
63 | .connect(to: config.address)
64 | .flatMap {
| `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
65 | let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
66 | return connection.start(configuration: config).map({ _ in connection })
:
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:66:75: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
64 | .flatMap {
65 | let connection = RedisConnection(configuredRESPChannel: $0, backgroundLogger: config.defaultLogger)
66 | return connection.start(configuration: config).map({ _ in connection })
| `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
67 | }
68 | }
:
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:178:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
176 | // if our state is still open, that means we didn't cause the closeFuture to resolve.
177 | // update state, metrics, and logging
178 | let oldState = self.state
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
179 | self.state = .closed
180 | RedisMetrics.activeConnectionCount.decrement()
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:186:17: warning: reference to captured var 'logger' in concurrently-executing code
184 | break
185 | case .open, .pubsub:
186 | logger.warning("connection was closed unexpectedly")
| `- warning: reference to captured var 'logger' in concurrently-executing code
187 | self.onUnexpectedClosure?()
188 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:210:37: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
208 | // if a database index is specified, use it to switch the selected database before further operations happen
209 | if let database = configuration.initialDatabase {
210 | return future.flatMap { self.select(database: database) }
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
211 | }
212 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:257:31: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
255 | }
256 |
257 | return self.eventLoop.flatSubmit {
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
258 | self.send0(command: command, with: arguments, logger: logger)
259 | }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:258:13: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
256 |
257 | return self.eventLoop.flatSubmit {
258 | self.send0(command: command, with: arguments, logger: logger)
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
259 | }
260 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:258:48: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
256 |
257 | return self.eventLoop.flatSubmit {
258 | self.send0(command: command, with: arguments, logger: logger)
| `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
259 | }
260 | }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:323:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
321 |
322 | if self.sendCommandsImmediately {
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
| `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
21 | public struct RedisCommand {
| `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
22 | /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
23 | public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:323:51: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
321 |
322 | if self.sendCommandsImmediately {
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:325:28: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
| `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
326 | }
327 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:21:15: note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
19 | /// This holds the full command message to be sent to Redis, and an `NIO.EventLoopPromise` to be fulfilled when a response has been received.
20 | /// - Important: This struct has _reference semantics_ due to the retention of the `NIO.EventLoopPromise`.
21 | public struct RedisCommand {
| `- note: consider making struct 'RedisCommand' conform to the 'Sendable' protocol
22 | /// A message waiting to be sent to Redis. A full message contains a command keyword and its arguments stored as a single `RESPValue.array`.
23 | public let message: RESPValue
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:325:43: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
323 | return channel.writeAndFlush(command).flatMap { promise.futureResult }
324 | } else {
325 | return channel.write(command).flatMap { promise.futureResult }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
326 | }
327 | }
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:358:47: warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
356 | let closePromise = self.eventLoop.makePromise(of: Void.self)
357 | let closeFuture = closePromise.futureResult
358 | self.channel.triggerUserOutboundEvent(RedisGracefulConnectionCloseEvent(), promise: closePromise)
| `- warning: type 'RedisGracefulConnectionCloseEvent' does not conform to the 'Sendable' protocol
359 |
360 | closeFuture.whenFailure {
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:196:15: note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
194 |
195 | /// A channel event that informs the ``RedisCommandHandler`` that it should close the channel gracefully
196 | public struct RedisGracefulConnectionCloseEvent {
| `- note: consider making struct 'RedisGracefulConnectionCloseEvent' conform to the 'Sendable' protocol
197 | /// Creates a ``RedisGracefulConnectionCloseEvent``
198 | public init() {}
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:463:18: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
461 | return self.channel.pipeline
462 | .addRedisPubSubHandler()
463 | .flatMap { handler in
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
464 | logger.trace("handler added, adding subscription")
465 | return
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:468:34: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
466 | handler
467 | .addSubscription(
468 | for: target,
| `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
469 | messageReceiver: receiver,
470 | onSubscribe: onSubscribe,
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:469:46: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
467 | .addSubscription(
468 | for: target,
469 | messageReceiver: receiver,
| |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
470 | onSubscribe: onSubscribe,
471 | onUnsubscribe: onUnsubscribe
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:470:42: warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
468 | for: target,
469 | messageReceiver: receiver,
470 | onSubscribe: onSubscribe,
| |- warning: capture of 'onSubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
471 | onUnsubscribe: onUnsubscribe
472 | )
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:471:44: warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
469 | messageReceiver: receiver,
470 | onSubscribe: onSubscribe,
471 | onUnsubscribe: onUnsubscribe
| |- warning: capture of 'onUnsubscribe' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
472 | )
473 | .flatMapError { error in
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
480 | // if there was an error, no subscriptions were made
481 | // so remove the handler and propogate the error to the caller by rethrowing it
482 | return self.channel.pipeline
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 | .removeRedisPubSubHandler(handler)
484 | .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:482:36: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
480 | // if there was an error, no subscriptions were made
481 | // so remove the handler and propogate the error to the caller by rethrowing it
482 | return self.channel.pipeline
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
483 | .removeRedisPubSubHandler(handler)
484 | .flatMapThrowing { throw error }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:483:59: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
481 | // so remove the handler and propogate the error to the caller by rethrowing it
482 | return self.channel.pipeline
483 | .removeRedisPubSubHandler(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
484 | .flatMapThrowing { throw error }
485 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:489:36: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
487 | .map { _ in
488 | logger.trace("successfully entered pubsub mode")
489 | return handler
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
490 | }
491 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:494:21: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
492 | // success, update our state
493 | .map { (handler: RedisPubSubHandler) in
494 | self.state = .pubsub(handler)
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
495 | logger.debug("the connection is now in pubsub mode")
496 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
565 | metadata: [
566 | RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 | RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
| `- warning: capture of 'target' with non-sendable type 'RedisSubscriptionTarget' in a '@Sendable' closure
568 | ]
569 | )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:570:28: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
568 | ]
569 | )
570 | return self.eventLoop.makeSucceededFuture(())
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
571 | }
572 | logger.debug("subscription removed, with no current active subscriptions. leaving pubsub mode")
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:575:47: warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
573 | // otherwise, remove the handler and update our state
574 | return self.channel.pipeline
575 | .removeRedisPubSubHandler(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
576 | .map {
577 | self.state = .open
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:567:72: warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
565 | metadata: [
566 | RedisLogging.MetadataKeys.subscriptionCount: "\($0)",
567 | RedisLogging.MetadataKeys.pubsubTarget: "\(target.debugDescription)",
| `- warning: implicit capture of 'target' requires that 'RedisSubscriptionTarget' conforms to 'Sendable'; this is an error in the Swift 6 language mode
568 | ]
569 | )
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:45:13: note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
43 | ///
44 | /// Use the `values` property to quickly access the underlying list of the target for any purpose that requires a the `String` values.
45 | public enum RedisSubscriptionTarget: Equatable, CustomDebugStringConvertible {
| `- note: consider making enum 'RedisSubscriptionTarget' conform to the 'Sendable' protocol
46 | case channels([RedisChannelName])
47 | case patterns([String])
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:577:25: warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
:
575 | .removeRedisPubSubHandler(handler)
576 | .map {
577 | self.state = .open
| `- warning: capture of 'self' with non-sendable type 'RedisConnection' in a '@Sendable' closure
578 | logger.debug("connection is now open to all commands")
579 | }
[719/728] Compiling RediStack StandardLibrary.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
64 | ]
65 | return .andAllSucceed(
66 | handlers.map { self.addHandler($0, name: $1) },
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
67 | on: self.eventLoop
68 | )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 | self.handler(type: RedisPubSubHandler.self)
114 | .flatMapError {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 | // if it doesn't exist, add it to the pipeline
116 | guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 | return self.handler(type: RedisCommandHandler.self)
122 | .flatMap {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
37 | public final class RedisCommandHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
38 | /// FIFO queue of promises waiting to receive a response value from a sent command.
39 | private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 | .map { pubsubHandler }
| `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 | }
127 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 | /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 | public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 | self.removeHandler(handler)
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 | .flatMapError {
135 | // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
[720/728] Compiling RediStack SwiftNIO.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
64 | ]
65 | return .andAllSucceed(
66 | handlers.map { self.addHandler($0, name: $1) },
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
67 | on: self.eventLoop
68 | )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 | self.handler(type: RedisPubSubHandler.self)
114 | .flatMapError {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 | // if it doesn't exist, add it to the pipeline
116 | guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 | return self.handler(type: RedisCommandHandler.self)
122 | .flatMap {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
37 | public final class RedisCommandHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
38 | /// FIFO queue of promises waiting to receive a response value from a sent command.
39 | private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 | .map { pubsubHandler }
| `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 | }
127 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 | /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 | public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 | self.removeHandler(handler)
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 | .flatMapError {
135 | // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
[721/728] Compiling RediStack RESPTranslator.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
64 | ]
65 | return .andAllSucceed(
66 | handlers.map { self.addHandler($0, name: $1) },
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
67 | on: self.eventLoop
68 | )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 | self.handler(type: RedisPubSubHandler.self)
114 | .flatMapError {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 | // if it doesn't exist, add it to the pipeline
116 | guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 | return self.handler(type: RedisCommandHandler.self)
122 | .flatMap {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
37 | public final class RedisCommandHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
38 | /// FIFO queue of promises waiting to receive a response value from a sent command.
39 | private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 | .map { pubsubHandler }
| `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 | }
127 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 | /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 | public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 | self.removeHandler(handler)
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 | .flatMapError {
135 | // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
[722/728] Compiling RediStack RESPValue.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
64 | ]
65 | return .andAllSucceed(
66 | handlers.map { self.addHandler($0, name: $1) },
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
67 | on: self.eventLoop
68 | )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 | self.handler(type: RedisPubSubHandler.self)
114 | .flatMapError {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 | // if it doesn't exist, add it to the pipeline
116 | guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 | return self.handler(type: RedisCommandHandler.self)
122 | .flatMap {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
37 | public final class RedisCommandHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
38 | /// FIFO queue of promises waiting to receive a response value from a sent command.
39 | private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 | .map { pubsubHandler }
| `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 | }
127 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 | /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 | public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 | self.removeHandler(handler)
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 | .flatMapError {
135 | // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
[723/728] Compiling RediStack RESPValueConvertible.swift
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:66:44: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
64 | ]
65 | return .andAllSucceed(
66 | handlers.map { self.addHandler($0, name: $1) },
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
67 | on: self.eventLoop
68 | )
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:114:14: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
112 |
113 | self.handler(type: RedisPubSubHandler.self)
114 | .flatMapError {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
115 | // if it doesn't exist, add it to the pipeline
116 | guard
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:122:22: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
120 |
121 | return self.handler(type: RedisCommandHandler.self)
122 | .flatMap {
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:48: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:124:114: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
122 | .flatMap {
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
| `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
125 | .map { pubsubHandler }
126 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisCommandHandler.swift:37:20: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
35 | /// `RedisCommandHandler` is a `NIO.ChannelDuplexHandler` that sends `RedisCommand` instances to Redis,
36 | /// and fulfills the command's `NIO.EventLoopPromise` as soon as a `RESPValue` response has been received from Redis.
37 | public final class RedisCommandHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
38 | /// FIFO queue of promises waiting to receive a response value from a sent command.
39 | private var commandResponseQueue: CircularBuffer<EventLoopPromise<RESPValue>>
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:125:36: warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
123 | let pubsubHandler = RedisPubSubHandler(eventLoop: self.eventLoop)
124 | return self.addHandler(pubsubHandler, name: "RediStack.PubSubHandler", position: .before($0))
125 | .map { pubsubHandler }
| `- warning: capture of 'pubsubHandler' with non-sendable type 'RedisPubSubHandler' in a '@Sendable' closure
126 | }
127 | }
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
/host/spi-builder-workspace/Sources/RediStack/Extensions/SwiftNIO.swift:133:28: warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
131 | /// - Returns: A `NIO.EventLoopFuture` that resolves when the handler was removed from the pipeline.
132 | public func removeRedisPubSubHandler(_ handler: RedisPubSubHandler) -> EventLoopFuture<Void> {
133 | self.removeHandler(handler)
| `- warning: type 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
134 | .flatMapError {
135 | // if it was already removed, then we can just succeed
/host/spi-builder-workspace/Sources/RediStack/ChannelHandlers/RedisPubSubHandler.swift:101:20: note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
99 | ///
100 | /// When the handler has received a `removeHandler(context:removalToken:)` request, it will remove itself immediately.
101 | public final class RedisPubSubHandler {
| `- note: class 'RedisPubSubHandler' does not conform to the 'Sendable' protocol
102 | private var state: State = .default
103 |
[724/728] Compiling RediStack HashCommands.swift
/host/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 | /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 | public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 | guard fields.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
324 |
325 | var args: [RESPValue] = [.init(from: key)]
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
74 | /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
75 | public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
76 | guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
| `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
77 |
78 | var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 | assert(count >= 0, "A negative max count is nonsense.")
151 |
152 | guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | /// - Returns: The elements randomly selected from the set.
191 | public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 | guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 | /// - Returns: A list of elements resulting from the difference.
298 | public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | /// - Returns: A list of elements resulting from the intersection.
373 | public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 | /// - Returns: A list of elements resulting from the union.
448 | public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
605 |
606 | if let c = count {
607 | guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
608 |
609 | args.append(.init(bulk: c))
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[725/728] Compiling RediStack ListCommands.swift
/host/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 | /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 | public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 | guard fields.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
324 |
325 | var args: [RESPValue] = [.init(from: key)]
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
74 | /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
75 | public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
76 | guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
| `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
77 |
78 | var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 | assert(count >= 0, "A negative max count is nonsense.")
151 |
152 | guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | /// - Returns: The elements randomly selected from the set.
191 | public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 | guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 | /// - Returns: A list of elements resulting from the difference.
298 | public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | /// - Returns: A list of elements resulting from the intersection.
373 | public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 | /// - Returns: A list of elements resulting from the union.
448 | public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
605 |
606 | if let c = count {
607 | guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
608 |
609 | args.append(.init(bulk: c))
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[726/728] Compiling RediStack PubSubCommands.swift
/host/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 | /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 | public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 | guard fields.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
324 |
325 | var args: [RESPValue] = [.init(from: key)]
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
74 | /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
75 | public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
76 | guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
| `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
77 |
78 | var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 | assert(count >= 0, "A negative max count is nonsense.")
151 |
152 | guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | /// - Returns: The elements randomly selected from the set.
191 | public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 | guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 | /// - Returns: A list of elements resulting from the difference.
298 | public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | /// - Returns: A list of elements resulting from the intersection.
373 | public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 | /// - Returns: A list of elements resulting from the union.
448 | public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
605 |
606 | if let c = count {
607 | guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
608 |
609 | args.append(.init(bulk: c))
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[727/728] Compiling RediStack SetCommands.swift
/host/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 | /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 | public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 | guard fields.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
324 |
325 | var args: [RESPValue] = [.init(from: key)]
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
74 | /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
75 | public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
76 | guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
| `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
77 |
78 | var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 | assert(count >= 0, "A negative max count is nonsense.")
151 |
152 | guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | /// - Returns: The elements randomly selected from the set.
191 | public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 | guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 | /// - Returns: A list of elements resulting from the difference.
298 | public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | /// - Returns: A list of elements resulting from the intersection.
373 | public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 | /// - Returns: A list of elements resulting from the union.
448 | public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
605 |
606 | if let c = count {
607 | guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
608 |
609 | args.append(.init(bulk: c))
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[728/728] Compiling RediStack SortedSetCommands.swift
/host/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 | /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 | public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 | guard fields.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
324 |
325 | var args: [RESPValue] = [.init(from: key)]
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
74 | /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
75 | public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
76 | guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
| `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
77 |
78 | var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/host/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 | assert(count >= 0, "A negative max count is nonsense.")
151 |
152 | guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | /// - Returns: The elements randomly selected from the set.
191 | public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 | guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 | let args: [RESPValue] = [
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 | /// - Returns: A list of elements resulting from the difference.
298 | public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | /// - Returns: A list of elements resulting from the intersection.
373 | public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 | /// - Returns: A list of elements resulting from the union.
448 | public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 | let args = keys.map(RESPValue.init)
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
605 |
606 | if let c = count {
607 | guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
608 |
609 | args.append(.init(bulk: c))
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[730/738] Emitting module RedisTypes
[731/738] Compiling RedisTypes RedisSet.swift
/host/spi-builder-workspace/Sources/RedisTypes/RedisSet.swift:199:62: warning: type 'Element' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
57 | ///
58 | /// See [https://redis.io/topics/data-types-intro#sets](https://redis.io/topics/data-types-intro#sets)
59 | public struct RedisSet<Element> where Element: RESPValueConvertible {
| `- note: consider making generic parameter 'Element' conform to the 'Sendable' protocol
60 | /// The key in Redis that this instance is a reference to.
61 | public var identifier: RedisKey { self.id }
:
197 | public func popRandomElements(max count: Int) -> EventLoopFuture<[Element]> {
198 | guard count >= 0 else { return self.client.eventLoop.makeFailedFuture(RedisError.indexOutOfRange) }
199 | guard count >= 1 else { return self.client.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'Element' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
200 | return self.client.spop(from: self.id, max: count)
201 | .map { $0.compactMap(Element.init) }
[732/738] Compiling RediStackTestUtils _Deprecations.swift
[733/739] Emitting module RediStackTestUtils
[734/739] Compiling RediStackTestUtils EmbeddedMockRedisServer.swift
/host/spi-builder-workspace/Sources/RediStackTestUtils/EmbeddedMockRedisServer.swift:62:34: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
60 | // We always allow this.
61 | let response = RESPValue.simpleString("OK".byteBuffer)
62 | data.responsePromise.succeed(response)
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
63 |
64 | default:
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStackTestUtils/EmbeddedMockRedisServer.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
15 | import NIOCore
16 | import NIOEmbedded
17 | import RediStack
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
18 | import XCTest
19 |
/host/spi-builder-workspace/Sources/RediStackTestUtils/EmbeddedMockRedisServer.swift:73:13: warning: capture of 'self' with non-sendable type 'EmbeddedMockRedisServer' in a '@Sendable' closure
26 | /// This is not really a Redis server: it's just something that lets us stub out the connection management in order to let
27 | /// us test the connection pool.
28 | internal final class EmbeddedMockRedisServer {
| `- note: class 'EmbeddedMockRedisServer' does not conform to the 'Sendable' protocol
29 | var channels: ArraySlice<EmbeddedChannel> = []
30 | var loop: EmbeddedEventLoop = EmbeddedEventLoop()
:
71 | let channel = EmbeddedChannel(handler: GracefulShutdownToCloseHandler(), loop: self.loop)
72 | channel.closeFuture.whenComplete { _ in
73 | self.channels.removeAll(where: { $0 === channel })
| `- warning: capture of 'self' with non-sendable type 'EmbeddedMockRedisServer' in a '@Sendable' closure
74 | }
75 |
[735/739] Compiling RediStackTestUtils RedisIntegrationTestCase.swift
/host/spi-builder-workspace/Sources/RediStackTestUtils/RedisIntegrationTestCase.swift:69:37: warning: capture of 'self' with non-sendable type 'RedisIntegrationTestCase' in a '@Sendable' closure
21 | ///
22 | /// See `RedisConnection.make(configuration:boundEventLoop:)` to understand how connections are made.
23 | open class RedisIntegrationTestCase: XCTestCase {
| `- note: class 'RedisIntegrationTestCase' does not conform to the 'Sendable' protocol
24 | /// An overridable value of the Redis instance's hostname to connect to for the test suite(s).
25 | ///
:
67 | if self.connection.isConnected {
68 | _ = try self.connection.send(command: "FLUSHALL")
69 | .flatMap { _ in self.connection.close() }
| `- warning: capture of 'self' with non-sendable type 'RedisIntegrationTestCase' in a '@Sendable' closure
70 | .wait()
71 | }
/host/spi-builder-workspace/Sources/RediStackTestUtils/RedisIntegrationTestCase.swift:91:11: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
89 | ),
90 | boundEventLoop: eventLoopGroup.next()
91 | ).wait()
| `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
92 | }
93 | }
/host/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/host/spi-builder-workspace/Sources/RediStackTestUtils/RedisIntegrationTestCase.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
15 | import NIOCore
16 | import NIOPosix
17 | import RediStack
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
18 | import XCTest
19 |
[736/739] Compiling RediStackTestUtils RediStack.swift
[737/739] Compiling RediStackTestUtils General.swift
[738/739] Compiling RediStackTestUtils RedisConnectionPoolIntegrationTestCase.swift
/host/spi-builder-workspace/Sources/RediStackTestUtils/RedisConnectionPoolIntegrationTestCase.swift:67:57: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
65 | open override func tearDown() {
66 | do {
67 | _ = try self.pool.send(command: "FLUSHALL").wait()
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
68 | } catch let err as RedisConnectionPoolError where err == .poolClosed {
69 | // Ok, this is fine.
/host/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/host/spi-builder-workspace/Sources/RediStackTestUtils/RedisConnectionPoolIntegrationTestCase.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
15 | import NIOCore
16 | import NIOPosix
17 | import RediStack
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
18 | import XCTest
19 |
Build complete! (165.99s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-atomics",
"requirement" : {
"range" : [
{
"lower_bound" : "1.1.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-atomics.git"
},
{
"identity" : "swift-log",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-log.git"
},
{
"identity" : "swift-metrics",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "3.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-metrics.git"
},
{
"identity" : "swift-nio",
"requirement" : {
"range" : [
{
"lower_bound" : "2.43.0",
"upper_bound" : "3.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-nio.git"
},
{
"identity" : "swift-nio-ssl",
"requirement" : {
"range" : [
{
"lower_bound" : "2.23.1",
"upper_bound" : "3.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-nio-ssl.git"
}
],
"manifest_display_name" : "RediStack",
"name" : "RediStack",
"path" : "/host/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "RediStack",
"targets" : [
"RediStack"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "RediStackTestUtils",
"targets" : [
"RediStackTestUtils"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "RedisTypes",
"targets" : [
"RedisTypes"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "RedisTypesTests",
"module_type" : "SwiftTarget",
"name" : "RedisTypesTests",
"path" : "Tests/RedisTypesTests",
"product_dependencies" : [
"NIO"
],
"sources" : [
"RedisSetTests.swift",
"RedisTypesIntegrationTestCase.swift"
],
"target_dependencies" : [
"RediStack",
"RedisTypes",
"RediStackTestUtils"
],
"type" : "test"
},
{
"c99name" : "RedisTypes",
"module_type" : "SwiftTarget",
"name" : "RedisTypes",
"path" : "Sources/RedisTypes",
"product_memberships" : [
"RedisTypes"
],
"sources" : [
"RedisSet.swift"
],
"target_dependencies" : [
"RediStack"
],
"type" : "library"
},
{
"c99name" : "RediStackTests",
"module_type" : "SwiftTarget",
"name" : "RediStackTests",
"path" : "Tests/RediStackTests",
"product_dependencies" : [
"Atomics",
"NIO",
"NIOTestUtils"
],
"sources" : [
"ChannelHandlers/RedisByteDecoderTests.swift",
"ChannelHandlers/RedisCommandHandlerTests.swift",
"ChannelHandlers/RedisMessageEncoderTests.swift",
"Cluster/RedisClusterNodeDescriptionProtocolTests.swift",
"ConfigurationTests.swift",
"ConnectionPoolTests.swift",
"Helpers/MockNodeDescription.swift",
"Helpers/RedisErrorTests.swift",
"RESPTranslatorTests.swift",
"RESPValueTests.swift",
"RedisCommandEncoderTests.swift",
"RedisConnection+ConfigurationTests.swift",
"RedisConnectionTests.swift",
"RedisHashSlotTests.swift",
"RedisKeyLifetime.swift"
],
"target_dependencies" : [
"RediStack",
"RediStackTestUtils"
],
"type" : "test"
},
{
"c99name" : "RediStackTestUtils",
"module_type" : "SwiftTarget",
"name" : "RediStackTestUtils",
"path" : "Sources/RediStackTestUtils",
"product_dependencies" : [
"NIOCore",
"NIOEmbedded"
],
"product_memberships" : [
"RediStackTestUtils"
],
"sources" : [
"EmbeddedMockRedisServer.swift",
"Extensions/General.swift",
"Extensions/RediStack.swift",
"RedisConnectionPoolIntegrationTestCase.swift",
"RedisIntegrationTestCase.swift",
"_Deprecations.swift"
],
"target_dependencies" : [
"RediStack"
],
"type" : "library"
},
{
"c99name" : "RediStackIntegrationTests",
"module_type" : "SwiftTarget",
"name" : "RediStackIntegrationTests",
"path" : "Tests/RediStackIntegrationTests",
"product_dependencies" : [
"NIO"
],
"sources" : [
"Commands/BasicCommandsTests.swift",
"Commands/HashCommandsTests.swift",
"Commands/ListCommandsTests.swift",
"Commands/PubSubCommandsTests.swift",
"Commands/SetCommandsTests.swift",
"Commands/SortedSetCommandsTests.swift",
"Commands/StringCommandsTests.swift",
"RediStackIntegrationTestCase.swift",
"RedisConnectionPoolTests.swift",
"RedisConnectionTests.swift",
"RedisLoggingTests.swift"
],
"target_dependencies" : [
"RediStack",
"RediStackTestUtils"
],
"type" : "test"
},
{
"c99name" : "RediStack",
"module_type" : "SwiftTarget",
"name" : "RediStack",
"path" : "Sources/RediStack",
"product_dependencies" : [
"NIOCore",
"NIOPosix",
"NIO",
"NIOConcurrencyHelpers",
"NIOSSL",
"Atomics",
"Logging",
"Metrics"
],
"product_memberships" : [
"RediStack",
"RediStackTestUtils",
"RedisTypes"
],
"sources" : [
"ChannelHandlers/RedisByteDecoder.swift",
"ChannelHandlers/RedisCommandHandler.swift",
"ChannelHandlers/RedisMessageEncoder.swift",
"ChannelHandlers/RedisPubSubHandler.swift",
"Cluster/RedisClusterNodeDescriptionProtocol.swift",
"Cluster/RedisClusterNodeID.swift",
"Cluster/RedisClusterShardDescriptionProtocol.swift",
"Cluster/RedisHashSlot.swift",
"Cluster/SwiftPolyfill.swift",
"Commands/BasicCommands.swift",
"Commands/HashCommands.swift",
"Commands/ListCommands.swift",
"Commands/PubSubCommands.swift",
"Commands/SetCommands.swift",
"Commands/SortedSetCommands.swift",
"Commands/StringCommands.swift",
"ConnectionPool/ConnectionPool.swift",
"ConnectionPool/RedisConnectionPool+Configuration.swift",
"ConnectionPool/RedisConnectionPool.swift",
"ConnectionPool/RedisConnectionPoolError.swift",
"Extensions/StandardLibrary.swift",
"Extensions/SwiftNIO.swift",
"RESP/RESPTranslator.swift",
"RESP/RESPValue.swift",
"RESP/RESPValueConvertible.swift",
"RedisChannelName.swift",
"RedisClient.swift",
"RedisCommandEncoder-multi-encode.swift",
"RedisCommandEncoder.swift",
"RedisConnection+Configuration.swift",
"RedisConnection.swift",
"RedisError.swift",
"RedisKey+TTL.swift",
"RedisKey.swift",
"RedisLogging.swift",
"RedisMetrics.swift",
"_Deprecations.swift"
],
"type" : "library"
},
{
"c99name" : "RESP3Tests",
"module_type" : "SwiftTarget",
"name" : "RESP3Tests",
"path" : "Tests/RESP3Tests",
"product_dependencies" : [
"NIOCore",
"NIOEmbedded",
"NIOTestUtils"
],
"sources" : [
"RESP3TokenTests.swift"
],
"target_dependencies" : [
"RESP3"
],
"type" : "test"
},
{
"c99name" : "RESP3",
"module_type" : "SwiftTarget",
"name" : "RESP3",
"path" : "Sources/RESP3",
"product_dependencies" : [
"NIOCore"
],
"sources" : [
"RESP3Error.swift",
"RESP3Token.swift",
"RESP3TokenDecoder.swift",
"RESP3TypeIdentifier.swift"
],
"type" : "library"
}
],
"tools_version" : "5.6"
}
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:fe1962677657b2408c217cb5cceb3c09bc1d91486e360cebbc6eee461a5945d8
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
Done.