Build Information
Successful build of Hydra, reference 2.0.6 (1d508b
), with Swift 6.1 for macOS (SPM) on 26 Apr 2025 10:56:14 UTC.
Swift 6 data race errors: 1
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/malcommac/Hydra.git
Reference: 2.0.6
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/malcommac/Hydra
* tag 2.0.6 -> FETCH_HEAD
HEAD is now at 1d508bc Merge branch 'release/2.0.6'
Cloned https://github.com/malcommac/Hydra.git
Revision (git rev-parse @):
1d508bc909b1e7c334c1720a4b7d93a5b2d3012a
SUCCESS checkout https://github.com/malcommac/Hydra.git at 2.0.6
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"dependencies": [
{
"identity": "hydra",
"name": "Hydra",
"url": "https://github.com/malcommac/Hydra.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Hydra",
"dependencies": [
]
}
]
}
Fetching https://github.com/malcommac/Hydra.git
[1/1836] Fetching hydra
Fetched https://github.com/malcommac/Hydra.git from cache (1.03s)
Creating working copy for https://github.com/malcommac/Hydra.git
Working copy of https://github.com/malcommac/Hydra.git resolved at 2.0.6 (1d508bc)
warning: '.resolve-product-dependencies': dependency 'hydra' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/malcommac/Hydra.git
https://github.com/malcommac/Hydra.git
{
"dependencies" : [
],
"manifest_display_name" : "Hydra",
"name" : "Hydra",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.10"
},
{
"name" : "ios",
"version" : "9.0"
},
{
"name" : "watchos",
"version" : "2.0"
},
{
"name" : "tvos",
"version" : "9.0"
}
],
"products" : [
{
"name" : "Hydra",
"targets" : [
"Hydra"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "HydraTests",
"module_type" : "SwiftTarget",
"name" : "HydraTests",
"path" : "Tests/HydraTests",
"sources" : [
"HydraTests.swift"
],
"target_dependencies" : [
"Hydra"
],
"type" : "test"
},
{
"c99name" : "Hydra",
"module_type" : "SwiftTarget",
"name" : "Hydra",
"path" : "Sources/Hydra",
"product_memberships" : [
"Hydra"
],
"sources" : [
"Commons.swift",
"Context.swift",
"DispatchTimerWrapper.swift",
"Promise+All.swift",
"Promise+Always.swift",
"Promise+Any.swift",
"Promise+Async.swift",
"Promise+Await.swift",
"Promise+Cancel.swift",
"Promise+Catch.swift",
"Promise+Defer.swift",
"Promise+Map.swift",
"Promise+Observer.swift",
"Promise+Pass.swift",
"Promise+Recover.swift",
"Promise+Reduce.swift",
"Promise+Retry.swift",
"Promise+RetryWhen.swift",
"Promise+State.swift",
"Promise+Then.swift",
"Promise+Timeout.swift",
"Promise+Validate.swift",
"Promise+Zip.swift",
"Promise.swift"
],
"type" : "library"
}
],
"tools_version" : "5.3"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/25] Emitting module Hydra
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Await.swift:41:5: warning: let 'awaitContext' is not concurrency-safe because non-'Sendable' type 'Context' may have shared mutable state; this is an error in the Swift 6 language mode
39 | /// The currently executing tasks run on distinct threads that are managed by the dispatch queue.
40 | /// The exact number of tasks executing at any given point is variable and depends on system conditions.
41 | let awaitContext = Context.custom(queue: DispatchQueue(label: "com.hydra.awaitcontext", attributes: .concurrent))
| |- warning: let 'awaitContext' is not concurrency-safe because non-'Sendable' type 'Context' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'awaitContext' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | /// This define a `..` operator you can use instead of calling `await` func.
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Context.swift:48:13: note: consider making enum 'Context' conform to the 'Sendable' protocol
46 | /// - utility: Should we used when work takes a few seconds to a few minutes (work that may take some time to complete and doesn’t require an immediate result, such as downloading or importing data. Utility tasks typically have a progress bar that is visible to the user. Focuses on providing a balance between responsiveness, performance, and energy efficiency).
47 | /// - custom: provide a custom queue
48 | public enum Context {
| `- note: consider making enum 'Context' conform to the 'Sendable' protocol
49 | case main
50 | case userInteractive
[4/27] Compiling Hydra Promise+Zip.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:168:10: warning: capture of 'self' with non-sendable type 'Promise<Value>' in a '@Sendable' closure
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
:
166 | // body can throws and fail. throwing a promise's body is equal to
167 | // reject it with the same error.
168 | try self.body?( { value in
| `- warning: capture of 'self' with non-sendable type 'Promise<Value>' in a '@Sendable' closure
169 | self.set(state: .resolved(value)) // resolved
170 | }, { err in
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:169:7: warning: capture of 'self' with non-sendable type 'Promise<Value>' in an isolated closure; this is an error in the Swift 6 language mode
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
:
167 | // reject it with the same error.
168 | try self.body?( { value in
169 | self.set(state: .resolved(value)) // resolved
| `- warning: capture of 'self' with non-sendable type 'Promise<Value>' in an isolated closure; this is an error in the Swift 6 language mode
170 | }, { err in
171 | self.set(state: .rejected(err)) // rejected
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:171:7: warning: capture of 'self' with non-sendable type 'Promise<Value>' in an isolated closure; this is an error in the Swift 6 language mode
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
:
169 | self.set(state: .resolved(value)) // resolved
170 | }, { err in
171 | self.set(state: .rejected(err)) // rejected
| `- warning: capture of 'self' with non-sendable type 'Promise<Value>' in an isolated closure; this is an error in the Swift 6 language mode
172 | }, self.operation)
173 | } catch let err {
[5/27] Compiling Hydra Promise.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:168:10: warning: capture of 'self' with non-sendable type 'Promise<Value>' in a '@Sendable' closure
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
:
166 | // body can throws and fail. throwing a promise's body is equal to
167 | // reject it with the same error.
168 | try self.body?( { value in
| `- warning: capture of 'self' with non-sendable type 'Promise<Value>' in a '@Sendable' closure
169 | self.set(state: .resolved(value)) // resolved
170 | }, { err in
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:169:7: warning: capture of 'self' with non-sendable type 'Promise<Value>' in an isolated closure; this is an error in the Swift 6 language mode
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
:
167 | // reject it with the same error.
168 | try self.body?( { value in
169 | self.set(state: .resolved(value)) // resolved
| `- warning: capture of 'self' with non-sendable type 'Promise<Value>' in an isolated closure; this is an error in the Swift 6 language mode
170 | }, { err in
171 | self.set(state: .rejected(err)) // rejected
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:171:7: warning: capture of 'self' with non-sendable type 'Promise<Value>' in an isolated closure; this is an error in the Swift 6 language mode
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
:
169 | self.set(state: .resolved(value)) // resolved
170 | }, { err in
171 | self.set(state: .rejected(err)) // rejected
| `- warning: capture of 'self' with non-sendable type 'Promise<Value>' in an isolated closure; this is an error in the Swift 6 language mode
172 | }, self.operation)
173 | } catch let err {
[6/27] Compiling Hydra Promise+Timeout.swift
[7/27] Compiling Hydra Promise+Validate.swift
[8/27] Compiling Hydra Commons.swift
[9/27] Compiling Hydra Context.swift
[10/27] Compiling Hydra DispatchTimerWrapper.swift
[11/27] Compiling Hydra Promise+Retry.swift
[12/27] Compiling Hydra Promise+RetryWhen.swift
[13/27] Compiling Hydra Promise+Recover.swift
[14/27] Compiling Hydra Promise+Reduce.swift
[15/27] Compiling Hydra Promise+Catch.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Defer.swift:54:6: warning: capture of 'resolve' with non-sendable type '(Value) -> ()' in a '@Sendable' closure
52 | let fireTime: DispatchTime = .now() + seconds
53 | ctx.queue.asyncAfter(deadline: fireTime) {
54 | resolve(value)
| |- warning: capture of 'resolve' with non-sendable type '(Value) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
55 | }
56 | }
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Defer.swift:54:14: warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
52 | let fireTime: DispatchTime = .now() + seconds
53 | ctx.queue.asyncAfter(deadline: fireTime) {
54 | resolve(value)
| `- warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
55 | }
56 | }
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:35:22: note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
[16/27] Compiling Hydra Promise+Defer.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Defer.swift:54:6: warning: capture of 'resolve' with non-sendable type '(Value) -> ()' in a '@Sendable' closure
52 | let fireTime: DispatchTime = .now() + seconds
53 | ctx.queue.asyncAfter(deadline: fireTime) {
54 | resolve(value)
| |- warning: capture of 'resolve' with non-sendable type '(Value) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
55 | }
56 | }
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Defer.swift:54:14: warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
52 | let fireTime: DispatchTime = .now() + seconds
53 | ctx.queue.asyncAfter(deadline: fireTime) {
54 | resolve(value)
| `- warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
55 | }
56 | }
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:35:22: note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
[17/27] Compiling Hydra Promise+Map.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Defer.swift:54:6: warning: capture of 'resolve' with non-sendable type '(Value) -> ()' in a '@Sendable' closure
52 | let fireTime: DispatchTime = .now() + seconds
53 | ctx.queue.asyncAfter(deadline: fireTime) {
54 | resolve(value)
| |- warning: capture of 'resolve' with non-sendable type '(Value) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
55 | }
56 | }
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Defer.swift:54:14: warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
52 | let fireTime: DispatchTime = .now() + seconds
53 | ctx.queue.asyncAfter(deadline: fireTime) {
54 | resolve(value)
| `- warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
55 | }
56 | }
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:35:22: note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
[18/27] Compiling Hydra Promise+All.swift
[19/27] Compiling Hydra Promise+Always.swift
[20/27] Compiling Hydra Promise+Any.swift
[21/27] Compiling Hydra Promise+State.swift
[22/27] Compiling Hydra Promise+Then.swift
[23/27] Compiling Hydra Promise+Async.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Async.swift:63:4: warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
61 | guard let delay = after else {
62 | context.queue.async {
63 | block()
| |- warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
64 | }
65 | return
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Async.swift:68:3: warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
66 | }
67 | context.queue.asyncAfter(deadline: .now() + delay) {
68 | block()
| |- warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
69 | }
70 | }
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Await.swift:41:5: warning: let 'awaitContext' is not concurrency-safe because non-'Sendable' type 'Context' may have shared mutable state; this is an error in the Swift 6 language mode
39 | /// The currently executing tasks run on distinct threads that are managed by the dispatch queue.
40 | /// The exact number of tasks executing at any given point is variable and depends on system conditions.
41 | let awaitContext = Context.custom(queue: DispatchQueue(label: "com.hydra.awaitcontext", attributes: .concurrent))
| |- warning: let 'awaitContext' is not concurrency-safe because non-'Sendable' type 'Context' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'awaitContext' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | /// This define a `..` operator you can use instead of calling `await` func.
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Context.swift:48:13: note: consider making enum 'Context' conform to the 'Sendable' protocol
46 | /// - utility: Should we used when work takes a few seconds to a few minutes (work that may take some time to complete and doesn’t require an immediate result, such as downloading or importing data. Utility tasks typically have a progress bar that is visible to the user. Focuses on providing a balance between responsiveness, performance, and energy efficiency).
47 | /// - custom: provide a custom queue
48 | public enum Context {
| `- note: consider making enum 'Context' conform to the 'Sendable' protocol
49 | case main
50 | case userInteractive
[24/27] Compiling Hydra Promise+Await.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Async.swift:63:4: warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
61 | guard let delay = after else {
62 | context.queue.async {
63 | block()
| |- warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
64 | }
65 | return
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Async.swift:68:3: warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
66 | }
67 | context.queue.asyncAfter(deadline: .now() + delay) {
68 | block()
| |- warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
69 | }
70 | }
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Await.swift:41:5: warning: let 'awaitContext' is not concurrency-safe because non-'Sendable' type 'Context' may have shared mutable state; this is an error in the Swift 6 language mode
39 | /// The currently executing tasks run on distinct threads that are managed by the dispatch queue.
40 | /// The exact number of tasks executing at any given point is variable and depends on system conditions.
41 | let awaitContext = Context.custom(queue: DispatchQueue(label: "com.hydra.awaitcontext", attributes: .concurrent))
| |- warning: let 'awaitContext' is not concurrency-safe because non-'Sendable' type 'Context' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'awaitContext' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | /// This define a `..` operator you can use instead of calling `await` func.
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Context.swift:48:13: note: consider making enum 'Context' conform to the 'Sendable' protocol
46 | /// - utility: Should we used when work takes a few seconds to a few minutes (work that may take some time to complete and doesn’t require an immediate result, such as downloading or importing data. Utility tasks typically have a progress bar that is visible to the user. Focuses on providing a balance between responsiveness, performance, and energy efficiency).
47 | /// - custom: provide a custom queue
48 | public enum Context {
| `- note: consider making enum 'Context' conform to the 'Sendable' protocol
49 | case main
50 | case userInteractive
[25/27] Compiling Hydra Promise+Cancel.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Async.swift:63:4: warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
61 | guard let delay = after else {
62 | context.queue.async {
63 | block()
| |- warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
64 | }
65 | return
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Async.swift:68:3: warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
66 | }
67 | context.queue.asyncAfter(deadline: .now() + delay) {
68 | block()
| |- warning: capture of 'block' with non-sendable type '() -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
69 | }
70 | }
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Await.swift:41:5: warning: let 'awaitContext' is not concurrency-safe because non-'Sendable' type 'Context' may have shared mutable state; this is an error in the Swift 6 language mode
39 | /// The currently executing tasks run on distinct threads that are managed by the dispatch queue.
40 | /// The exact number of tasks executing at any given point is variable and depends on system conditions.
41 | let awaitContext = Context.custom(queue: DispatchQueue(label: "com.hydra.awaitcontext", attributes: .concurrent))
| |- warning: let 'awaitContext' is not concurrency-safe because non-'Sendable' type 'Context' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make let 'awaitContext' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | /// This define a `..` operator you can use instead of calling `await` func.
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Context.swift:48:13: note: consider making enum 'Context' conform to the 'Sendable' protocol
46 | /// - utility: Should we used when work takes a few seconds to a few minutes (work that may take some time to complete and doesn’t require an immediate result, such as downloading or importing data. Utility tasks typically have a progress bar that is visible to the user. Focuses on providing a balance between responsiveness, performance, and energy efficiency).
47 | /// - custom: provide a custom queue
48 | public enum Context {
| `- note: consider making enum 'Context' conform to the 'Sendable' protocol
49 | case main
50 | case userInteractive
[26/27] Compiling Hydra Promise+Observer.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Observer.swift:60:6: warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.ResolveObserver' (aka '(Value) -> ()') in a '@Sendable' closure
58 | case (.onResolve(let context, let handler), .resolved(let value)):
59 | context.queue.async {
60 | handler(value)
| |- warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.ResolveObserver' (aka '(Value) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
61 | }
62 | case (.onReject(let context, let handler), .rejected(let error)):
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Observer.swift:60:14: warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
58 | case (.onResolve(let context, let handler), .resolved(let value)):
59 | context.queue.async {
60 | handler(value)
| `- warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
61 | }
62 | case (.onReject(let context, let handler), .rejected(let error)):
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:35:22: note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Observer.swift:64:6: warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.RejectObserver' (aka '(any Error) -> ()') in a '@Sendable' closure
62 | case (.onReject(let context, let handler), .rejected(let error)):
63 | context.queue.async {
64 | handler(error)
| |- warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.RejectObserver' (aka '(any Error) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
65 | }
66 | case (.onCancel(let context, let handler), .cancelled):
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Observer.swift:68:6: warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.CancelObserver' (aka '() -> ()') in a '@Sendable' closure
66 | case (.onCancel(let context, let handler), .cancelled):
67 | context.queue.async {
68 | handler()
| |- warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.CancelObserver' (aka '() -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
69 | }
70 | default:
[27/27] Compiling Hydra Promise+Pass.swift
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Observer.swift:60:6: warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.ResolveObserver' (aka '(Value) -> ()') in a '@Sendable' closure
58 | case (.onResolve(let context, let handler), .resolved(let value)):
59 | context.queue.async {
60 | handler(value)
| |- warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.ResolveObserver' (aka '(Value) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
61 | }
62 | case (.onReject(let context, let handler), .rejected(let error)):
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Observer.swift:60:14: warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
58 | case (.onResolve(let context, let handler), .resolved(let value)):
59 | context.queue.async {
60 | handler(value)
| `- warning: capture of 'value' with non-sendable type 'Value' in a '@Sendable' closure
61 | }
62 | case (.onReject(let context, let handler), .rejected(let error)):
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise.swift:35:22: note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
33 | import Foundation
34 |
35 | public class Promise<Value> {
| `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
36 |
37 | public typealias Resolved = (Value) -> ()
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Observer.swift:64:6: warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.RejectObserver' (aka '(any Error) -> ()') in a '@Sendable' closure
62 | case (.onReject(let context, let handler), .rejected(let error)):
63 | context.queue.async {
64 | handler(error)
| |- warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.RejectObserver' (aka '(any Error) -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
65 | }
66 | case (.onCancel(let context, let handler), .cancelled):
/Users/admin/builder/spi-builder-workspace/Sources/Hydra/Promise+Observer.swift:68:6: warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.CancelObserver' (aka '() -> ()') in a '@Sendable' closure
66 | case (.onCancel(let context, let handler), .cancelled):
67 | context.queue.async {
68 | handler()
| |- warning: capture of 'handler' with non-sendable type 'Promise<Value>.Observer.CancelObserver' (aka '() -> ()') in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
69 | }
70 | default:
Build complete! (5.84s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "Hydra",
"name" : "Hydra",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.10"
},
{
"name" : "ios",
"version" : "9.0"
},
{
"name" : "watchos",
"version" : "2.0"
},
{
"name" : "tvos",
"version" : "9.0"
}
],
"products" : [
{
"name" : "Hydra",
"targets" : [
"Hydra"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "HydraTests",
"module_type" : "SwiftTarget",
"name" : "HydraTests",
"path" : "Tests/HydraTests",
"sources" : [
"HydraTests.swift"
],
"target_dependencies" : [
"Hydra"
],
"type" : "test"
},
{
"c99name" : "Hydra",
"module_type" : "SwiftTarget",
"name" : "Hydra",
"path" : "Sources/Hydra",
"product_memberships" : [
"Hydra"
],
"sources" : [
"Commons.swift",
"Context.swift",
"DispatchTimerWrapper.swift",
"Promise+All.swift",
"Promise+Always.swift",
"Promise+Any.swift",
"Promise+Async.swift",
"Promise+Await.swift",
"Promise+Cancel.swift",
"Promise+Catch.swift",
"Promise+Defer.swift",
"Promise+Map.swift",
"Promise+Observer.swift",
"Promise+Pass.swift",
"Promise+Recover.swift",
"Promise+Reduce.swift",
"Promise+Retry.swift",
"Promise+RetryWhen.swift",
"Promise+State.swift",
"Promise+Then.swift",
"Promise+Timeout.swift",
"Promise+Validate.swift",
"Promise+Zip.swift",
"Promise.swift"
],
"type" : "library"
}
],
"tools_version" : "5.3"
}
Done.