This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.

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 Async with Swift 6.0 for macOS (SPM).

Swift 6 data race errors: 4

Build Command

env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete

Build Log

========================================
RunAll
========================================
Builder version: 4.40.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/chipjarred/Async.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
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:         macosSpm
Swift version:             6.0
Building package at path:  $workDir
https://github.com/chipjarred/Async.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-6F35C1178C84523A.txt
[3/7] Compiling Async Promise.swift
[4/7] Compiling Async Async.swift
/Users/admin/builder/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 |     }
/Users/admin/builder/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 |     }
/Users/admin/builder/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 |     }
/Users/admin/builder/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 |         }
/Users/admin/builder/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.
/Users/admin/builder/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 |         }
/Users/admin/builder/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 |         }
/Users/admin/builder/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.
/Users/admin/builder/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 |         }
/Users/admin/builder/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 | }
/Users/admin/builder/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 | }
/Users/admin/builder/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 | }
/Users/admin/builder/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 | }
[5/7] Emitting module Async
/Users/admin/builder/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 |     }
/Users/admin/builder/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 |     }
/Users/admin/builder/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 |     }
/Users/admin/builder/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 |         }
/Users/admin/builder/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.
/Users/admin/builder/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 |         }
/Users/admin/builder/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 |         }
/Users/admin/builder/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.
/Users/admin/builder/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 |         }
/Users/admin/builder/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 | }
/Users/admin/builder/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 | }
/Users/admin/builder/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 | }
/Users/admin/builder/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] Compiling Async Future.swift
/Users/admin/builder/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 |
/Users/admin/builder/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 |         }
/Users/admin/builder/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 |         }
/Users/admin/builder/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 |         }
/Users/admin/builder/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 |         }
[7/7] Compiling Async Mutex.swift
Build complete! (17.75s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Async",
  "name" : "Async",
  "path" : "/Users/admin/builder/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"
}
Done.
This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.