Build Information
Successful build of RediStack, reference main (a05d4b
), with Swift 6.1 for macOS (SPM) on 30 Jul 2025 13:38:25 UTC.
Swift 6 data race errors: 7
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
| `- note: class 'ConnectionPool' does not conform to the 'Sendable' protocol
39 | /// A function used to create Redis connections.
40 | private let connectionFactory: (EventLoop) -> EventLoopFuture<RedisConnection>
:
206 |
207 | self.loop.scheduleTask(in: delay) {
208 | self.connectionFactory(self.loop)
| `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
209 | .whenComplete { result in
210 | self.loop.preconditionInEventLoop()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:210:21: warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
36 | /// and being used, at the cost of incurring more reconnects under low load. Of course, when we're under low load we don't
37 | /// really care how many reconnects there are.
38 | internal final class ConnectionPool {
| `- note: class 'ConnectionPool' does not conform to the 'Sendable' protocol
39 | /// A function used to create Redis connections.
40 | private let connectionFactory: (EventLoop) -> EventLoopFuture<RedisConnection>
:
208 | self.connectionFactory(self.loop)
209 | .whenComplete { result in
210 | self.loop.preconditionInEventLoop()
| `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
211 |
212 | self.pendingConnectionCount -= 1
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:251:64: warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
36 | /// and being used, at the cost of incurring more reconnects under low load. Of course, when we're under low load we don't
37 | /// really care how many reconnects there are.
38 | internal final class ConnectionPool {
| `- note: class 'ConnectionPool' does not conform to the 'Sendable' protocol
39 | /// A function used to create Redis connections.
40 | private let connectionFactory: (EventLoop) -> EventLoopFuture<RedisConnection>
:
249 | // Great, we want this. We'll be "returning" it to the pool. First,
250 | // attach the close callback to it.
251 | connection.channel.closeFuture.whenComplete { _ in self.poolConnectionClosed(connection, logger: logger) }
| `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
252 | self._returnConnection(connection, logger: logger)
253 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:251:90: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
249 | // Great, we want this. We'll be "returning" it to the pool. First,
250 | // attach the close callback to it.
251 | connection.channel.closeFuture.whenComplete { _ in self.poolConnectionClosed(connection, logger: logger) }
| `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
252 | self._returnConnection(connection, logger: logger)
253 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:483:13: warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
36 | /// and being used, at the cost of incurring more reconnects under low load. Of course, when we're under low load we don't
37 | /// really care how many reconnects there are.
38 | internal final class ConnectionPool {
| `- note: class 'ConnectionPool' does not conform to the 'Sendable' protocol
39 | /// A function used to create Redis connections.
40 | private let connectionFactory: (EventLoop) -> EventLoopFuture<RedisConnection>
:
481 | private func closeConnectionForShutdown(_ connection: RedisConnection) {
482 | connection.close().whenComplete { _ in
483 | self.loop.preconditionInEventLoop()
| `- warning: capture of 'self' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
484 |
485 | switch self.state {
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:497:55: warning: implicit capture of 'self' requires that 'ConnectionPool' conforms to 'Sendable'; this is an error in the Swift 6 language mode
36 | /// and being used, at the cost of incurring more reconnects under low load. Of course, when we're under low load we don't
37 | /// really care how many reconnects there are.
38 | internal final class ConnectionPool {
| `- note: class 'ConnectionPool' does not conform to the 'Sendable' protocol
39 | /// A function used to create Redis connections.
40 | private let connectionFactory: (EventLoop) -> EventLoopFuture<RedisConnection>
:
495 | // The state must not change if we are closing a connection, while we are
496 | // closing the pool.
497 | preconditionFailure("Invalid state: \(self.state)")
| `- warning: implicit capture of 'self' requires that 'ConnectionPool' conforms to 'Sendable'; this is an error in the Swift 6 language mode
498 | }
499 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:547:70: warning: passing non-sendable parameter 'onTimeout' to function expecting a @Sendable closure
543 | }
544 |
545 | mutating func scheduleDeadline(loop: EventLoop, deadline: NIODeadline, _ onTimeout: @escaping () -> Void) {
| `- note: parameter 'onTimeout' is implicitly non-sendable
546 | assert(self.timeoutTask == nil)
547 | self.timeoutTask = loop.scheduleTask(deadline: deadline, onTimeout)
| `- warning: passing non-sendable parameter 'onTimeout' to function expecting a @Sendable closure
548 | }
549 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:552:25: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
550 | func succeed(_ connection: RedisConnection) {
551 | self.timeoutTask?.cancel()
552 | self.result.succeed(connection)
| `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
553 | }
554 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:102:13: warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
29 | /// single `EventLoop`: if callers call the API from a different `EventLoop` (or from no `EventLoop` at all)
30 | /// `RedisConnectionPool` will ensure that the call is dispatched to the correct loop.
31 | public final class RedisConnectionPool {
| `- note: class 'RedisConnectionPool' does not conform to the 'Sendable' protocol
32 | /// A unique identifer to represent this connection.
33 | public let id = UUID()
:
100 | public func activate(logger: Logger? = nil) {
101 | self.loop.execute {
102 | self.pool?.activate(logger: self.prepareLoggerForUse(logger))
| `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
103 | }
104 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:115:13: warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
29 | /// single `EventLoop`: if callers call the API from a different `EventLoop` (or from no `EventLoop` at all)
30 | /// `RedisConnectionPool` will ensure that the call is dispatched to the correct loop.
31 | public final class RedisConnectionPool {
| `- note: class 'RedisConnectionPool' does not conform to the 'Sendable' protocol
32 | /// A unique identifer to represent this connection.
33 | public let id = UUID()
:
113 | public func close(promise: EventLoopPromise<Void>? = nil, logger: Logger? = nil) {
114 | self.loop.execute {
115 | self.pool?.close(promise: promise, logger: self.prepareLoggerForUse(logger))
| `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
116 |
117 | self.pubsubConnection = nil
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:164:36: warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
162 |
163 | operation(connection)
164 | .always { _ in returnConnection(connection, context) }
| |- warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
165 | },
166 | preferredConnection: nil,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:164:53: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
162 |
163 | operation(connection)
164 | .always { _ in returnConnection(connection, context) }
| `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
165 | },
166 | preferredConnection: nil,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:198:25: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
196 |
197 | for request in unbufferedRequests {
198 | request.completeWith(self.connectionFactory(self.loop))
| `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
199 | }
200 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:191:13: warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
29 | /// single `EventLoop`: if callers call the API from a different `EventLoop` (or from no `EventLoop` at all)
30 | /// `RedisConnectionPool` will ensure that the call is dispatched to the correct loop.
31 | public final class RedisConnectionPool {
| `- note: class 'RedisConnectionPool' does not conform to the 'Sendable' protocol
32 | /// A unique identifer to represent this connection.
33 | public let id = UUID()
:
189 |
190 | self.loop.execute {
191 | self.serverConnectionAddresses.update(newAddresses)
| `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
192 |
193 | // Shiny, we can unbuffer any pending connections and pass them on as they now have somewhere to go.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:249:21: warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
29 | /// single `EventLoop`: if callers call the API from a different `EventLoop` (or from no `EventLoop` at all)
30 | /// `RedisConnectionPool` will ensure that the call is dispatched to the correct loop.
31 | public final class RedisConnectionPool {
| `- note: class 'RedisConnectionPool' does not conform to the 'Sendable' protocol
32 | /// A unique identifer to represent this connection.
33 | public let id = UUID()
:
247 | connection.allowSubscriptions = false
248 | connection.channel.closeFuture.whenComplete { _ in
249 | self.configuration.onUnexpectedConnectionClose?(connection)
| `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
250 | }
251 | return connection
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:249:21: warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
29 | /// single `EventLoop`: if callers call the API from a different `EventLoop` (or from no `EventLoop` at all)
30 | /// `RedisConnectionPool` will ensure that the call is dispatched to the correct loop.
31 | public final class RedisConnectionPool {
| `- note: class 'RedisConnectionPool' does not conform to the 'Sendable' protocol
32 | /// A unique identifer to represent this connection.
33 | public let id = UUID()
:
247 | connection.allowSubscriptions = false
248 | connection.channel.closeFuture.whenComplete { _ in
249 | self.configuration.onUnexpectedConnectionClose?(connection)
| `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
250 | }
251 | return connection
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:249:69: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
247 | connection.allowSubscriptions = false
248 | connection.channel.closeFuture.whenComplete { _ in
249 | self.configuration.onUnexpectedConnectionClose?(connection)
| `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
250 | }
251 | return connection
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:324:36: warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
322 | connection
323 | .send(command: command, with: arguments, logger: context)
324 | .always { _ in returnConnection(connection, context) }
| |- warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
325 | },
326 | preferredConnection: nil,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:324:53: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
322 | connection
323 | .send(command: command, with: arguments, logger: context)
324 | .always { _ in returnConnection(connection, context) }
| `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
325 | },
326 | preferredConnection: nil,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:429:29: warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
29 | /// single `EventLoop`: if callers call the API from a different `EventLoop` (or from no `EventLoop` at all)
30 | /// `RedisConnectionPool` will ensure that the call is dispatched to the correct loop.
31 | public final class RedisConnectionPool {
| `- note: class 'RedisConnectionPool' does not conform to the 'Sendable' protocol
32 | /// A unique identifer to represent this connection.
33 | public let id = UUID()
:
427 | // a "no-op" unsub, so we need to return this connection
428 | guard
429 | self.pubsubConnection == nil,
| `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
430 | self.leasedConnectionCount > 0
431 | else { return }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:432:25: warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
430 | self.leasedConnectionCount > 0
431 | else { return }
432 | returnConnection(connection, context)
| |- warning: capture of 'returnConnection' with non-sendable type '(RedisConnection, Logger) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
433 | }
434 | },
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:432:42: warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
430 | self.leasedConnectionCount > 0
431 | else { return }
432 | returnConnection(connection, context)
| `- warning: capture of 'connection' with non-sendable type 'RedisConnection' in a '@Sendable' closure
433 | }
434 | },
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:449:30: warning: type 'T' does not conform to the 'Sendable' protocol
439 |
440 | @usableFromInline
441 | internal func forwardOperationToConnection<T>(
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
442 | _ operation: @escaping (RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) ->
443 | EventLoopFuture<T>,
:
447 | // Establish event loop context then jump to the in-loop version.
448 | guard self.loop.inEventLoop else {
449 | return self.loop.flatSubmit {
| `- warning: type 'T' does not conform to the 'Sendable' protocol
450 | self.forwardOperationToConnection(
451 | operation,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:473:18: warning: type 'T' does not conform to the 'Sendable' protocol
439 |
440 | @usableFromInline
441 | internal func forwardOperationToConnection<T>(
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
442 | _ operation: @escaping (RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) ->
443 | EventLoopFuture<T>,
:
471 | logger: logger
472 | )
473 | .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
| `- warning: type 'T' does not conform to the 'Sendable' protocol
474 | }
475 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:450:17: warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
29 | /// single `EventLoop`: if callers call the API from a different `EventLoop` (or from no `EventLoop` at all)
30 | /// `RedisConnectionPool` will ensure that the call is dispatched to the correct loop.
31 | public final class RedisConnectionPool {
| `- note: class 'RedisConnectionPool' does not conform to the 'Sendable' protocol
32 | /// A unique identifer to represent this connection.
33 | public let id = UUID()
:
448 | guard self.loop.inEventLoop else {
449 | return self.loop.flatSubmit {
450 | self.forwardOperationToConnection(
| `- warning: capture of 'self' with non-sendable type 'RedisConnectionPool' in a '@Sendable' closure
451 | operation,
452 | preferredConnection: preferredConnection,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:451:21: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
449 | return self.loop.flatSubmit {
450 | self.forwardOperationToConnection(
451 | operation,
| |- warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
452 | preferredConnection: preferredConnection,
453 | context: context
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:452:42: warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
450 | self.forwardOperationToConnection(
451 | operation,
452 | preferredConnection: preferredConnection,
| `- warning: capture of 'preferredConnection' with non-sendable type 'RedisConnection?' in a '@Sendable' closure
453 | context: context
454 | )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:473:28: warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
471 | logger: logger
472 | )
473 | .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
| |- warning: capture of 'operation' with non-sendable type '(RedisConnection, @escaping (RedisConnection, Logger) -> Void, Logger) -> EventLoopFuture<T>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
474 | }
475 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/RedisConnectionPool.swift:473:42: warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
471 | logger: logger
472 | )
473 | .flatMap { operation($0, pool.returnConnection(_:logger:), logger) }
| `- warning: capture of 'pool' with non-sendable type 'ConnectionPool' in a '@Sendable' closure
474 | }
475 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/ConnectionPool/ConnectionPool.swift:38:22: note: class 'ConnectionPool' does not conform to the 'Sendable' protocol
36 | /// and being used, at the cost of incurring more reconnects under low load. Of course, when we're under low load we don't
37 | /// really care how many reconnects there are.
38 | internal final class ConnectionPool {
| `- note: class 'ConnectionPool' does not conform to the 'Sendable' protocol
39 | /// A function used to create Redis connections.
40 | private let connectionFactory: (EventLoop) -> EventLoopFuture<RedisConnection>
[709/719] Compiling RediStack RedisLogging.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 | internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 | self.eventLoop.flatSubmit {
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 | self.client.send(command: command, with: arguments, logger: self.logger)
119 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
116 | internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 | self.eventLoop.flatSubmit {
118 | self.client.send(command: command, with: arguments, logger: self.logger)
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 | }
120 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 | internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 | self.eventLoop.flatSubmit {
118 | self.client.send(command: command, with: arguments, logger: self.logger)
| `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 | }
120 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
121 |
122 | internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 | self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 | }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 | internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 | self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 | }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
125 |
126 | internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 | self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 | }
129 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
135 | ) -> EventLoopFuture<Void> {
136 | self.eventLoop.flatSubmit {
137 | self.client.subscribe(
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 | to: channels,
139 | messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 | self.eventLoop.flatSubmit {
137 | self.client.subscribe(
138 | to: channels,
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 | messageReceiver: receiver,
140 | onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 | self.client.subscribe(
138 | to: channels,
139 | messageReceiver: receiver,
| |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 | onSubscribe: subscribeHandler,
141 | onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 | to: channels,
139 | messageReceiver: receiver,
140 | onSubscribe: subscribeHandler,
| |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 | onUnsubscribe: unsubscribeHandler,
142 | logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 | messageReceiver: receiver,
140 | onSubscribe: subscribeHandler,
141 | onUnsubscribe: unsubscribeHandler,
| |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 | logger: self.logger
143 | )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
152 | ) -> EventLoopFuture<Void> {
153 | self.eventLoop.flatSubmit {
154 | self.client.psubscribe(
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 | to: patterns,
156 | messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 | self.client.psubscribe(
155 | to: patterns,
156 | messageReceiver: receiver,
| |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 | onSubscribe: subscribeHandler,
158 | onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 | to: patterns,
156 | messageReceiver: receiver,
157 | onSubscribe: subscribeHandler,
| |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 | onUnsubscribe: unsubscribeHandler,
159 | logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 | messageReceiver: receiver,
157 | onSubscribe: subscribeHandler,
158 | onUnsubscribe: unsubscribeHandler,
| |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 | logger: self.logger
160 | )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
45 |
46 | /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
47 | public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
| |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
48 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
49 | public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
47 | public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
48 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
49 | public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
| |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
51 | public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
49 | public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
50 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
51 | public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
| |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
52 | /// The `Metrics.Counter` that retains the number of connections made since application startup.
53 | public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[710/719] Compiling RediStack RedisMetrics.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 | internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 | self.eventLoop.flatSubmit {
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 | self.client.send(command: command, with: arguments, logger: self.logger)
119 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
116 | internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 | self.eventLoop.flatSubmit {
118 | self.client.send(command: command, with: arguments, logger: self.logger)
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 | }
120 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 | internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 | self.eventLoop.flatSubmit {
118 | self.client.send(command: command, with: arguments, logger: self.logger)
| `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 | }
120 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
121 |
122 | internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 | self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 | }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 | internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 | self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 | }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
125 |
126 | internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 | self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 | }
129 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
135 | ) -> EventLoopFuture<Void> {
136 | self.eventLoop.flatSubmit {
137 | self.client.subscribe(
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 | to: channels,
139 | messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 | self.eventLoop.flatSubmit {
137 | self.client.subscribe(
138 | to: channels,
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 | messageReceiver: receiver,
140 | onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 | self.client.subscribe(
138 | to: channels,
139 | messageReceiver: receiver,
| |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 | onSubscribe: subscribeHandler,
141 | onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 | to: channels,
139 | messageReceiver: receiver,
140 | onSubscribe: subscribeHandler,
| |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 | onUnsubscribe: unsubscribeHandler,
142 | logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 | messageReceiver: receiver,
140 | onSubscribe: subscribeHandler,
141 | onUnsubscribe: unsubscribeHandler,
| |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 | logger: self.logger
143 | )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
152 | ) -> EventLoopFuture<Void> {
153 | self.eventLoop.flatSubmit {
154 | self.client.psubscribe(
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 | to: patterns,
156 | messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 | self.client.psubscribe(
155 | to: patterns,
156 | messageReceiver: receiver,
| |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 | onSubscribe: subscribeHandler,
158 | onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 | to: patterns,
156 | messageReceiver: receiver,
157 | onSubscribe: subscribeHandler,
| |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 | onUnsubscribe: unsubscribeHandler,
159 | logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 | messageReceiver: receiver,
157 | onSubscribe: subscribeHandler,
158 | onUnsubscribe: unsubscribeHandler,
| |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 | logger: self.logger
160 | )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
45 |
46 | /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
47 | public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
| |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
48 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
49 | public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
47 | public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
48 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
49 | public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
| |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
51 | public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
49 | public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
50 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
51 | public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
| |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
52 | /// The `Metrics.Counter` that retains the number of connections made since application startup.
53 | public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[711/719] Compiling RediStack _Deprecations.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:117:24: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
115 |
116 | internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 | self.eventLoop.flatSubmit {
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
118 | self.client.send(command: command, with: arguments, logger: self.logger)
119 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
116 | internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 | self.eventLoop.flatSubmit {
118 | self.client.send(command: command, with: arguments, logger: self.logger)
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
119 | }
120 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:118:54: warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
116 | internal func send(command: String, with arguments: [RESPValue]) -> EventLoopFuture<RESPValue> {
117 | self.eventLoop.flatSubmit {
118 | self.client.send(command: command, with: arguments, logger: self.logger)
| `- warning: capture of 'arguments' with non-sendable type '[RESPValue]' in a '@Sendable' closure
119 | }
120 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
121 |
122 | internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 | self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
124 | }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:123:67: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
121 |
122 | internal func unsubscribe(from channels: [RedisChannelName]) -> EventLoopFuture<Void> {
123 | self.eventLoop.flatSubmit { self.client.unsubscribe(from: channels, logger: self.logger) }
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
124 | }
125 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:127:37: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
125 |
126 | internal func punsubscribe(from patterns: [String]) -> EventLoopFuture<Void> {
127 | self.eventLoop.flatSubmit { self.client.punsubscribe(from: patterns, logger: self.logger) }
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
128 | }
129 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:137:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
135 | ) -> EventLoopFuture<Void> {
136 | self.eventLoop.flatSubmit {
137 | self.client.subscribe(
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
138 | to: channels,
139 | messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:138:21: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
136 | self.eventLoop.flatSubmit {
137 | self.client.subscribe(
138 | to: channels,
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
139 | messageReceiver: receiver,
140 | onSubscribe: subscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:139:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
137 | self.client.subscribe(
138 | to: channels,
139 | messageReceiver: receiver,
| |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 | onSubscribe: subscribeHandler,
141 | onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:140:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
138 | to: channels,
139 | messageReceiver: receiver,
140 | onSubscribe: subscribeHandler,
| |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
141 | onUnsubscribe: unsubscribeHandler,
142 | logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:141:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
139 | messageReceiver: receiver,
140 | onSubscribe: subscribeHandler,
141 | onUnsubscribe: unsubscribeHandler,
| |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
142 | logger: self.logger
143 | )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:154:13: warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
95 | /// An internal implementation wrapper of a given `RedisClientWithUserContext` that enables users to pass a given `Logging.Logger`
96 | /// instance to capture command logs within their preferred contexts.
97 | internal struct UserContextRedisClient<Client: RedisClientWithUserContext>: RedisClient {
| `- note: consider making generic struct 'UserContextRedisClient' conform to the 'Sendable' protocol
98 | internal var eventLoop: EventLoop { self.client.eventLoop }
99 |
:
152 | ) -> EventLoopFuture<Void> {
153 | self.eventLoop.flatSubmit {
154 | self.client.psubscribe(
| `- warning: capture of 'self' with non-sendable type 'UserContextRedisClient<Client>' in a '@Sendable' closure
155 | to: patterns,
156 | messageReceiver: receiver,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:156:34: warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
154 | self.client.psubscribe(
155 | to: patterns,
156 | messageReceiver: receiver,
| |- warning: capture of 'receiver' with non-sendable type 'RedisSubscriptionMessageReceiver' (aka '(RedisChannelName, RESPValue) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 | onSubscribe: subscribeHandler,
158 | onUnsubscribe: unsubscribeHandler,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:157:30: warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
155 | to: patterns,
156 | messageReceiver: receiver,
157 | onSubscribe: subscribeHandler,
| |- warning: capture of 'subscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
158 | onUnsubscribe: unsubscribeHandler,
159 | logger: self.logger
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisLogging.swift:158:32: warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
156 | messageReceiver: receiver,
157 | onSubscribe: subscribeHandler,
158 | onUnsubscribe: unsubscribeHandler,
| |- warning: capture of 'unsubscribeHandler' with non-sendable type 'RedisSubscriptionChangeHandler?' (aka 'Optional<(String, Int) -> ()>') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
159 | logger: self.logger
160 | )
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:47:23: warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
45 |
46 | /// The wrapped `Metrics.Gauge` maintaining the current number of connections this library has active.
47 | public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
| |- warning: static property 'activeConnectionCount' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeConnectionCount' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeConnectionCount' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
48 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
49 | public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:49:23: warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
47 | public static var activeConnectionCount = IncrementalGauge(.activeConnectionCount)
48 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channels.
49 | public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
| |- warning: static property 'activeChannelSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeChannelSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeChannelSubscriptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
51 | public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisMetrics.swift:51:23: warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
49 | public static var activeChannelSubscriptions = IncrementalGauge(.activeChannelSubscriptions)
50 | /// The wrapped `Metrics.Gauge` maintaining the current number of subscriptions to channel patterns.
51 | public static var activePatternSubscriptions = IncrementalGauge(.activePatternSubscriptions)
| |- warning: static property 'activePatternSubscriptions' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activePatternSubscriptions' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activePatternSubscriptions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
52 | /// The `Metrics.Counter` that retains the number of connections made since application startup.
53 | public static let totalConnectionCount = Counter(label: .totalConnectionCount)
[712/719] Compiling RediStack PubSubCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
74 | /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
75 | public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
76 | guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
| `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
77 |
78 | var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 | assert(count >= 0, "A negative max count is nonsense.")
151 |
152 | guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 | let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | /// - Returns: The elements randomly selected from the set.
191 | public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 | guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 | let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 | /// - Returns: A list of elements resulting from the difference.
298 | public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | /// - Returns: A list of elements resulting from the intersection.
373 | public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 | /// - Returns: A list of elements resulting from the union.
448 | public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
605 |
606 | if let c = count {
607 | guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
608 |
609 | args.append(.init(bulk: c))
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:121:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
119 | extension RedisSetCommandCondition {
120 | /// No condition is required to be met in order to set the key's value.
121 | public static let none = RedisSetCommandCondition(.none)
| |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
122 |
123 | /// Only set the key if it already exists.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:126:23: warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
124 | ///
125 | /// Redis documentation refers to this as the option "XX".
126 | public static let keyExists = RedisSetCommandCondition(.keyExists)
| |- warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keyExists' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 | /// Only set the key if it does not already exist.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:131:23: warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
129 | ///
130 | /// Redis documentation refers to this as the option "NX".
131 | public static let keyDoesNotExist = RedisSetCommandCondition(.keyDoesNotExist)
| |- warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keyDoesNotExist' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
132 | }
133 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:168:23: warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
135 | ///
136 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
137 | public struct RedisSetCommandExpiration: Hashable {
| `- note: consider making struct 'RedisSetCommandExpiration' conform to the 'Sendable' protocol
138 | private enum Expiration: Hashable {
139 | case keepExisting
:
166 | /// Redis documentation refers to this as "KEEPTTL".
167 | /// - Important: This is option is only available in Redis 6.0+. An error will be returned if this value is sent in lower versions of Redis.
168 | public static let keepExisting = RedisSetCommandExpiration(.keepExisting)
| |- warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keepExisting' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 |
170 | /// Expire the key after the given number of seconds.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:52:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
50 | /// - Returns: The values stored at the keys provided, matching the same order.
51 | public func mget(_ keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
52 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
53 |
54 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[713/719] Compiling RediStack SetCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
74 | /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
75 | public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
76 | guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
| `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
77 |
78 | var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 | assert(count >= 0, "A negative max count is nonsense.")
151 |
152 | guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 | let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | /// - Returns: The elements randomly selected from the set.
191 | public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 | guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 | let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 | /// - Returns: A list of elements resulting from the difference.
298 | public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | /// - Returns: A list of elements resulting from the intersection.
373 | public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 | /// - Returns: A list of elements resulting from the union.
448 | public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
605 |
606 | if let c = count {
607 | guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
608 |
609 | args.append(.init(bulk: c))
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:121:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
119 | extension RedisSetCommandCondition {
120 | /// No condition is required to be met in order to set the key's value.
121 | public static let none = RedisSetCommandCondition(.none)
| |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
122 |
123 | /// Only set the key if it already exists.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:126:23: warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
124 | ///
125 | /// Redis documentation refers to this as the option "XX".
126 | public static let keyExists = RedisSetCommandCondition(.keyExists)
| |- warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keyExists' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 | /// Only set the key if it does not already exist.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:131:23: warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
129 | ///
130 | /// Redis documentation refers to this as the option "NX".
131 | public static let keyDoesNotExist = RedisSetCommandCondition(.keyDoesNotExist)
| |- warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keyDoesNotExist' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
132 | }
133 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:168:23: warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
135 | ///
136 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
137 | public struct RedisSetCommandExpiration: Hashable {
| `- note: consider making struct 'RedisSetCommandExpiration' conform to the 'Sendable' protocol
138 | private enum Expiration: Hashable {
139 | case keepExisting
:
166 | /// Redis documentation refers to this as "KEEPTTL".
167 | /// - Important: This is option is only available in Redis 6.0+. An error will be returned if this value is sent in lower versions of Redis.
168 | public static let keepExisting = RedisSetCommandExpiration(.keepExisting)
| |- warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keepExisting' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 |
170 | /// Expire the key after the given number of seconds.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:52:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
50 | /// - Returns: The values stored at the keys provided, matching the same order.
51 | public func mget(_ keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
52 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
53 |
54 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[714/719] Compiling RediStack SortedSetCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
74 | /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
75 | public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
76 | guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
| `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
77 |
78 | var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 | assert(count >= 0, "A negative max count is nonsense.")
151 |
152 | guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 | let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | /// - Returns: The elements randomly selected from the set.
191 | public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 | guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 | let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 | /// - Returns: A list of elements resulting from the difference.
298 | public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | /// - Returns: A list of elements resulting from the intersection.
373 | public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 | /// - Returns: A list of elements resulting from the union.
448 | public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
605 |
606 | if let c = count {
607 | guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
608 |
609 | args.append(.init(bulk: c))
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:121:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
119 | extension RedisSetCommandCondition {
120 | /// No condition is required to be met in order to set the key's value.
121 | public static let none = RedisSetCommandCondition(.none)
| |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
122 |
123 | /// Only set the key if it already exists.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:126:23: warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
124 | ///
125 | /// Redis documentation refers to this as the option "XX".
126 | public static let keyExists = RedisSetCommandCondition(.keyExists)
| |- warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keyExists' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 | /// Only set the key if it does not already exist.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:131:23: warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
129 | ///
130 | /// Redis documentation refers to this as the option "NX".
131 | public static let keyDoesNotExist = RedisSetCommandCondition(.keyDoesNotExist)
| |- warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keyDoesNotExist' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
132 | }
133 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:168:23: warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
135 | ///
136 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
137 | public struct RedisSetCommandExpiration: Hashable {
| `- note: consider making struct 'RedisSetCommandExpiration' conform to the 'Sendable' protocol
138 | private enum Expiration: Hashable {
139 | case keepExisting
:
166 | /// Redis documentation refers to this as "KEEPTTL".
167 | /// - Important: This is option is only available in Redis 6.0+. An error will be returned if this value is sent in lower versions of Redis.
168 | public static let keepExisting = RedisSetCommandExpiration(.keepExisting)
| |- warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keepExisting' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 |
170 | /// Expire the key after the given number of seconds.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:52:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
50 | /// - Returns: The values stored at the keys provided, matching the same order.
51 | public func mget(_ keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
52 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
53 |
54 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[715/719] Compiling RediStack StringCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:76:63: warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
74 | /// - Returns: A mapping of channel names and their (non-pattern) subscriber count.
75 | public func subscriberCount(forChannels channels: [RedisChannelName]) -> EventLoopFuture<[RedisChannelName: Int]> {
76 | guard channels.count > 0 else { return self.eventLoop.makeSucceededFuture([:]) }
| `- warning: type 'RedisChannelName' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
77 |
78 | var args: [RESPValue] = [.init(bulk: "NUMSUB")]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: capture of 'channels' with non-sendable type '[RedisChannelName]' in a '@Sendable' closure
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/PubSubCommands.swift:84:42: warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
82 | .tryConverting(to: [RESPValue].self)
83 | .flatMapThrowing { response in
84 | assert(response.count == channels.count * 2, "Unexpected response size!")
| `- warning: implicit capture of 'channels' requires that '[RedisChannelName]' conforms to 'Sendable'; this is an error in the Swift 6 language mode
85 |
86 | // Redis guarantees that the response format is [channel1Name, channel1Count, channel2Name, ...]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisChannelName.swift:23:15: note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
21 | /// let channel: RedisChannelName = "channel1" // or "\(channelNameVariable)"
22 | /// ```
23 | public struct RedisChannelName:
| `- note: consider making struct 'RedisChannelName' conform to the 'Sendable' protocol
24 | RESPValueConvertible,
25 | RawRepresentable,
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:152:54: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
150 | assert(count >= 0, "A negative max count is nonsense.")
151 |
152 | guard count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
153 |
154 | let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:192:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | /// - Returns: The elements randomly selected from the set.
191 | public func srandmember(from key: RedisKey, max count: Int = 1) -> EventLoopFuture<[RESPValue]> {
192 | guard count != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
193 |
194 | let args: [RESPValue] = [
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:299:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
297 | /// - Returns: A list of elements resulting from the difference.
298 | public func sdiff(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
299 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
300 |
301 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:374:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
372 | /// - Returns: A list of elements resulting from the intersection.
373 | public func sinter(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
374 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
375 |
376 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SetCommands.swift:449:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
447 | /// - Returns: A list of elements resulting from the union.
448 | public func sunion(of keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
449 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
450 |
451 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/SortedSetCommands.swift:607:55: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
605 |
606 | if let c = count {
607 | guard c != 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
608 |
609 | args.append(.init(bulk: c))
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:121:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
119 | extension RedisSetCommandCondition {
120 | /// No condition is required to be met in order to set the key's value.
121 | public static let none = RedisSetCommandCondition(.none)
| |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
122 |
123 | /// Only set the key if it already exists.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:126:23: warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
124 | ///
125 | /// Redis documentation refers to this as the option "XX".
126 | public static let keyExists = RedisSetCommandCondition(.keyExists)
| |- warning: static property 'keyExists' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keyExists' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 | /// Only set the key if it does not already exist.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:131:23: warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
99 | ///
100 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
101 | public struct RedisSetCommandCondition: Hashable {
| `- note: consider making struct 'RedisSetCommandCondition' conform to the 'Sendable' protocol
102 | private enum Condition: String, Hashable {
103 | case keyExists = "XX"
:
129 | ///
130 | /// Redis documentation refers to this as the option "NX".
131 | public static let keyDoesNotExist = RedisSetCommandCondition(.keyDoesNotExist)
| |- warning: static property 'keyDoesNotExist' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandCondition' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keyDoesNotExist' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
132 | }
133 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:168:23: warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
135 | ///
136 | /// See [https://redis.io/commands/set](https://redis.io/commands/set)
137 | public struct RedisSetCommandExpiration: Hashable {
| `- note: consider making struct 'RedisSetCommandExpiration' conform to the 'Sendable' protocol
138 | private enum Expiration: Hashable {
139 | case keepExisting
:
166 | /// Redis documentation refers to this as "KEEPTTL".
167 | /// - Important: This is option is only available in Redis 6.0+. An error will be returned if this value is sent in lower versions of Redis.
168 | public static let keepExisting = RedisSetCommandExpiration(.keepExisting)
| |- warning: static property 'keepExisting' is not concurrency-safe because non-'Sendable' type 'RedisSetCommandExpiration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'keepExisting' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 |
170 | /// Expire the key after the given number of seconds.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/StringCommands.swift:52:59: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
50 | /// - Returns: The values stored at the keys provided, matching the same order.
51 | public func mget(_ keys: [RedisKey]) -> EventLoopFuture<[RESPValue]> {
52 | guard keys.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
53 |
54 | let args = keys.map(RESPValue.init)
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[716/719] Compiling RediStack SwiftPolyfill.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/BasicCommands.swift:257:25: warning: type 'T' does not conform to the 'Sendable' protocol
214 |
215 | @usableFromInline
216 | internal func _scan<T>(
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
217 | command: String,
218 | resultType: T.Type = T.self,
:
255 | .tryConverting(to: resultType)
256 |
257 | return position.and(elements)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 | /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 | public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 | guard fields.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
324 |
325 | var args: [RESPValue] = [.init(from: key)]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[717/719] Compiling RediStack BasicCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/BasicCommands.swift:257:25: warning: type 'T' does not conform to the 'Sendable' protocol
214 |
215 | @usableFromInline
216 | internal func _scan<T>(
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
217 | command: String,
218 | resultType: T.Type = T.self,
:
255 | .tryConverting(to: resultType)
256 |
257 | return position.and(elements)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 | /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 | public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 | guard fields.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
324 |
325 | var args: [RESPValue] = [.init(from: key)]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[718/719] Compiling RediStack HashCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/BasicCommands.swift:257:25: warning: type 'T' does not conform to the 'Sendable' protocol
214 |
215 | @usableFromInline
216 | internal func _scan<T>(
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
217 | command: String,
218 | resultType: T.Type = T.self,
:
255 | .tryConverting(to: resultType)
256 |
257 | return position.and(elements)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 | /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 | public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 | guard fields.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
324 |
325 | var args: [RESPValue] = [.init(from: key)]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[719/719] Compiling RediStack ListCommands.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/BasicCommands.swift:257:25: warning: type 'T' does not conform to the 'Sendable' protocol
214 |
215 | @usableFromInline
216 | internal func _scan<T>(
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
217 | command: String,
218 | resultType: T.Type = T.self,
:
255 | .tryConverting(to: resultType)
256 |
257 | return position.and(elements)
| `- warning: type 'T' does not conform to the 'Sendable' protocol
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/Commands/HashCommands.swift:323:61: warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
321 | /// - Returns: A list of values in the same order as the `fields` argument. Non-existent fields return `.null` values.
322 | public func hmget(_ fields: [String], from key: RedisKey) -> EventLoopFuture<[RESPValue]> {
323 | guard fields.count > 0 else { return self.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
324 |
325 | var args: [RESPValue] = [.init(from: key)]
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: consider making enum 'RESPValue' conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
[720/728] Emitting module RedisTypes
[721/728] Compiling RedisTypes RedisSet.swift
/Users/admin/builder/spi-builder-workspace/Sources/RedisTypes/RedisSet.swift:199:62: warning: type 'Element' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
57 | ///
58 | /// See [https://redis.io/topics/data-types-intro#sets](https://redis.io/topics/data-types-intro#sets)
59 | public struct RedisSet<Element> where Element: RESPValueConvertible {
| `- note: consider making generic parameter 'Element' conform to the 'Sendable' protocol
60 | /// The key in Redis that this instance is a reference to.
61 | public var identifier: RedisKey { self.id }
:
197 | public func popRandomElements(max count: Int) -> EventLoopFuture<[Element]> {
198 | guard count >= 0 else { return self.client.eventLoop.makeFailedFuture(RedisError.indexOutOfRange) }
199 | guard count >= 1 else { return self.client.eventLoop.makeSucceededFuture([]) }
| `- warning: type 'Element' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
200 | return self.client.spop(from: self.id, max: count)
201 | .map { $0.compactMap(Element.init) }
[722/728] Compiling RediStackTestUtils _Deprecations.swift
[723/728] Compiling RediStackTestUtils RedisConnectionPoolIntegrationTestCase.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisConnectionPoolIntegrationTestCase.swift:67:57: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
65 | open override func tearDown() {
66 | do {
67 | _ = try self.pool.send(command: "FLUSHALL").wait()
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
68 | } catch let err as RedisConnectionPoolError where err == .poolClosed {
69 | // Ok, this is fine.
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisConnectionPoolIntegrationTestCase.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
15 | import NIOCore
16 | import NIOPosix
17 | import RediStack
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
18 | import XCTest
19 |
[724/728] Compiling RediStackTestUtils RediStack.swift
[725/728] Compiling RediStackTestUtils RedisIntegrationTestCase.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisIntegrationTestCase.swift:69:37: warning: capture of 'self' with non-sendable type 'RedisIntegrationTestCase' in a '@Sendable' closure
21 | ///
22 | /// See `RedisConnection.make(configuration:boundEventLoop:)` to understand how connections are made.
23 | open class RedisIntegrationTestCase: XCTestCase {
| `- note: class 'RedisIntegrationTestCase' does not conform to the 'Sendable' protocol
24 | /// An overridable value of the Redis instance's hostname to connect to for the test suite(s).
25 | ///
:
67 | if self.connection.isConnected {
68 | _ = try self.connection.send(command: "FLUSHALL")
69 | .flatMap { _ in self.connection.close() }
| `- warning: capture of 'self' with non-sendable type 'RedisIntegrationTestCase' in a '@Sendable' closure
70 | .wait()
71 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisIntegrationTestCase.swift:91:11: warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
89 | ),
90 | boundEventLoop: eventLoopGroup.next()
91 | ).wait()
| `- warning: type 'RedisConnection' does not conform to the 'Sendable' protocol
92 | }
93 | }
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RedisConnection.swift:88:20: note: class 'RedisConnection' does not conform to the 'Sendable' protocol
86 | ///
87 | /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
88 | public final class RedisConnection: RedisClient, RedisClientWithUserContext {
| `- note: class 'RedisConnection' does not conform to the 'Sendable' protocol
89 | /// A unique identifer to represent this connection.
90 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/RedisIntegrationTestCase.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
15 | import NIOCore
16 | import NIOPosix
17 | import RediStack
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
18 | import XCTest
19 |
[726/728] Compiling RediStackTestUtils General.swift
[727/728] Compiling RediStackTestUtils EmbeddedMockRedisServer.swift
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/EmbeddedMockRedisServer.swift:62:34: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
60 | // We always allow this.
61 | let response = RESPValue.simpleString("OK".byteBuffer)
62 | data.responsePromise.succeed(response)
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
63 |
64 | default:
/Users/admin/builder/spi-builder-workspace/Sources/RediStack/RESP/RESPValue.swift:30:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
28 | ///
29 | /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
30 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
31 | case null
32 | case simpleString(ByteBuffer)
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/EmbeddedMockRedisServer.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
15 | import NIOCore
16 | import NIOEmbedded
17 | import RediStack
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'RediStack'
18 | import XCTest
19 |
/Users/admin/builder/spi-builder-workspace/Sources/RediStackTestUtils/EmbeddedMockRedisServer.swift:73:13: warning: capture of 'self' with non-sendable type 'EmbeddedMockRedisServer' in a '@Sendable' closure
26 | /// This is not really a Redis server: it's just something that lets us stub out the connection management in order to let
27 | /// us test the connection pool.
28 | internal final class EmbeddedMockRedisServer {
| `- note: class 'EmbeddedMockRedisServer' does not conform to the 'Sendable' protocol
29 | var channels: ArraySlice<EmbeddedChannel> = []
30 | var loop: EmbeddedEventLoop = EmbeddedEventLoop()
:
71 | let channel = EmbeddedChannel(handler: GracefulShutdownToCloseHandler(), loop: self.loop)
72 | channel.closeFuture.whenComplete { _ in
73 | self.channels.removeAll(where: { $0 === channel })
| `- warning: capture of 'self' with non-sendable type 'EmbeddedMockRedisServer' in a '@Sendable' closure
74 | }
75 |
[728/728] Emitting module RediStackTestUtils
Build complete! (37.47s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-atomics",
"requirement" : {
"range" : [
{
"lower_bound" : "1.1.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-atomics.git"
},
{
"identity" : "swift-log",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-log.git"
},
{
"identity" : "swift-metrics",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "3.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-metrics.git"
},
{
"identity" : "swift-nio",
"requirement" : {
"range" : [
{
"lower_bound" : "2.43.0",
"upper_bound" : "3.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-nio.git"
},
{
"identity" : "swift-nio-ssl",
"requirement" : {
"range" : [
{
"lower_bound" : "2.23.1",
"upper_bound" : "3.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-nio-ssl.git"
}
],
"manifest_display_name" : "RediStack",
"name" : "RediStack",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "RediStack",
"targets" : [
"RediStack"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "RediStackTestUtils",
"targets" : [
"RediStackTestUtils"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "RedisTypes",
"targets" : [
"RedisTypes"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "RedisTypesTests",
"module_type" : "SwiftTarget",
"name" : "RedisTypesTests",
"path" : "Tests/RedisTypesTests",
"product_dependencies" : [
"NIO"
],
"sources" : [
"RedisSetTests.swift",
"RedisTypesIntegrationTestCase.swift"
],
"target_dependencies" : [
"RediStack",
"RedisTypes",
"RediStackTestUtils"
],
"type" : "test"
},
{
"c99name" : "RedisTypes",
"module_type" : "SwiftTarget",
"name" : "RedisTypes",
"path" : "Sources/RedisTypes",
"product_memberships" : [
"RedisTypes"
],
"sources" : [
"RedisSet.swift"
],
"target_dependencies" : [
"RediStack"
],
"type" : "library"
},
{
"c99name" : "RediStackTests",
"module_type" : "SwiftTarget",
"name" : "RediStackTests",
"path" : "Tests/RediStackTests",
"product_dependencies" : [
"Atomics",
"NIO",
"NIOTestUtils"
],
"sources" : [
"ChannelHandlers/RedisByteDecoderTests.swift",
"ChannelHandlers/RedisCommandHandlerTests.swift",
"ChannelHandlers/RedisMessageEncoderTests.swift",
"Cluster/RedisClusterNodeDescriptionProtocolTests.swift",
"ConfigurationTests.swift",
"ConnectionPoolTests.swift",
"Helpers/MockNodeDescription.swift",
"Helpers/RedisErrorTests.swift",
"RESPTranslatorTests.swift",
"RESPValueTests.swift",
"RedisCommandEncoderTests.swift",
"RedisConnection+ConfigurationTests.swift",
"RedisConnectionTests.swift",
"RedisHashSlotTests.swift",
"RedisKeyLifetime.swift"
],
"target_dependencies" : [
"RediStack",
"RediStackTestUtils"
],
"type" : "test"
},
{
"c99name" : "RediStackTestUtils",
"module_type" : "SwiftTarget",
"name" : "RediStackTestUtils",
"path" : "Sources/RediStackTestUtils",
"product_dependencies" : [
"NIOCore",
"NIOEmbedded"
],
"product_memberships" : [
"RediStackTestUtils"
],
"sources" : [
"EmbeddedMockRedisServer.swift",
"Extensions/General.swift",
"Extensions/RediStack.swift",
"RedisConnectionPoolIntegrationTestCase.swift",
"RedisIntegrationTestCase.swift",
"_Deprecations.swift"
],
"target_dependencies" : [
"RediStack"
],
"type" : "library"
},
{
"c99name" : "RediStackIntegrationTests",
"module_type" : "SwiftTarget",
"name" : "RediStackIntegrationTests",
"path" : "Tests/RediStackIntegrationTests",
"product_dependencies" : [
"NIO"
],
"sources" : [
"Commands/BasicCommandsTests.swift",
"Commands/HashCommandsTests.swift",
"Commands/ListCommandsTests.swift",
"Commands/PubSubCommandsTests.swift",
"Commands/SetCommandsTests.swift",
"Commands/SortedSetCommandsTests.swift",
"Commands/StringCommandsTests.swift",
"RediStackIntegrationTestCase.swift",
"RedisConnectionPoolTests.swift",
"RedisConnectionTests.swift",
"RedisLoggingTests.swift"
],
"target_dependencies" : [
"RediStack",
"RediStackTestUtils"
],
"type" : "test"
},
{
"c99name" : "RediStack",
"module_type" : "SwiftTarget",
"name" : "RediStack",
"path" : "Sources/RediStack",
"product_dependencies" : [
"NIOCore",
"NIOPosix",
"NIO",
"NIOConcurrencyHelpers",
"NIOSSL",
"Atomics",
"Logging",
"Metrics"
],
"product_memberships" : [
"RediStack",
"RediStackTestUtils",
"RedisTypes"
],
"sources" : [
"ChannelHandlers/RedisByteDecoder.swift",
"ChannelHandlers/RedisCommandHandler.swift",
"ChannelHandlers/RedisMessageEncoder.swift",
"ChannelHandlers/RedisPubSubHandler.swift",
"Cluster/RedisClusterNodeDescriptionProtocol.swift",
"Cluster/RedisClusterNodeID.swift",
"Cluster/RedisClusterShardDescriptionProtocol.swift",
"Cluster/RedisHashSlot.swift",
"Cluster/SwiftPolyfill.swift",
"Commands/BasicCommands.swift",
"Commands/HashCommands.swift",
"Commands/ListCommands.swift",
"Commands/PubSubCommands.swift",
"Commands/SetCommands.swift",
"Commands/SortedSetCommands.swift",
"Commands/StringCommands.swift",
"ConnectionPool/ConnectionPool.swift",
"ConnectionPool/RedisConnectionPool+Configuration.swift",
"ConnectionPool/RedisConnectionPool.swift",
"ConnectionPool/RedisConnectionPoolError.swift",
"Extensions/StandardLibrary.swift",
"Extensions/SwiftNIO.swift",
"RESP/RESPTranslator.swift",
"RESP/RESPValue.swift",
"RESP/RESPValueConvertible.swift",
"RedisChannelName.swift",
"RedisClient.swift",
"RedisCommandEncoder-multi-encode.swift",
"RedisCommandEncoder.swift",
"RedisConnection+Configuration.swift",
"RedisConnection.swift",
"RedisError.swift",
"RedisKey+TTL.swift",
"RedisKey.swift",
"RedisLogging.swift",
"RedisMetrics.swift",
"_Deprecations.swift"
],
"type" : "library"
},
{
"c99name" : "RESP3Tests",
"module_type" : "SwiftTarget",
"name" : "RESP3Tests",
"path" : "Tests/RESP3Tests",
"product_dependencies" : [
"NIOCore",
"NIOEmbedded",
"NIOTestUtils"
],
"sources" : [
"RESP3TokenTests.swift"
],
"target_dependencies" : [
"RESP3"
],
"type" : "test"
},
{
"c99name" : "RESP3",
"module_type" : "SwiftTarget",
"name" : "RESP3",
"path" : "Sources/RESP3",
"product_dependencies" : [
"NIOCore"
],
"sources" : [
"RESP3Error.swift",
"RESP3Token.swift",
"RESP3TokenDecoder.swift",
"RESP3TypeIdentifier.swift"
],
"type" : "library"
}
],
"tools_version" : "5.6"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/swift-server/redistack/main
Repository: swift-server/RediStack
Swift version used: 6.1
Target: RediStack
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/swift-docc-render-artifact/.git/
From https://github.com/swiftlang/swift-docc-render-artifact
* branch 4633b45fc732d8c55568be09dd852f9dc1582c25 -> FETCH_HEAD
HEAD is now at 4633b45 Update the artifact
Cloned https://github.com/swiftlang/swift-docc-render-artifact
Extracting symbol information for 'RediStack'...
Finished extracting symbol information for 'RediStack'. (11.23s)
Building documentation for 'RediStack'...
Finished building documentation for 'RediStack' (0.83s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/swift-server/redistack/main
Updating https://github.com/apple/swift-nio.git
Updating https://github.com/apple/swift-atomics.git
Updating https://github.com/apple/swift-metrics.git
Updating https://github.com/apple/swift-log.git
Updating https://github.com/apple/swift-collections.git
Updating https://github.com/apple/swift-system.git
Updating https://github.com/apple/swift-nio-ssl.git
Updated https://github.com/apple/swift-system.git (0.76s)
Updated https://github.com/apple/swift-collections.git (0.76s)
Updated https://github.com/apple/swift-nio-ssl.git (0.76s)
Updated https://github.com/apple/swift-log.git (0.76s)
Updated https://github.com/apple/swift-atomics.git (0.76s)
Updated https://github.com/apple/swift-metrics.git (0.76s)
Updated https://github.com/apple/swift-nio.git (0.76s)
Fetching https://github.com/swiftlang/swift-docc-plugin from cache
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (0.68s)
Computing version for https://github.com/apple/swift-nio-ssl.git
Computed https://github.com/apple/swift-nio-ssl.git at 2.33.0 (2.08s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.85.0 (0.56s)
Computing version for https://github.com/apple/swift-metrics.git
Computed https://github.com/apple/swift-metrics.git at 2.7.0 (0.44s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.4 (0.44s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.0 (0.45s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.6.1 (0.43s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.2.1 (0.50s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.5 (0.57s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit from cache
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (0.95s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.58s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.4.5
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Building for debugging...
[0/8] Write sources
[2/8] Write snippet-extract-tool-entitlement.plist
[4/8] Write swift-version-2F0A5646E1D333AE.txt
[6/53] Compiling SymbolKit Identifier.swift
[7/53] Compiling SymbolKit KindIdentifier.swift
[8/53] Compiling SymbolKit Location.swift
[9/53] Compiling SymbolKit Mutability.swift
[10/53] Compiling SymbolKit DeclarationFragments.swift
[11/53] Compiling SymbolKit Fragment.swift
[12/53] Compiling SymbolKit FragmentKind.swift
[13/53] Compiling SymbolKit FunctionParameter.swift
[14/53] Compiling SymbolKit FunctionSignature.swift
[15/57] Compiling SymbolKit SemanticVersion.swift
[16/57] Compiling SymbolKit AccessControl.swift
[17/57] Compiling SymbolKit Availability.swift
[18/57] Compiling SymbolKit AvailabilityItem.swift
[19/57] Compiling SymbolKit Domain.swift
[20/57] Compiling SymbolKit Mixin+Equals.swift
[21/57] Compiling SymbolKit Mixin+Hash.swift
[22/57] Compiling SymbolKit Mixin.swift
[23/57] Compiling SymbolKit LineList.swift
[24/57] Compiling SymbolKit Position.swift
[25/57] Emitting module SymbolKit
[26/57] Compiling SymbolKit Names.swift
[27/57] Compiling SymbolKit SPI.swift
[28/57] Compiling SymbolKit Snippet.swift
[29/57] Compiling SymbolKit Extension.swift
[30/57] Compiling SymbolKit GenericConstraint.swift
[31/57] Compiling SymbolKit GenericParameter.swift
[32/57] Compiling SymbolKit Generics.swift
[33/57] Compiling SymbolKit Namespace.swift
[34/57] Compiling SymbolKit SourceRange.swift
[35/57] Compiling SymbolKit Metadata.swift
[36/57] Compiling SymbolKit Module.swift
[37/57] Compiling SymbolKit OperatingSystem.swift
[38/57] Compiling SymbolKit Platform.swift
[39/57] Compiling SymbolKit Relationship.swift
[40/57] Compiling SymbolKit RelationshipKind.swift
[41/57] Compiling SymbolKit SourceOrigin.swift
[42/57] Compiling SymbolKit GenericConstraints.swift
[43/57] Compiling SymbolKit Swift.swift
[44/57] Compiling SymbolKit Symbol.swift
[45/57] Compiling SymbolKit SymbolKind.swift
[46/57] Compiling SymbolKit SymbolGraph.swift
[47/57] Compiling SymbolKit GraphCollector.swift
[48/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[49/57] Compiling SymbolKit UnifiedSymbol.swift
[50/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[51/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[52/57] Compiling Snippets SnippetParser.swift
[53/57] Compiling Snippets Snippet.swift
[54/57] Emitting module Snippets
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (5.10s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/54] Compiling InternalCollectionsUtilities Debugging.swift
[3/55] Compiling InternalCollectionsUtilities _UniqueCollection.swift
[4/55] Compiling InternalCollectionsUtilities RandomAccessCollection+Offsets.swift
[5/55] Compiling InternalCollectionsUtilities UnsafeBufferPointer+Extras.swift
[6/55] Compiling InternalCollectionsUtilities Descriptions.swift
[7/55] Compiling Atomics AtomicInteger.swift
[8/55] Compiling Atomics AtomicOptionalWrappable.swift
[9/56] Compiling Logging MetadataProvider.swift
[10/56] Compiling Atomics AtomicValue.swift
[11/56] Compiling Atomics AtomicMemoryOrderings.swift
[12/56] Compiling Atomics DoubleWord.swift
[13/56] Compiling Atomics ManagedAtomic.swift
[14/56] Compiling InternalCollectionsUtilities UnsafeMutableBufferPointer+Extras.swift
[15/56] Compiling _NIODataStructures PriorityQueue.swift
[16/56] Compiling Atomics ManagedAtomicLazyReference.swift
[17/56] Compiling Atomics UnsafeAtomic.swift
[18/56] Compiling Atomics UnsafeAtomicLazyReference.swift
[19/56] Compiling Atomics IntegerOperations.swift
[20/56] Compiling Atomics Unmanaged extensions.swift
[21/56] Compiling NIOConcurrencyHelpers NIOLock.swift
[22/56] Compiling _NIOBase64 Base64.swift
[23/56] Emitting module _NIOBase64
[24/56] Compiling Atomics OptionalRawRepresentable.swift
[25/56] Compiling Atomics RawRepresentable.swift
[26/56] Compiling _NIODataStructures _TinyArray.swift
[27/56] Compiling NIOConcurrencyHelpers lock.swift
[28/56] Compiling _NIODataStructures Heap.swift
[29/56] Compiling NIOConcurrencyHelpers NIOAtomic.swift
[30/56] Compiling NIOConcurrencyHelpers NIOLockedValueBox.swift
[31/56] Compiling NIOConcurrencyHelpers atomics.swift
[32/56] Compiling Atomics AtomicReference.swift
[33/56] Compiling Atomics AtomicStorage.swift
[34/56] Emitting module InternalCollectionsUtilities
[35/56] Emitting module _NIODataStructures
[36/56] Emitting module NIOConcurrencyHelpers
[39/56] Compiling Atomics AtomicBool.swift
[40/56] Compiling Atomics IntegerConformances.swift
[41/56] Compiling Atomics PointerConformances.swift
[42/56] Compiling Atomics Primitives.native.swift
[45/56] Emitting module CoreMetrics
[46/56] Compiling CoreMetrics Metrics.swift
[47/56] Compiling CoreMetrics Locks.swift
[48/74] Compiling DequeModule _DequeBuffer.swift
[49/74] Compiling DequeModule _DequeBufferHeader.swift
[50/74] Compiling DequeModule _DequeSlot.swift
[51/75] Compiling Logging Locks.swift
[52/75] Compiling Logging Logging.swift
[53/75] Emitting module Logging
[54/75] Compiling Logging LogHandler.swift
[55/75] Compiling DequeModule Deque+Equatable.swift
[56/75] Compiling DequeModule Deque+ExpressibleByArrayLiteral.swift
[57/75] Compiling DequeModule Deque+Codable.swift
[58/75] Compiling DequeModule Deque+Collection.swift
[59/75] Compiling DequeModule _UnsafeWrappedBuffer.swift
[60/75] Compiling Metrics Metrics.swift
[61/75] Emitting module Metrics
[62/75] Compiling DequeModule Deque+Testing.swift
[63/75] Compiling DequeModule Deque._Storage.swift
[64/75] Compiling DequeModule Deque+Extras.swift
[65/75] Compiling DequeModule Deque+Hashable.swift
[66/75] Compiling DequeModule Deque._UnsafeHandle.swift
[67/75] Compiling DequeModule Deque.swift
[68/75] Compiling DequeModule Deque+CustomReflectable.swift
[69/75] Compiling DequeModule Deque+Descriptions.swift
[74/75] Emitting module DequeModule
[75/75] Emitting module Atomics
[76/138] Compiling NIOCore AddressedEnvelope.swift
[77/138] Compiling NIOCore AsyncAwaitSupport.swift
[78/138] Compiling NIOCore AsyncChannel.swift
[79/138] Compiling NIOCore AsyncChannelHandler.swift
[80/138] Compiling NIOCore AsyncChannelInboundStream.swift
[81/138] Compiling NIOCore AsyncChannelOutboundWriter.swift
[82/138] Compiling NIOCore NIOAsyncSequenceProducer.swift
[83/144] Compiling NIOCore NIOPooledRecvBufferAllocator.swift
[84/144] Compiling NIOCore NIOScheduledCallback.swift
[85/144] Compiling NIOCore NIOSendable.swift
[86/144] Compiling NIOCore RecvByteBufferAllocator.swift
[87/144] Compiling NIOCore SingleStepByteToMessageDecoder.swift
[88/144] Compiling NIOCore SocketAddresses.swift
[89/144] Compiling NIOCore EventLoopFuture+AssumeIsolated.swift
[90/144] Compiling NIOCore EventLoopFuture+Deprecated.swift
[91/144] Compiling NIOCore EventLoopFuture+WithEventLoop.swift
[92/144] Compiling NIOCore EventLoopFuture.swift
[93/144] Compiling NIOCore FileDescriptor.swift
[94/144] Compiling NIOCore FileHandle.swift
[95/144] Compiling NIOCore FileRegion.swift
[96/144] Compiling NIOCore Linux.swift
[97/144] Compiling NIOCore MarkedCircularBuffer.swift
[98/144] Compiling NIOCore MulticastChannel.swift
[99/144] Compiling NIOCore NIOAny.swift
[100/144] Compiling NIOCore NIOCloseOnErrorHandler.swift
[101/144] Compiling NIOCore NIOCoreSendableMetatype.swift
[102/144] Compiling NIOCore NIOLoopBound.swift
[103/144] Compiling NIOCore Codec.swift
[104/144] Compiling NIOCore ConvenienceOptionSupport.swift
[105/144] Compiling NIOCore DeadChannel.swift
[106/144] Compiling NIOCore DispatchQueue+WithFuture.swift
[107/144] Compiling NIOCore EventLoop+Deprecated.swift
[108/144] Compiling NIOCore EventLoop+SerialExecutor.swift
[109/144] Compiling NIOCore EventLoop.swift
[110/144] Compiling NIOCore NIOAsyncSequenceProducerStrategies.swift
[111/144] Compiling NIOCore NIOAsyncWriter.swift
[112/144] Compiling NIOCore NIOThrowingAsyncSequenceProducer.swift
[113/144] Compiling NIOCore BSDSocketAPI.swift
[114/144] Compiling NIOCore ByteBuffer-aux.swift
[115/144] Compiling NIOCore ByteBuffer-binaryEncodedLengthPrefix.swift
[116/144] Compiling NIOCore ByteBuffer-conversions.swift
[117/144] Compiling NIOCore GlobalSingletons.swift
[118/144] Compiling NIOCore IO.swift
[119/144] Compiling NIOCore IOData.swift
[120/144] Compiling NIOCore IPProtocol.swift
[121/144] Compiling NIOCore IntegerBitPacking.swift
[122/144] Compiling NIOCore IntegerTypes.swift
[123/144] Compiling NIOCore Interfaces.swift
[124/144] Compiling NIOCore SocketOptionProvider.swift
[125/144] Compiling NIOCore SystemCallHelpers.swift
[126/144] Compiling NIOCore TimeAmount+Duration.swift
[127/144] Compiling NIOCore TypeAssistedChannelHandler.swift
[128/144] Compiling NIOCore UniversalBootstrapSupport.swift
[129/144] Compiling NIOCore Utilities.swift
[130/144] Compiling NIOCore Channel.swift
[131/144] Compiling NIOCore ChannelHandler.swift
[132/144] Compiling NIOCore ChannelHandlers.swift
[133/144] Compiling NIOCore ChannelInvoker.swift
[134/144] Compiling NIOCore ChannelOption.swift
[135/144] Compiling NIOCore ChannelPipeline.swift
[136/144] Compiling NIOCore CircularBuffer.swift
[137/144] Compiling NIOCore ByteBuffer-core.swift
[138/144] Compiling NIOCore ByteBuffer-hex.swift
[139/144] Compiling NIOCore ByteBuffer-int.swift
[140/144] Compiling NIOCore ByteBuffer-lengthPrefix.swift
[141/144] Compiling NIOCore ByteBuffer-multi-int.swift
[142/144] Compiling NIOCore ByteBuffer-quicBinaryEncodingStrategy.swift
[143/144] Compiling NIOCore ByteBuffer-views.swift
[144/144] Emitting module NIOCore
[145/198] Compiling NIOEmbedded AsyncTestingEventLoop.swift
[146/198] Emitting module NIOEmbedded
[147/198] Compiling NIOEmbedded Embedded.swift
[148/198] Compiling NIOEmbedded AsyncTestingChannel.swift
[149/198] Compiling NIOPosix StructuredConcurrencyHelpers.swift
[150/198] Compiling NIOPosix System.swift
[151/198] Compiling NIOPosix Thread.swift
[152/198] Compiling NIOPosix ThreadPosix.swift
[153/198] Compiling NIOPosix ThreadWindows.swift
[154/203] Compiling NIOPosix SelectorUring.swift
[155/203] Compiling NIOPosix ServerSocket.swift
[156/203] Compiling NIOPosix Socket.swift
[157/203] Compiling NIOPosix SocketChannel.swift
[158/203] Compiling NIOPosix SocketProtocols.swift
[159/203] Compiling NIOPosix GetaddrinfoResolver.swift
[160/203] Compiling NIOPosix HappyEyeballs.swift
[161/203] Compiling NIOPosix IO.swift
[162/203] Compiling NIOPosix IntegerBitPacking.swift
[163/203] Compiling NIOPosix IntegerTypes.swift
[164/203] Compiling NIOPosix Linux.swift
[165/203] Compiling NIOPosix BSDSocketAPICommon.swift
[166/203] Compiling NIOPosix BSDSocketAPIPosix.swift
[167/203] Compiling NIOPosix BSDSocketAPIWindows.swift
[168/203] Compiling NIOPosix BaseSocket.swift
[169/203] Compiling NIOPosix BaseSocketChannel+SocketOptionProvider.swift
[170/203] Compiling NIOPosix BaseSocketChannel.swift
[171/203] Compiling NIOPosix PosixSingletons+ConcurrencyTakeOver.swift
[172/203] Compiling NIOPosix PosixSingletons.swift
[173/203] Compiling NIOPosix RawSocketBootstrap.swift
[174/203] Compiling NIOPosix Resolver.swift
[175/203] Compiling NIOPosix Selectable.swift
[176/203] Compiling NIOPosix PendingDatagramWritesManager.swift
[177/203] Compiling NIOPosix PendingWritesManager.swift
[178/203] Compiling NIOPosix PipeChannel.swift
[179/203] Compiling NIOPosix PipePair.swift
[180/203] Compiling NIOPosix Pool.swift
[181/203] Compiling NIOPosix LinuxCPUSet.swift
[182/203] Compiling NIOPosix LinuxUring.swift
[183/203] Compiling NIOPosix MultiThreadedEventLoopGroup.swift
[184/203] Compiling NIOPosix NIOPosixSendableMetatype.swift
[185/203] Compiling NIOPosix NIOThreadPool.swift
[186/203] Compiling NIOPosix NonBlockingFileIO.swift
[187/203] Compiling NIOPosix SelectableChannel.swift
[188/203] Compiling NIOPosix SelectableEventLoop.swift
[189/203] Compiling NIOPosix SelectorEpoll.swift
[190/203] Compiling NIOPosix SelectorGeneric.swift
[191/203] Compiling NIOPosix SelectorKqueue.swift
[192/203] Compiling NIOPosix UnsafeTransfer.swift
[193/203] Compiling NIOPosix Utilities.swift
[194/203] Compiling NIOPosix VsockAddress.swift
[195/203] Compiling NIOPosix VsockChannelEvents.swift
[196/203] Compiling NIOPosix resource_bundle_accessor.swift
[197/203] Compiling NIOPosix BaseStreamSocketChannel.swift
[198/203] Compiling NIOPosix Bootstrap.swift
[199/203] Compiling NIOPosix ControlMessage.swift
[200/203] Compiling NIOPosix DatagramVectorReadManager.swift
[201/203] Compiling NIOPosix Errors+Any.swift
[202/203] Compiling NIOPosix FileDescriptor.swift
[203/203] Emitting module NIOPosix
[204/205] Compiling NIO Exports.swift
[205/205] Emitting module NIO
[206/211] Compiling NIOTLS TLSEvents.swift
[207/211] Compiling NIOTLS ProtocolNegotiationHandlerStateMachine.swift
[208/211] Compiling NIOTLS NIOTypedApplicationProtocolNegotiationHandler.swift
[209/211] Emitting module NIOTLS
[210/211] Compiling NIOTLS ApplicationProtocolNegotiationHandler.swift
[211/211] Compiling NIOTLS SNIHandler.swift
[212/242] Compiling NIOSSL SSLInit.swift
[213/242] Compiling NIOSSL SSLPKCS12Bundle.swift
[214/242] Compiling NIOSSL SSLPrivateKey.swift
[215/245] Compiling NIOSSL NIOSSLServerHandler.swift
[216/245] Compiling NIOSSL ObjectIdentifier.swift
[217/245] Compiling NIOSSL PosixPort.swift
[218/245] Compiling NIOSSL SSLCallbacks.swift
[219/245] Compiling NIOSSL AndroidCABundle.swift
[220/245] Compiling NIOSSL ByteBufferBIO.swift
[221/245] Compiling NIOSSL CustomPrivateKey.swift
[222/245] Compiling NIOSSL IdentityVerification.swift
[223/245] Compiling NIOSSL SSLCertificate.swift
[224/245] Compiling NIOSSL SSLCertificateExtensions.swift
[225/245] Compiling NIOSSL SSLCertificateName.swift
[226/245] Compiling NIOSSL SubjectAlternativeName.swift
[227/245] Compiling NIOSSL NIOSSLSecureBytes.swift
[228/245] Compiling NIOSSL RNG.swift
[229/245] Emitting module NIOSSL
[230/245] Compiling NIOSSL LinuxCABundle.swift
[231/245] Compiling NIOSSL NIOSSLClientHandler.swift
[232/245] Compiling NIOSSL NIOSSLHandler+Configuration.swift
[233/245] Compiling NIOSSL NIOSSLHandler.swift
[234/245] Compiling NIOSSL SafeCompare.swift
[235/245] Compiling NIOSSL Zeroization.swift
[236/245] Compiling NIOSSL TLSConfiguration.swift
[237/245] Compiling NIOSSL SSLPublicKey.swift
[238/245] Compiling NIOSSL SecurityFrameworkCertificateVerification.swift
[239/245] Compiling NIOSSL String+unsafeUninitializedCapacity.swift
[240/245] Compiling NIOSSL UniversalBootstrapSupport.swift
[241/245] Compiling NIOSSL UnsafeKeyAndChainTarget.swift
[242/245] Compiling NIOSSL resource_bundle_accessor.swift
[243/245] Compiling NIOSSL SSLConnection.swift
[244/245] Compiling NIOSSL SSLContext.swift
[245/245] Compiling NIOSSL SSLErrors.swift
[246/280] Compiling RediStack RedisError.swift
[247/280] Compiling RediStack RedisKey+TTL.swift
[248/280] Compiling RediStack RedisKey.swift
[249/280] Compiling RediStack RedisCommandEncoder.swift
[250/280] Compiling RediStack RedisConnection+Configuration.swift
[251/280] Compiling RediStack RedisConnection.swift
[252/283] Emitting module RediStack
[253/283] Compiling RediStack RESPValueConvertible.swift
[254/283] Compiling RediStack RedisChannelName.swift
[255/283] Compiling RediStack RedisClient.swift
[256/283] Compiling RediStack RedisCommandEncoder-multi-encode.swift
[257/283] Compiling RediStack StandardLibrary.swift
[258/283] Compiling RediStack SwiftNIO.swift
[259/283] Compiling RediStack RESPTranslator.swift
[260/283] Compiling RediStack RESPValue.swift
[261/283] Compiling RediStack RedisClusterNodeDescriptionProtocol.swift
[262/283] Compiling RediStack RedisClusterNodeID.swift
[263/283] Compiling RediStack RedisClusterShardDescriptionProtocol.swift
[264/283] Compiling RediStack RedisHashSlot.swift
[265/283] Compiling RediStack ConnectionPool.swift
[266/283] Compiling RediStack RedisConnectionPool+Configuration.swift
[267/283] Compiling RediStack RedisConnectionPool.swift
[268/283] Compiling RediStack RedisConnectionPoolError.swift
[269/283] Compiling RediStack RedisByteDecoder.swift
[270/283] Compiling RediStack RedisCommandHandler.swift
[271/283] Compiling RediStack RedisMessageEncoder.swift
[272/283] Compiling RediStack RedisPubSubHandler.swift
[273/283] Compiling RediStack SwiftPolyfill.swift
[274/283] Compiling RediStack BasicCommands.swift
[275/283] Compiling RediStack HashCommands.swift
[276/283] Compiling RediStack ListCommands.swift
[277/283] Compiling RediStack PubSubCommands.swift
[278/283] Compiling RediStack SetCommands.swift
[279/283] Compiling RediStack SortedSetCommands.swift
[280/283] Compiling RediStack StringCommands.swift
[281/283] Compiling RediStack RedisLogging.swift
[282/283] Compiling RediStack RedisMetrics.swift
[283/283] Compiling RediStack _Deprecations.swift
Build of target: 'RediStack' complete! (9.05s)
Target: RedisTypes
Extracting symbol information for 'RedisTypes'...
Finished extracting symbol information for 'RedisTypes'. (2.35s)
Building documentation for 'RedisTypes'...
Finished building documentation for 'RedisTypes' (0.06s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/swift-server/redistack/main
Building for debugging...
[0/3] Write swift-version-2F0A5646E1D333AE.txt
Build of product 'snippet-extract' complete! (1.85s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/3] Emitting module RedisTypes
[3/3] Compiling RedisTypes RedisSet.swift
Build of target: 'RedisTypes' complete! (2.21s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/swift-server/redistack/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/swift-server/redistack/main/linkable-paths.json
Target: RediStackTestUtils
Extracting symbol information for 'RediStackTestUtils'...
Finished extracting symbol information for 'RediStackTestUtils'. (3.92s)
Building documentation for 'RediStackTestUtils'...
Finished building documentation for 'RediStackTestUtils' (0.05s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/swift-server/redistack/main
Building for debugging...
[0/3] Write swift-version-2F0A5646E1D333AE.txt
Build of product 'snippet-extract' complete! (1.78s)
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/8] Compiling RediStackTestUtils _Deprecations.swift
[3/8] Compiling RediStackTestUtils RedisIntegrationTestCase.swift
[4/8] Compiling RediStackTestUtils RediStack.swift
[5/8] Compiling RediStackTestUtils General.swift
[6/8] Compiling RediStackTestUtils EmbeddedMockRedisServer.swift
[7/8] Compiling RediStackTestUtils RedisConnectionPoolIntegrationTestCase.swift
[8/8] Emitting module RediStackTestUtils
Build of target: 'RediStackTestUtils' complete! (2.28s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/swift-server/redistack/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/swift-server/redistack/main/linkable-paths.json
2604
18 /Users/admin/builder/spi-builder-workspace/.docs/swift-server/redistack/main
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/swift-server/redistack/main
File count: 2604
Doc size: 18.0MB
Preparing doc bundle ...
Uploading prod-swift-server-redistack-main-c4f83f1f.zip to s3://spi-docs-inbox/prod-swift-server-redistack-main-c4f83f1f.zip
Copying... [10%]
Copying... [21%]
Copying... [31%]
Copying... [41%]
Copying... [52%]
Copying... [60%]
Copying... [70%]
Copying... [81%]
Copying... [91%]
Copying... [100%]
Done.