The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of swift-nio-redis-client, reference 0.10.3 (832712), with Swift 6.1 for Linux on 26 Apr 2025 09:37:13 UTC.

Swift 6 data race errors: 2

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-3":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/NozeIO/swift-nio-redis-client.git
Reference: 0.10.3
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
From https://github.com/NozeIO/swift-nio-redis-client
 * tag               0.10.3     -> FETCH_HEAD
HEAD is now at 8327121 Merge branch 'develop' into main
Cloned https://github.com/NozeIO/swift-nio-redis-client.git
Revision (git rev-parse @):
832712154a0bf27b2cdee18385138937e9501084
SUCCESS checkout https://github.com/NozeIO/swift-nio-redis-client.git at 0.10.3
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.1
Building package at path:  $PWD
https://github.com/NozeIO/swift-nio-redis-client.git
https://github.com/NozeIO/swift-nio-redis-client.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
  "dependencies" : [
    {
      "identity" : "swift-nio",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.20.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-nio.git"
    },
    {
      "identity" : "swift-nio-redis",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.10.3",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/SwiftNIOExtras/swift-nio-redis.git"
    }
  ],
  "manifest_display_name" : "swift-nio-redis-client",
  "name" : "swift-nio-redis-client",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "Redis",
      "targets" : [
        "Redis"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "RedisTests",
      "module_type" : "SwiftTarget",
      "name" : "RedisTests",
      "path" : "Tests/RedisTests",
      "sources" : [
        "RedisClientTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "Redis"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Redis",
      "module_type" : "SwiftTarget",
      "name" : "Redis",
      "path" : "Sources/Redis",
      "product_dependencies" : [
        "NIORedis"
      ],
      "product_memberships" : [
        "Redis"
      ],
      "sources" : [
        "RedisClient.swift",
        "RedisClientOptions.swift",
        "RedisCommand.swift",
        "RedisCommandTarget.swift",
        "RedisPrint.swift",
        "RedisRetry.swift",
        "RedisTypeTransformable.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.0"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-3":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Fetching https://github.com/SwiftNIOExtras/swift-nio-redis.git
Fetching https://github.com/apple/swift-nio.git
[1/359] Fetching swift-nio-redis
[163/75790] Fetching swift-nio-redis, swift-nio
Fetched https://github.com/SwiftNIOExtras/swift-nio-redis.git from cache (8.35s)
Fetched https://github.com/apple/swift-nio.git from cache (8.50s)
Computing version for https://github.com/SwiftNIOExtras/swift-nio-redis.git
Computed https://github.com/SwiftNIOExtras/swift-nio-redis.git at 0.11.0 (9.61s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.82.0 (1.61s)
Fetching https://github.com/apple/swift-collections.git
Fetching https://github.com/apple/swift-system.git
Fetching https://github.com/apple/swift-atomics.git
[1/1705] Fetching swift-atomics
[530/6058] Fetching swift-atomics, swift-system
[1271/22300] Fetching swift-atomics, swift-system, swift-collections
Fetched https://github.com/apple/swift-atomics.git from cache (1.06s)
Fetched https://github.com/apple/swift-system.git from cache (1.06s)
[3736/16242] Fetching swift-collections
Fetched https://github.com/apple/swift-collections.git from cache (2.44s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.2.0 (3.55s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.4.2 (0.99s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.1.4 (1.39s)
Creating working copy for https://github.com/apple/swift-nio.git
Working copy of https://github.com/apple/swift-nio.git resolved at 2.82.0
Creating working copy for https://github.com/SwiftNIOExtras/swift-nio-redis.git
Working copy of https://github.com/SwiftNIOExtras/swift-nio-redis.git resolved at 0.11.0
Creating working copy for https://github.com/apple/swift-atomics.git
Working copy of https://github.com/apple/swift-atomics.git resolved at 1.2.0
Creating working copy for https://github.com/apple/swift-system.git
Working copy of https://github.com/apple/swift-system.git resolved at 1.4.2
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.1.4
warning: 'spi-builder-workspace': dependency 'swift-nio' is not used by any target
Building for debugging...
[0/23] Write sources
[12/23] Compiling CNIOWindows shim.c
[13/23] Compiling CNIOWASI CNIOWASI.c
[13/23] Compiling _AtomicsShims.c
[13/23] Write sources
[13/23] Compiling CNIOWindows WSAStartup.c
[17/23] Compiling CNIOLinux liburing_shims.c
[18/23] Compiling CNIODarwin shim.c
[19/23] Compiling CNIOLinux shim.c
[20/23] Write swift-version-24593BA9C3E375BF.txt
[22/65] Emitting module InternalCollectionsUtilities
[23/67] Emitting module Atomics
[24/69] Compiling InternalCollectionsUtilities UnsafeBufferPointer+Extras.swift
[25/69] Compiling InternalCollectionsUtilities UnsafeMutableBufferPointer+Extras.swift
[26/69] Compiling Atomics IntegerOperations.swift
[27/69] Compiling Atomics Unmanaged extensions.swift
[28/69] Emitting module _NIOBase64
[29/69] Compiling _NIOBase64 Base64.swift
[32/70] Compiling _NIODataStructures _TinyArray.swift
[33/70] Compiling InternalCollectionsUtilities RandomAccessCollection+Offsets.swift
[34/70] Compiling InternalCollectionsUtilities Specialize.swift
[37/70] Compiling InternalCollectionsUtilities Debugging.swift
[38/70] Compiling InternalCollectionsUtilities Descriptions.swift
[39/70] Compiling InternalCollectionsUtilities _SortedCollection.swift
[40/70] Compiling InternalCollectionsUtilities _UniqueCollection.swift
[41/70] Compiling InternalCollectionsUtilities UnsafeMutablePointer+SE-0370.swift
[42/70] Compiling InternalCollectionsUtilities UnsafeRawPointer extensions.swift
[43/70] Compiling InternalCollectionsUtilities _UnsafeBitSet+_Word.swift
[46/70] Compiling InternalCollectionsUtilities _UnsafeBitSet.swift
[49/70] Compiling _NIODataStructures PriorityQueue.swift
[50/70] Compiling InternalCollectionsUtilities UInt+reversed.swift
[51/70] Compiling InternalCollectionsUtilities _UnsafeBitSet+Index.swift
[52/70] Compiling InternalCollectionsUtilities UnsafeMutableBufferPointer+SE-0370.swift
[57/70] Compiling InternalCollectionsUtilities FixedWidthInteger+roundUpToPowerOfTwo.swift
[58/70] Compiling InternalCollectionsUtilities Integer rank.swift
[59/70] Compiling InternalCollectionsUtilities UInt+first and last set bit.swift
[68/72] Compiling c-nioatomics.c
[70/87] Compiling DequeModule Deque+CustomReflectable.swift
[71/87] Compiling DequeModule Deque+Descriptions.swift
[72/89] Compiling DequeModule _DequeBuffer.swift
[73/89] Compiling DequeModule _DequeBufferHeader.swift
[74/89] Compiling DequeModule Deque+Extras.swift
[75/89] Compiling DequeModule Deque+Hashable.swift
[76/89] Compiling DequeModule Deque+Equatable.swift
[77/89] Compiling DequeModule Deque+ExpressibleByArrayLiteral.swift
[78/89] Emitting module _NIODataStructures
[79/89] Compiling _NIODataStructures Heap.swift
[81/90] Compiling DequeModule _DequeSlot.swift
[82/90] Compiling DequeModule _UnsafeWrappedBuffer.swift
[82/90] Compiling c-atomics.c
[84/90] Compiling DequeModule Deque+Testing.swift
[85/90] Compiling DequeModule Deque._Storage.swift
[86/90] Compiling DequeModule Deque._UnsafeHandle.swift
[87/90] Compiling DequeModule Deque.swift
[88/96] Compiling DequeModule Deque+Codable.swift
[89/96] Compiling DequeModule Deque+Collection.swift
[90/96] Emitting module DequeModule
[92/97] Compiling NIOConcurrencyHelpers NIOLock.swift
[93/97] Compiling NIOConcurrencyHelpers lock.swift
[94/97] Emitting module NIOConcurrencyHelpers
[95/97] Compiling NIOConcurrencyHelpers NIOAtomic.swift
[96/97] Compiling NIOConcurrencyHelpers NIOLockedValueBox.swift
[97/97] Compiling NIOConcurrencyHelpers atomics.swift
[99/157] Compiling NIOCore MarkedCircularBuffer.swift
[100/157] Compiling NIOCore MulticastChannel.swift
[101/157] Compiling NIOCore NIOAny.swift
[102/157] Compiling NIOCore NIOCloseOnErrorHandler.swift
[103/157] Compiling NIOCore NIOLoopBound.swift
[104/157] Compiling NIOCore NIOScheduledCallback.swift
[105/157] Compiling NIOCore NIOSendable.swift
[106/157] Compiling NIOCore RecvByteBufferAllocator.swift
[107/165] Compiling NIOCore GlobalSingletons.swift
[108/165] Compiling NIOCore IO.swift
[109/165] Compiling NIOCore IOData.swift
[110/165] Compiling NIOCore IPProtocol.swift
[111/165] Compiling NIOCore IntegerBitPacking.swift
[112/165] Compiling NIOCore IntegerTypes.swift
[113/165] Compiling NIOCore Interfaces.swift
[114/165] Compiling NIOCore Linux.swift
[115/165] Compiling NIOCore SingleStepByteToMessageDecoder.swift
[116/165] Compiling NIOCore SocketAddresses.swift
[117/165] Compiling NIOCore SocketOptionProvider.swift
[118/165] Compiling NIOCore SystemCallHelpers.swift
[119/165] Compiling NIOCore TimeAmount+Duration.swift
[120/165] Compiling NIOCore TypeAssistedChannelHandler.swift
[121/165] Compiling NIOCore UniversalBootstrapSupport.swift
[122/165] Compiling NIOCore Utilities.swift
[123/165] Compiling NIOCore EventLoop.swift
[124/165] Compiling NIOCore EventLoopFuture+AssumeIsolated.swift
[125/165] Compiling NIOCore EventLoopFuture+Deprecated.swift
[126/165] Compiling NIOCore EventLoopFuture+WithEventLoop.swift
[127/165] Compiling NIOCore EventLoopFuture.swift
[128/165] Compiling NIOCore FileDescriptor.swift
[129/165] Compiling NIOCore FileHandle.swift
[130/165] Compiling NIOCore FileRegion.swift
[131/165] Compiling NIOCore NIOThrowingAsyncSequenceProducer.swift
[132/165] Compiling NIOCore BSDSocketAPI.swift
[133/165] Compiling NIOCore ByteBuffer-aux.swift
[134/165] Compiling NIOCore ByteBuffer-binaryEncodedLengthPrefix.swift
[135/165] Compiling NIOCore ByteBuffer-conversions.swift
[136/165] Compiling NIOCore ByteBuffer-core.swift
[137/165] Compiling NIOCore ByteBuffer-hex.swift
[138/165] Compiling NIOCore ByteBuffer-int.swift
[139/165] Compiling NIOCore ByteBuffer-lengthPrefix.swift
[140/165] Compiling NIOCore ChannelPipeline.swift
[141/165] Compiling NIOCore CircularBuffer.swift
[142/165] Compiling NIOCore Codec.swift
[143/165] Compiling NIOCore ConvenienceOptionSupport.swift
[144/165] Compiling NIOCore DeadChannel.swift
[145/165] Compiling NIOCore DispatchQueue+WithFuture.swift
[146/165] Compiling NIOCore EventLoop+Deprecated.swift
[147/165] Compiling NIOCore EventLoop+SerialExecutor.swift
[148/165] Compiling NIOCore ByteBuffer-multi-int.swift
[149/165] Compiling NIOCore ByteBuffer-quicBinaryEncodingStrategy.swift
[150/165] Compiling NIOCore ByteBuffer-views.swift
[151/165] Compiling NIOCore Channel.swift
[152/165] Compiling NIOCore ChannelHandler.swift
[153/165] Compiling NIOCore ChannelHandlers.swift
[154/165] Compiling NIOCore ChannelInvoker.swift
[155/165] Compiling NIOCore ChannelOption.swift
[156/165] Compiling NIOCore AddressedEnvelope.swift
[157/165] Compiling NIOCore AsyncAwaitSupport.swift
[158/165] Compiling NIOCore AsyncChannel.swift
[159/165] Compiling NIOCore AsyncChannelHandler.swift
[160/165] Compiling NIOCore AsyncChannelInboundStream.swift
[161/165] Compiling NIOCore AsyncChannelOutboundWriter.swift
[162/165] Compiling NIOCore NIOAsyncSequenceProducer.swift
[163/165] Compiling NIOCore NIOAsyncSequenceProducerStrategies.swift
[164/165] Compiling NIOCore NIOAsyncWriter.swift
[165/165] Emitting module NIOCore
[167/217] Compiling NIOEmbedded AsyncTestingChannel.swift
[168/217] Compiling NIOPosix PooledRecvBufferAllocator.swift
[169/217] Compiling NIOPosix PosixSingletons+ConcurrencyTakeOver.swift
[170/217] Compiling NIOPosix PosixSingletons.swift
[171/217] Compiling NIOPosix RawSocketBootstrap.swift
[172/217] Compiling NIOPosix Resolver.swift
[173/217] Compiling NIOPosix Selectable.swift
[174/223] Compiling NIOEmbedded AsyncTestingEventLoop.swift
[175/223] Emitting module NIOEmbedded
[176/223] Compiling NIOEmbedded Embedded.swift
[177/224] Compiling NIOPosix IO.swift
[178/224] Compiling NIOPosix IntegerBitPacking.swift
[179/224] Compiling NIOPosix IntegerTypes.swift
[180/224] Compiling NIOPosix Linux.swift
[181/224] Compiling NIOPosix LinuxCPUSet.swift
[182/224] Compiling NIOPosix LinuxUring.swift
[183/224] Compiling NIOPosix MultiThreadedEventLoopGroup.swift
[185/224] Compiling NIOPosix ThreadPosix.swift
[186/224] Compiling NIOPosix ThreadWindows.swift
[187/224] Compiling NIOPosix UnsafeTransfer.swift
[188/224] Compiling NIOPosix Utilities.swift
[189/224] Compiling NIOPosix VsockAddress.swift
[190/224] Compiling NIOPosix VsockChannelEvents.swift
[191/224] Emitting module NIOPosix
[192/224] Compiling NIOPosix ServerSocket.swift
[193/224] Compiling NIOPosix Socket.swift
[194/224] Compiling NIOPosix SocketChannel.swift
[195/224] Compiling NIOPosix SocketProtocols.swift
[196/224] Compiling NIOPosix System.swift
[197/224] Compiling NIOPosix Thread.swift
[198/224] Compiling NIOPosix SelectableChannel.swift
[199/224] Compiling NIOPosix SelectableEventLoop.swift
[200/224] Compiling NIOPosix SelectorEpoll.swift
[201/224] Compiling NIOPosix SelectorGeneric.swift
[202/224] Compiling NIOPosix SelectorKqueue.swift
[203/224] Compiling NIOPosix SelectorUring.swift
[204/224] Compiling NIOPosix Bootstrap.swift
[205/224] Compiling NIOPosix ControlMessage.swift
[206/224] Compiling NIOPosix DatagramVectorReadManager.swift
[207/224] Compiling NIOPosix Errors+Any.swift
[208/224] Compiling NIOPosix FileDescriptor.swift
[209/224] Compiling NIOPosix GetaddrinfoResolver.swift
[210/224] Compiling NIOPosix HappyEyeballs.swift
[211/224] Compiling NIOPosix BSDSocketAPICommon.swift
[212/224] Compiling NIOPosix BSDSocketAPIPosix.swift
[213/224] Compiling NIOPosix BSDSocketAPIWindows.swift
[214/224] Compiling NIOPosix BaseSocket.swift
[215/224] Compiling NIOPosix BaseSocketChannel+SocketOptionProvider.swift
[216/224] Compiling NIOPosix BaseSocketChannel.swift
[217/224] Compiling NIOPosix BaseStreamSocketChannel.swift
[218/224] Compiling NIOPosix NIOThreadPool.swift
[219/224] Compiling NIOPosix NonBlockingFileIO.swift
[220/224] Compiling NIOPosix PendingDatagramWritesManager.swift
[221/224] Compiling NIOPosix PendingWritesManager.swift
[222/224] Compiling NIOPosix PipeChannel.swift
[223/224] Compiling NIOPosix PipePair.swift
[224/224] Compiling NIOPosix Pool.swift
[226/227] Emitting module NIO
[227/227] Compiling NIO Exports.swift
[229/233] Compiling NIOFoundationCompat JSONSerialization+ByteBuffer.swift
[230/233] Compiling NIOFoundationCompat WaitSpinningRunLoop.swift
[231/233] Emitting module NIOFoundationCompat
[232/233] Compiling NIOFoundationCompat ByteBuffer-foundation.swift
[233/233] Compiling NIOFoundationCompat Codable+ByteBuffer.swift
[235/241] Emitting module NIORedis
[236/241] Compiling NIORedis ByteBufferExtras.swift
[237/241] Compiling NIORedis RESPChannelHandler.swift
[238/241] Compiling NIORedis RESPPipelineSetup.swift
[239/241] Compiling NIORedis RESPValue.swift
[240/241] Compiling NIORedis RESPEncodable.swift
[241/241] Compiling NIORedis RESPParser.swift
[243/250] Compiling Redis RedisRetry.swift
[244/250] Compiling Redis RedisPrint.swift
[245/250] Compiling Redis RedisCommandTarget.swift
/host/spi-builder-workspace/Sources/Redis/RedisCommandTarget.swift:136:11: warning: capture of 'cb' with non-sendable type '([String]) -> ()' in a '@Sendable' closure
134 |       future.whenSuccess() { (newCursor, keys) in
135 |         if !keys.isEmpty {
136 |           cb(keys)
    |           |- warning: capture of 'cb' with non-sendable type '([String]) -> ()' in a '@Sendable' closure
    |           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
137 |         }
138 |
/host/spi-builder-workspace/Sources/Redis/RedisCommandTarget.swift:144:9: warning: capture of 'scanNext(cursor:)' with non-sendable type '<Self where Self : RedisCommandTarget> (cursor: String) -> ()' in a '@Sendable' closure
142 |         }
143 |
144 |         scanNext(cursor: newCursor)
    |         `- warning: capture of 'scanNext(cursor:)' with non-sendable type '<Self where Self : RedisCommandTarget> (cursor: String) -> ()' in a '@Sendable' closure
145 |       }
146 |
/host/spi-builder-workspace/Sources/Redis/RedisCommandTarget.swift:132:10: warning: concurrently-executed local function 'scanNext(cursor:)' must be marked as '@Sendable'
130 |     let promise = self.eventLoop.makePromise(of: Void.self)
131 |
132 |     func scanNext(cursor: String) {
    |          `- warning: concurrently-executed local function 'scanNext(cursor:)' must be marked as '@Sendable'
133 |       let future = self.scan(cursor: cursor, pattern: pattern, count: count)
134 |       future.whenSuccess() { (newCursor, keys) in
/host/spi-builder-workspace/Sources/Redis/RedisCommandTarget.swift:411:10: warning: 'map(file:line:_:)' is deprecated: Please don't pass file:line:, there's no point.
409 |               _ cb: @escaping ( Swift.Error?, Value? ) -> Void) -> Void
410 |   {
411 |     self.map(file: file, line: line) { cb(nil, $0) }
    |          `- warning: 'map(file:line:_:)' is deprecated: Please don't pass file:line:, there's no point.
412 |         .whenFailure { cb($0, nil) }
413 |   }
/host/spi-builder-workspace/Sources/Redis/RedisCommandTarget.swift:411:40: warning: capture of 'cb' with non-sendable type '((any Error)?, Value?) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
409 |               _ cb: @escaping ( Swift.Error?, Value? ) -> Void) -> Void
410 |   {
411 |     self.map(file: file, line: line) { cb(nil, $0) }
    |                                        |- warning: capture of 'cb' with non-sendable type '((any Error)?, Value?) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
    |                                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
412 |         .whenFailure { cb($0, nil) }
413 |   }
/host/spi-builder-workspace/Sources/Redis/RedisCommandTarget.swift:412:24: warning: capture of 'cb' with non-sendable type '((any Error)?, Value?) -> Void' in a '@Sendable' closure
410 |   {
411 |     self.map(file: file, line: line) { cb(nil, $0) }
412 |         .whenFailure { cb($0, nil) }
    |                        |- warning: capture of 'cb' with non-sendable type '((any Error)?, Value?) -> Void' in a '@Sendable' closure
    |                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
413 |   }
414 | }
/host/spi-builder-workspace/Sources/Redis/RedisCommandTarget.swift:422:10: warning: 'map(file:line:_:)' is deprecated: Please don't pass file:line:, there's no point.
420 |               _ cb: @escaping ( Swift.Error?, U? ) -> Void) -> Void
421 |   {
422 |     self.map(file: file, line: line) {
    |          `- warning: 'map(file:line:_:)' is deprecated: Please don't pass file:line:, there's no point.
423 |           do { cb(nil, try U.extractFromRESPValue($0)) }
424 |           catch { cb(error, nil) }
/host/spi-builder-workspace/Sources/Redis/RedisCommandTarget.swift:423:16: warning: capture of 'cb' with non-sendable type '((any Error)?, U?) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
421 |   {
422 |     self.map(file: file, line: line) {
423 |           do { cb(nil, try U.extractFromRESPValue($0)) }
    |                |- warning: capture of 'cb' with non-sendable type '((any Error)?, U?) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
    |                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
424 |           catch { cb(error, nil) }
425 |         }
/host/spi-builder-workspace/Sources/Redis/RedisCommandTarget.swift:426:24: warning: capture of 'cb' with non-sendable type '((any Error)?, U?) -> Void' in a '@Sendable' closure
424 |           catch { cb(error, nil) }
425 |         }
426 |         .whenFailure { cb($0, nil) }
    |                        |- warning: capture of 'cb' with non-sendable type '((any Error)?, U?) -> Void' in a '@Sendable' closure
    |                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
427 |   }
428 | }
[246/250] Compiling Redis RedisCommand.swift
[247/250] Compiling Redis RedisTypeTransformable.swift
/host/spi-builder-workspace/Sources/Redis/RedisTypeTransformable.swift:26:8: warning: associated value 'unexpectedValueType' of 'Sendable'-conforming enum 'RedisTypeTransformationError' has non-sendable type 'RESPValue'; this is an error in the Swift 6 language mode
 24 |
 25 | enum RedisTypeTransformationError : Swift.Error {
 26 |   case unexpectedValueType (RESPValue)
    |        `- warning: associated value 'unexpectedValueType' of 'Sendable'-conforming enum 'RedisTypeTransformationError' has non-sendable type 'RESPValue'; this is an error in the Swift 6 language mode
 27 |   case unsupportedValueType(Any.Type)
 28 |   case unexpectedHashValue (RESPValue)
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 16 | import Foundation
 17 |
 18 | public enum RESPValue {
    |             `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 19 |   case simpleString(ByteBuffer)
 20 |   case bulkString  (ByteBuffer?)
/host/spi-builder-workspace/Sources/Redis/RedisTypeTransformable.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
 15 | import struct Foundation.Data
 16 | import struct Foundation.TimeInterval
 17 | import enum   NIORedis.RESPValue
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
 18 |
 19 | protocol RedisTypeTransformable {
/host/spi-builder-workspace/Sources/Redis/RedisTypeTransformable.swift:28:8: warning: associated value 'unexpectedHashValue' of 'Sendable'-conforming enum 'RedisTypeTransformationError' has non-sendable type 'RESPValue'; this is an error in the Swift 6 language mode
 26 |   case unexpectedValueType (RESPValue)
 27 |   case unsupportedValueType(Any.Type)
 28 |   case unexpectedHashValue (RESPValue)
    |        `- warning: associated value 'unexpectedHashValue' of 'Sendable'-conforming enum 'RedisTypeTransformationError' has non-sendable type 'RESPValue'; this is an error in the Swift 6 language mode
 29 | }
 30 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 16 | import Foundation
 17 |
 18 | public enum RESPValue {
    |             `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 19 |   case simpleString(ByteBuffer)
 20 |   case bulkString  (ByteBuffer?)
[248/250] Compiling Redis RedisClientOptions.swift
[249/250] Emitting module Redis
/host/spi-builder-workspace/Sources/Redis/RedisTypeTransformable.swift:26:8: warning: associated value 'unexpectedValueType' of 'Sendable'-conforming enum 'RedisTypeTransformationError' has non-sendable type 'RESPValue'; this is an error in the Swift 6 language mode
 24 |
 25 | enum RedisTypeTransformationError : Swift.Error {
 26 |   case unexpectedValueType (RESPValue)
    |        `- warning: associated value 'unexpectedValueType' of 'Sendable'-conforming enum 'RedisTypeTransformationError' has non-sendable type 'RESPValue'; this is an error in the Swift 6 language mode
 27 |   case unsupportedValueType(Any.Type)
 28 |   case unexpectedHashValue (RESPValue)
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 16 | import Foundation
 17 |
 18 | public enum RESPValue {
    |             `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 19 |   case simpleString(ByteBuffer)
 20 |   case bulkString  (ByteBuffer?)
/host/spi-builder-workspace/Sources/Redis/RedisTypeTransformable.swift:17:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
 15 | import struct Foundation.Data
 16 | import struct Foundation.TimeInterval
 17 | import enum   NIORedis.RESPValue
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
 18 |
 19 | protocol RedisTypeTransformable {
/host/spi-builder-workspace/Sources/Redis/RedisTypeTransformable.swift:28:8: warning: associated value 'unexpectedHashValue' of 'Sendable'-conforming enum 'RedisTypeTransformationError' has non-sendable type 'RESPValue'; this is an error in the Swift 6 language mode
 26 |   case unexpectedValueType (RESPValue)
 27 |   case unsupportedValueType(Any.Type)
 28 |   case unexpectedHashValue (RESPValue)
    |        `- warning: associated value 'unexpectedHashValue' of 'Sendable'-conforming enum 'RedisTypeTransformationError' has non-sendable type 'RESPValue'; this is an error in the Swift 6 language mode
 29 | }
 30 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 16 | import Foundation
 17 |
 18 | public enum RESPValue {
    |             `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 19 |   case simpleString(ByteBuffer)
 20 |   case bulkString  (ByteBuffer?)
[250/250] Compiling Redis RedisClient.swift
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:179:23: warning: type 'RedisClient.Handler' does not conform to the 'Sendable' protocol
177 |
178 |         return channel.pipeline
179 |           .addHandler(Handler(client: me),
    |                       `- warning: type 'RedisClient.Handler' does not conform to the 'Sendable' protocol
180 |                       name: "de.zeezide.nio.redis.client")
181 |       }
    :
605 |   // MARK: - Handler
606 |
607 |   final class Handler : ChannelInboundHandler {
    |               `- note: class 'Handler' does not conform to the 'Sendable' protocol
608 |
609 |     typealias InboundIn = RESPValue
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:170:24: warning: capture of 'self' with non-sendable type 'RedisClient?' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
168 |     return channel.pipeline
169 |       .configureRedisPipeline()
170 |       .flatMap { [weak self] in
    |                        `- warning: capture of 'self' with non-sendable type 'RedisClient?' in a '@Sendable' closure
171 |         guard let me = self else {
172 |           //assert(self != nil, "bootstrap running, but client gone?!")
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:171:24: warning: capture of 'self' with non-sendable type 'RedisClient?' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
169 |       .configureRedisPipeline()
170 |       .flatMap { [weak self] in
171 |         guard let me = self else {
    |                        `- warning: capture of 'self' with non-sendable type 'RedisClient?' in a '@Sendable' closure
172 |           //assert(self != nil, "bootstrap running, but client gone?!")
173 |           let error = channel.eventLoop.makePromise(of: Void.self)
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:219:9: warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
217 |     guard eventLoop.inEventLoop else {
218 |       return eventLoop.execute {
219 |         self._unsubscribe(channels: channels, patterns: patterns)
    |         `- warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
220 |       }
221 |     }
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:256:9: warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
254 |     guard eventLoop.inEventLoop else {
255 |       return eventLoop.execute {
256 |         self._subscribe(channels: channels, patterns: patterns)
    |         `- warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
257 |       }
258 |     }
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:292:9: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
290 |     else {
291 |       eventLoop.execute {
292 |         self.subscribeListeners.append(cb)
    |         `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
293 |       }
294 |     }
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:292:40: warning: capture of 'cb' with non-sendable type '(String, Int) -> Void' in a '@Sendable' closure
290 |     else {
291 |       eventLoop.execute {
292 |         self.subscribeListeners.append(cb)
    |                                        |- warning: capture of 'cb' with non-sendable type '(String, Int) -> Void' in a '@Sendable' closure
    |                                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
293 |       }
294 |     }
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:305:9: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
303 |     else {
304 |       eventLoop.execute {
305 |         self.psubscribeListeners.append(cb)
    |         `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
306 |       }
307 |     }
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:305:41: warning: capture of 'cb' with non-sendable type '(String, Int) -> Void' in a '@Sendable' closure
303 |     else {
304 |       eventLoop.execute {
305 |         self.psubscribeListeners.append(cb)
    |                                         |- warning: capture of 'cb' with non-sendable type '(String, Int) -> Void' in a '@Sendable' closure
    |                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
306 |       }
307 |     }
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:333:9: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
331 |     else {
332 |       eventLoop.execute {
333 |         self.messageListeners.append(cb)
    |         `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure
334 |       }
335 |     }
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:333:38: warning: capture of 'cb' with non-sendable type '(String, String, String?) -> Void' in a '@Sendable' closure
331 |     else {
332 |       eventLoop.execute {
333 |         self.messageListeners.append(cb)
    |                                      |- warning: capture of 'cb' with non-sendable type '(String, String, String?) -> Void' in a '@Sendable' closure
    |                                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
334 |       }
335 |     }
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:347:34: warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
345 |   public func enqueueCommandCall(_ call: RedisCommandCall) { // Q: any
346 |     guard eventLoop.inEventLoop else {
347 |       return eventLoop.execute { self.enqueueCommandCall(call) }
    |                                  `- warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
348 |     }
349 |     _enqueueCommandCall(call)
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:347:58: warning: capture of 'call' with non-sendable type 'RedisCommandCall' in a '@Sendable' closure
345 |   public func enqueueCommandCall(_ call: RedisCommandCall) { // Q: any
346 |     guard eventLoop.inEventLoop else {
347 |       return eventLoop.execute { self.enqueueCommandCall(call) }
    |                                                          `- warning: capture of 'call' with non-sendable type 'RedisCommandCall' in a '@Sendable' closure
348 |     }
349 |     _enqueueCommandCall(call)
/host/spi-builder-workspace/Sources/Redis/RedisCommand.swift:42:14: note: class 'RedisCommandCall' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class RedisCommandCall {
   |              `- note: class 'RedisCommandCall' does not conform to the 'Sendable' protocol
43 |
44 |   let command : RedisCommand
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:385:15: warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
383 |       let call = callQueue.removeFirst()
384 |
385 |       channel.write(call.command)
    |               `- warning: type 'RedisCommand' does not conform to the 'Sendable' protocol
386 |         .map         { self.pendingCalls.append(call) }
387 |         .whenFailure {
/host/spi-builder-workspace/Sources/Redis/RedisCommand.swift:18:20: note: class 'RedisCommand' does not conform to the 'Sendable' protocol
16 | import NIORedis
17 |
18 | public final class RedisCommand : RESPEncodable {
   |                    `- note: class 'RedisCommand' does not conform to the 'Sendable' protocol
19 |
20 |   let values : ContiguousArray<RESPValue>
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:386:24: warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
384 |
385 |       channel.write(call.command)
386 |         .map         { self.pendingCalls.append(call) }
    |                        `- warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
387 |         .whenFailure {
388 |           call.promise.fail(Error.writeError($0))
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:386:49: warning: capture of 'call' with non-sendable type 'RedisCommandCall' in a '@Sendable' closure
384 |
385 |       channel.write(call.command)
386 |         .map         { self.pendingCalls.append(call) }
    |                                                 `- warning: capture of 'call' with non-sendable type 'RedisCommandCall' in a '@Sendable' closure
387 |         .whenFailure {
388 |           call.promise.fail(Error.writeError($0))
/host/spi-builder-workspace/Sources/Redis/RedisCommand.swift:42:14: note: class 'RedisCommandCall' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class RedisCommandCall {
   |              `- note: class 'RedisCommandCall' does not conform to the 'Sendable' protocol
43 |
44 |   let command : RedisCommand
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:388:11: warning: capture of 'call' with non-sendable type 'RedisCommandCall' in a '@Sendable' closure
386 |         .map         { self.pendingCalls.append(call) }
387 |         .whenFailure {
388 |           call.promise.fail(Error.writeError($0))
    |           `- warning: capture of 'call' with non-sendable type 'RedisCommandCall' in a '@Sendable' closure
389 |         }
390 |     }
/host/spi-builder-workspace/Sources/Redis/RedisCommand.swift:42:14: note: class 'RedisCommandCall' does not conform to the 'Sendable' protocol
40 | }
41 |
42 | public class RedisCommandCall {
   |              `- note: class 'RedisCommandCall' does not conform to the 'Sendable' protocol
43 |
44 |   let command : RedisCommand
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:401:22: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
399 |
400 |       if !call.command.isSubscribe {
401 |         call.promise.succeed(value)
    |                      `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
402 |         return
403 |       }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 16 | import Foundation
 17 |
 18 | public enum RESPValue {
    |             `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 19 |   case simpleString(ByteBuffer)
 20 |   case bulkString  (ByteBuffer?)
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
 14 |
 15 | import NIO
 16 | import NIORedis
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
 17 |
 18 | public let DefaultRedisPort = 6379
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:404:20: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
402 |         return
403 |       }
404 |       call.promise.succeed(.bulkString(nil)) // TBD
    |                    `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
405 |     }
406 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 16 | import Foundation
 17 |
 18 | public enum RESPValue {
    |             `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
 19 |   case simpleString(ByteBuffer)
 20 |   case bulkString  (ByteBuffer?)
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:456:9: warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
454 |     _enqueueCommandCall(RedisCommandCall(["QUIT"], eventLoop: eventLoop))
455 |       .whenComplete { _ in
456 |         self.state = .quit
    |         `- warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
457 |         self.subscribeListeners.removeAll()
458 |         self.messageListeners.removeAll()
/host/spi-builder-workspace/Sources/Redis/RedisClient.swift:470:9: warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
 90 |  *
 91 |  */
 92 | open class RedisClient : RedisCommandTarget {
    |            `- note: class 'RedisClient' does not conform to the 'Sendable' protocol
 93 |
 94 |   public  let options   : RedisClientOptions
    :
468 |     return bootstrap.connect(host: host, port: port)
469 |       .map { channel in
470 |         self.retryInfo.registerSuccessfulConnect()
    |         `- warning: capture of 'self' with non-sendable type 'RedisClient' in a '@Sendable' closure
471 |
472 |         guard case .connecting = self.state else {
Build complete! (111.06s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-nio",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.20.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-nio.git"
    },
    {
      "identity" : "swift-nio-redis",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.10.3",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/SwiftNIOExtras/swift-nio-redis.git"
    }
  ],
  "manifest_display_name" : "swift-nio-redis-client",
  "name" : "swift-nio-redis-client",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "Redis",
      "targets" : [
        "Redis"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "RedisTests",
      "module_type" : "SwiftTarget",
      "name" : "RedisTests",
      "path" : "Tests/RedisTests",
      "sources" : [
        "RedisClientTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "Redis"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Redis",
      "module_type" : "SwiftTarget",
      "name" : "Redis",
      "path" : "Sources/Redis",
      "product_dependencies" : [
        "NIORedis"
      ],
      "product_memberships" : [
        "Redis"
      ],
      "sources" : [
        "RedisClient.swift",
        "RedisClientOptions.swift",
        "RedisCommand.swift",
        "RedisCommandTarget.swift",
        "RedisPrint.swift",
        "RedisRetry.swift",
        "RedisTypeTransformable.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.0"
}
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Done.