The Swift Package Index logo.Swift Package Index

Build Information

Successful build of Async, reference master (f560b8), with Swift 6.1 for Android on 27 May 2025 20:56:21 UTC.

Swift 6 data race errors: 4

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 4.63.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/chipjarred/Async.git
Reference: master
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/chipjarred/Async
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at f560b82 Minor README formatting
Cloned https://github.com/chipjarred/Async.git
Revision (git rev-parse @):
f560b827aed33cbafc63755679dda4122ade3c21
SUCCESS checkout https://github.com/chipjarred/Async.git at master
========================================
Build
========================================
Selected platform:         android
Swift version:             6.1
Building package at path:  $PWD
https://github.com/chipjarred/Async.git
https://github.com/chipjarred/Async.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Async",
  "name" : "Async",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "Async",
      "targets" : [
        "Async"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "AsyncTests",
      "module_type" : "SwiftTarget",
      "name" : "AsyncTests",
      "path" : "Tests/AsyncTests",
      "sources" : [
        "AsyncTests.swift",
        "FutureTests.swift",
        "MutexTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "Async"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Async",
      "module_type" : "SwiftTarget",
      "name" : "Async",
      "path" : "Sources/Async",
      "product_memberships" : [
        "Async"
      ],
      "sources" : [
        "Async.swift",
        "Future.swift",
        "Mutex.swift",
        "Promise.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-2":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:fe1962677657b2408c217cb5cceb3c09bc1d91486e360cebbc6eee461a5945d8
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
[3/7] Compiling Async Promise.swift
[4/7] Compiling Async Future.swift
/host/spi-builder-workspace/Sources/Async/Future.swift:454:13: warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 |  types, you can create a poor-mans parallel computuation graph on the fly.
185 |  */
186 | public final class Future<T>
    |                    `- note: generic class 'Future' does not conform to the 'Sendable' protocol
187 | {
188 |     public typealias ValueHandler = (_:T) -> Void
    :
452 |     {
453 |         let _ = futureHandlerQueue.async(afterDeadline: deadline) {
454 |             self.set(error: FutureError.timeOut)
    |             `- warning: capture of 'self' with non-sendable type 'Self' in a '@Sendable' closure; this is an error in the Swift 6 language mode
455 |         }
456 |
/host/spi-builder-workspace/Sources/Async/Future.swift:571:17: warning: capture of 'handler' with non-sendable type '(T) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
569 |             handler in
570 |             let _ = futureHandlerQueue.async {
571 |                 handler(self._value!)
    |                 |- warning: capture of 'handler' with non-sendable type '(T) -> 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'
572 |             }
573 |         }
/host/spi-builder-workspace/Sources/Async/Future.swift:571:25: warning: capture of 'self' with non-sendable type 'Future<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 |  types, you can create a poor-mans parallel computuation graph on the fly.
185 |  */
186 | public final class Future<T>
    |                    `- note: generic class 'Future' does not conform to the 'Sendable' protocol
187 | {
188 |     public typealias ValueHandler = (_:T) -> Void
    :
569 |             handler in
570 |             let _ = futureHandlerQueue.async {
571 |                 handler(self._value!)
    |                         `- warning: capture of 'self' with non-sendable type 'Future<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
572 |             }
573 |         }
/host/spi-builder-workspace/Sources/Async/Future.swift:585:17: warning: capture of 'handler' with non-sendable type '(any Error) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
583 |             handler in
584 |             let _ = futureHandlerQueue.async {
585 |                 handler(self._error!)
    |                 |- warning: capture of 'handler' with non-sendable type '(any Error) -> 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'
586 |             }
587 |         }
/host/spi-builder-workspace/Sources/Async/Future.swift:585:25: warning: capture of 'self' with non-sendable type 'Future<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 |  types, you can create a poor-mans parallel computuation graph on the fly.
185 |  */
186 | public final class Future<T>
    |                    `- note: generic class 'Future' does not conform to the 'Sendable' protocol
187 | {
188 |     public typealias ValueHandler = (_:T) -> Void
    :
583 |             handler in
584 |             let _ = futureHandlerQueue.async {
585 |                 handler(self._error!)
    |                         `- warning: capture of 'self' with non-sendable type 'Future<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
586 |             }
587 |         }
[5/7] Compiling Async Async.swift
/host/spi-builder-workspace/Sources/Async/Async.swift:84:13: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
 76 |         qos: DispatchQoS = .unspecified,
 77 |         flags: DispatchWorkItemFlags = [],
 78 |         _ executionBlock:@escaping () throws -> T) -> Future<T>
    |           `- note: parameter 'executionBlock' is implicitly non-sendable
 79 |     {
 80 |         return self.async(
    :
 82 |             qos: qos,
 83 |             flags: flags,
 84 |             executionBlock
    |             `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
 85 |         )
 86 |     }
/host/spi-builder-workspace/Sources/Async/Async.swift:114:13: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
106 |         qos: DispatchQoS = .unspecified,
107 |         flags: DispatchWorkItemFlags = [],
108 |         _ executionBlock:@escaping () throws -> T) -> Future<T>
    |           `- note: parameter 'executionBlock' is implicitly non-sendable
109 |     {
110 |         return self.async(
    :
112 |             qos: qos,
113 |             flags: flags,
114 |             executionBlock
    |             `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
115 |         )
116 |     }
/host/spi-builder-workspace/Sources/Async/Async.swift:144:13: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
136 |         qos: DispatchQoS = .unspecified,
137 |         flags: DispatchWorkItemFlags = [],
138 |         _ executionBlock:@escaping () throws -> T) -> Future<T>
    |           `- note: parameter 'executionBlock' is implicitly non-sendable
139 |     {
140 |         return self.async(
    :
142 |             qos: qos,
143 |             flags: flags,
144 |             executionBlock
    |             `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
145 |         )
146 |     }
/host/spi-builder-workspace/Sources/Async/Async.swift:180:17: warning: capture of 'promise' with non-sendable type 'Promise<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
178 |                 flags: flags)
179 |             {
180 |                 promise.set(from: executionBlock)
    |                 `- warning: capture of 'promise' with non-sendable type 'Promise<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
181 |             }
182 |         }
/host/spi-builder-workspace/Sources/Async/Promise.swift:77:15: note: consider making generic struct 'Promise' conform to the 'Sendable' protocol
 75 |  word "Promise" in this context altogether, replacing it with "Obligation".
 76 |  */
 77 | public struct Promise<T>
    |               `- note: consider making generic struct 'Promise' conform to the 'Sendable' protocol
 78 | {
 79 |     /// `Future` through which the results of code used to set values with this `Promise` can be read.
/host/spi-builder-workspace/Sources/Async/Async.swift:180:35: warning: capture of 'executionBlock' with non-sendable type '() throws -> T' in a '@Sendable' closure; this is an error in the Swift 6 language mode
178 |                 flags: flags)
179 |             {
180 |                 promise.set(from: executionBlock)
    |                                   |- warning: capture of 'executionBlock' with non-sendable type '() throws -> T' 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'
181 |             }
182 |         }
/host/spi-builder-workspace/Sources/Async/Async.swift:186:17: warning: capture of 'promise' with non-sendable type 'Promise<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 |         {
185 |             self.async(group: nil, qos: qos, flags: flags) {
186 |                 promise.set(from: executionBlock)
    |                 `- warning: capture of 'promise' with non-sendable type 'Promise<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
187 |             }
188 |         }
/host/spi-builder-workspace/Sources/Async/Promise.swift:77:15: note: consider making generic struct 'Promise' conform to the 'Sendable' protocol
 75 |  word "Promise" in this context altogether, replacing it with "Obligation".
 76 |  */
 77 | public struct Promise<T>
    |               `- note: consider making generic struct 'Promise' conform to the 'Sendable' protocol
 78 | {
 79 |     /// `Future` through which the results of code used to set values with this `Promise` can be read.
/host/spi-builder-workspace/Sources/Async/Async.swift:186:35: warning: capture of 'executionBlock' with non-sendable type '() throws -> T' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 |         {
185 |             self.async(group: nil, qos: qos, flags: flags) {
186 |                 promise.set(from: executionBlock)
    |                                   |- warning: capture of 'executionBlock' with non-sendable type '() throws -> T' 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'
187 |             }
188 |         }
/host/spi-builder-workspace/Sources/Async/Async.swift:353:9: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
345 |     qos: DispatchQoS = .unspecified,
346 |     flags: DispatchWorkItemFlags = [],
347 |     _ executionBlock:@escaping () throws -> T) -> Future<T>
    |       `- note: parameter 'executionBlock' is implicitly non-sendable
348 | {
349 |     return DispatchQueue.asyncDefault.async(
    :
351 |         qos: qos,
352 |         flags: flags,
353 |         executionBlock
    |         `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
354 |     )
355 | }
/host/spi-builder-workspace/Sources/Async/Async.swift:384:9: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
376 |     qos: DispatchQoS = .unspecified,
377 |     flags: DispatchWorkItemFlags = [],
378 |     _ executionBlock:@escaping () throws -> T) -> Future<T>
    |       `- note: parameter 'executionBlock' is implicitly non-sendable
379 | {
380 |     return DispatchQueue.asyncDefault.async(
    :
382 |         qos: qos,
383 |         flags: flags,
384 |         executionBlock
    |         `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
385 |     )
386 | }
/host/spi-builder-workspace/Sources/Async/Async.swift:414:9: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
406 |     qos: DispatchQoS = .unspecified,
407 |     flags: DispatchWorkItemFlags = [],
408 |     _ executionBlock:@escaping () throws -> T) -> Future<T>
    |       `- note: parameter 'executionBlock' is implicitly non-sendable
409 | {
410 |     return DispatchQueue.asyncDefault.async(
    :
412 |         qos: qos,
413 |         flags: flags,
414 |         executionBlock
    |         `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
415 |     )
416 | }
/host/spi-builder-workspace/Sources/Async/Async.swift:445:9: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
437 |     qos: DispatchQoS = .unspecified,
438 |     flags: DispatchWorkItemFlags = [],
439 |     _ executionBlock:@escaping () throws -> T) -> Future<T>
    |       `- note: parameter 'executionBlock' is implicitly non-sendable
440 | {
441 |     return DispatchQueue.asyncDefault.async(
    :
443 |         qos: qos,
444 |         flags: flags,
445 |         executionBlock
    |         `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
446 |     )
447 | }
[6/7] Emitting module Async
/host/spi-builder-workspace/Sources/Async/Async.swift:84:13: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
 76 |         qos: DispatchQoS = .unspecified,
 77 |         flags: DispatchWorkItemFlags = [],
 78 |         _ executionBlock:@escaping () throws -> T) -> Future<T>
    |           `- note: parameter 'executionBlock' is implicitly non-sendable
 79 |     {
 80 |         return self.async(
    :
 82 |             qos: qos,
 83 |             flags: flags,
 84 |             executionBlock
    |             `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
 85 |         )
 86 |     }
/host/spi-builder-workspace/Sources/Async/Async.swift:114:13: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
106 |         qos: DispatchQoS = .unspecified,
107 |         flags: DispatchWorkItemFlags = [],
108 |         _ executionBlock:@escaping () throws -> T) -> Future<T>
    |           `- note: parameter 'executionBlock' is implicitly non-sendable
109 |     {
110 |         return self.async(
    :
112 |             qos: qos,
113 |             flags: flags,
114 |             executionBlock
    |             `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
115 |         )
116 |     }
/host/spi-builder-workspace/Sources/Async/Async.swift:144:13: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
136 |         qos: DispatchQoS = .unspecified,
137 |         flags: DispatchWorkItemFlags = [],
138 |         _ executionBlock:@escaping () throws -> T) -> Future<T>
    |           `- note: parameter 'executionBlock' is implicitly non-sendable
139 |     {
140 |         return self.async(
    :
142 |             qos: qos,
143 |             flags: flags,
144 |             executionBlock
    |             `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
145 |         )
146 |     }
/host/spi-builder-workspace/Sources/Async/Async.swift:180:17: warning: capture of 'promise' with non-sendable type 'Promise<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
178 |                 flags: flags)
179 |             {
180 |                 promise.set(from: executionBlock)
    |                 `- warning: capture of 'promise' with non-sendable type 'Promise<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
181 |             }
182 |         }
/host/spi-builder-workspace/Sources/Async/Promise.swift:77:15: note: consider making generic struct 'Promise' conform to the 'Sendable' protocol
 75 |  word "Promise" in this context altogether, replacing it with "Obligation".
 76 |  */
 77 | public struct Promise<T>
    |               `- note: consider making generic struct 'Promise' conform to the 'Sendable' protocol
 78 | {
 79 |     /// `Future` through which the results of code used to set values with this `Promise` can be read.
/host/spi-builder-workspace/Sources/Async/Async.swift:180:35: warning: capture of 'executionBlock' with non-sendable type '() throws -> T' in a '@Sendable' closure; this is an error in the Swift 6 language mode
178 |                 flags: flags)
179 |             {
180 |                 promise.set(from: executionBlock)
    |                                   |- warning: capture of 'executionBlock' with non-sendable type '() throws -> T' 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'
181 |             }
182 |         }
/host/spi-builder-workspace/Sources/Async/Async.swift:186:17: warning: capture of 'promise' with non-sendable type 'Promise<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 |         {
185 |             self.async(group: nil, qos: qos, flags: flags) {
186 |                 promise.set(from: executionBlock)
    |                 `- warning: capture of 'promise' with non-sendable type 'Promise<T>' in a '@Sendable' closure; this is an error in the Swift 6 language mode
187 |             }
188 |         }
/host/spi-builder-workspace/Sources/Async/Promise.swift:77:15: note: consider making generic struct 'Promise' conform to the 'Sendable' protocol
 75 |  word "Promise" in this context altogether, replacing it with "Obligation".
 76 |  */
 77 | public struct Promise<T>
    |               `- note: consider making generic struct 'Promise' conform to the 'Sendable' protocol
 78 | {
 79 |     /// `Future` through which the results of code used to set values with this `Promise` can be read.
/host/spi-builder-workspace/Sources/Async/Async.swift:186:35: warning: capture of 'executionBlock' with non-sendable type '() throws -> T' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 |         {
185 |             self.async(group: nil, qos: qos, flags: flags) {
186 |                 promise.set(from: executionBlock)
    |                                   |- warning: capture of 'executionBlock' with non-sendable type '() throws -> T' 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'
187 |             }
188 |         }
/host/spi-builder-workspace/Sources/Async/Async.swift:353:9: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
345 |     qos: DispatchQoS = .unspecified,
346 |     flags: DispatchWorkItemFlags = [],
347 |     _ executionBlock:@escaping () throws -> T) -> Future<T>
    |       `- note: parameter 'executionBlock' is implicitly non-sendable
348 | {
349 |     return DispatchQueue.asyncDefault.async(
    :
351 |         qos: qos,
352 |         flags: flags,
353 |         executionBlock
    |         `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
354 |     )
355 | }
/host/spi-builder-workspace/Sources/Async/Async.swift:384:9: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
376 |     qos: DispatchQoS = .unspecified,
377 |     flags: DispatchWorkItemFlags = [],
378 |     _ executionBlock:@escaping () throws -> T) -> Future<T>
    |       `- note: parameter 'executionBlock' is implicitly non-sendable
379 | {
380 |     return DispatchQueue.asyncDefault.async(
    :
382 |         qos: qos,
383 |         flags: flags,
384 |         executionBlock
    |         `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
385 |     )
386 | }
/host/spi-builder-workspace/Sources/Async/Async.swift:414:9: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
406 |     qos: DispatchQoS = .unspecified,
407 |     flags: DispatchWorkItemFlags = [],
408 |     _ executionBlock:@escaping () throws -> T) -> Future<T>
    |       `- note: parameter 'executionBlock' is implicitly non-sendable
409 | {
410 |     return DispatchQueue.asyncDefault.async(
    :
412 |         qos: qos,
413 |         flags: flags,
414 |         executionBlock
    |         `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
415 |     )
416 | }
/host/spi-builder-workspace/Sources/Async/Async.swift:445:9: warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
437 |     qos: DispatchQoS = .unspecified,
438 |     flags: DispatchWorkItemFlags = [],
439 |     _ executionBlock:@escaping () throws -> T) -> Future<T>
    |       `- note: parameter 'executionBlock' is implicitly non-sendable
440 | {
441 |     return DispatchQueue.asyncDefault.async(
    :
443 |         qos: qos,
444 |         flags: flags,
445 |         executionBlock
    |         `- warning: passing non-sendable parameter 'executionBlock' to function expecting a @Sendable closure
446 |     )
447 | }
[7/7] Compiling Async Mutex.swift
Build complete! (11.07s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Async",
  "name" : "Async",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "Async",
      "targets" : [
        "Async"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "AsyncTests",
      "module_type" : "SwiftTarget",
      "name" : "AsyncTests",
      "path" : "Tests/AsyncTests",
      "sources" : [
        "AsyncTests.swift",
        "FutureTests.swift",
        "MutexTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "Async"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Async",
      "module_type" : "SwiftTarget",
      "name" : "Async",
      "path" : "Sources/Async",
      "product_memberships" : [
        "Async"
      ],
      "sources" : [
        "Async.swift",
        "Future.swift",
        "Mutex.swift",
        "Promise.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:fe1962677657b2408c217cb5cceb3c09bc1d91486e360cebbc6eee461a5945d8
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
Done.