Build Information
Successful build of PonyExpress, reference 2.0.2 (649f3c), with Swift 6.1 for macOS (SPM) on 27 Apr 2025 12:04:49 UTC.
Swift 6 data race errors: 2
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 InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/adamwulf/PonyExpress.git
Reference: 2.0.2
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/adamwulf/PonyExpress
* tag 2.0.2 -> FETCH_HEAD
HEAD is now at 649f3c0 Fixes how types with the same name are cached inside of PostOffice. now they are cached with a fully qualified name.
Cloned https://github.com/adamwulf/PonyExpress.git
Revision (git rev-parse @):
649f3c024eab95a9d3bf0dadabb8fa80f46bcb61
SUCCESS checkout https://github.com/adamwulf/PonyExpress.git at 2.0.2
Fetching https://github.com/adamwulf/Locks.git
[1/311] Fetching locks
Fetched https://github.com/adamwulf/Locks.git from cache (0.90s)
Computing version for https://github.com/adamwulf/Locks.git
Computed https://github.com/adamwulf/Locks.git at 1.0.0 (1.50s)
Creating working copy for https://github.com/adamwulf/Locks.git
Working copy of https://github.com/adamwulf/Locks.git resolved at 1.0.0
========================================
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": "ponyexpress",
"name": "PonyExpress",
"url": "https://github.com/adamwulf/PonyExpress.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/PonyExpress",
"dependencies": [
{
"identity": "locks",
"name": "Locks",
"url": "https://github.com/adamwulf/Locks.git",
"version": "1.0.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Locks",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/adamwulf/PonyExpress.git
[1/2203] Fetching ponyexpress
Fetched https://github.com/adamwulf/PonyExpress.git from cache (0.99s)
Fetching https://github.com/adamwulf/Locks.git from cache
Fetched https://github.com/adamwulf/Locks.git from cache (0.40s)
Computing version for https://github.com/adamwulf/Locks.git
Computed https://github.com/adamwulf/Locks.git at 1.0.0 (0.45s)
Creating working copy for https://github.com/adamwulf/Locks.git
Working copy of https://github.com/adamwulf/Locks.git resolved at 1.0.0
Creating working copy for https://github.com/adamwulf/PonyExpress.git
Working copy of https://github.com/adamwulf/PonyExpress.git resolved at 2.0.2 (649f3c0)
warning: '.resolve-product-dependencies': dependency 'ponyexpress' is not used by any target
Found 1 product dependencies
- Locks
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/adamwulf/PonyExpress.git
https://github.com/adamwulf/PonyExpress.git
{
"dependencies" : [
{
"identity" : "locks",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/adamwulf/Locks.git"
}
],
"manifest_display_name" : "PonyExpress",
"name" : "PonyExpress",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "ios",
"version" : "11.0"
}
],
"products" : [
{
"name" : "PonyExpress",
"targets" : [
"PonyExpress"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "PonyExpressTests",
"module_type" : "SwiftTarget",
"name" : "PonyExpressTests",
"path" : "Tests/PonyExpressTests",
"sources" : [
"MemoryTests.swift",
"TestHelpers.swift",
"UnverifiedMailBlockTests.swift",
"UnverifiedMailMethodTests.swift",
"VerifiedBlockTests.swift",
"VerifiedMethodTests.swift"
],
"target_dependencies" : [
"PonyExpress"
],
"type" : "test"
},
{
"c99name" : "PonyExpress",
"module_type" : "SwiftTarget",
"name" : "PonyExpress",
"path" : "Sources/PonyExpress",
"product_dependencies" : [
"Locks"
],
"product_memberships" : [
"PonyExpress"
],
"sources" : [
"Array+Extension.swift",
"Mail.swift",
"PostOffice.swift",
"Recipient.swift"
],
"type" : "library"
}
],
"tools_version" : "5.7"
}
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/3] Write sources
[2/3] Write swift-version-2F0A5646E1D333AE.txt
[4/13] Compiling Locks ReadWriteLock.swift
[5/13] Compiling Locks Mutex.swift
[6/13] Compiling Locks RecursiveMutex.swift
[7/13] Compiling Locks ThreadLocal.swift
[8/13] Compiling Locks AtomicWrapper+Extensions.swift
[9/13] Emitting module Locks
[10/13] Compiling Locks NSLocking+Extensions.swift
[11/13] Compiling Locks AtomicDictionary.swift
[12/13] Compiling Locks AtomicSet.swift
[13/13] Compiling Locks AtomicWrapper.swift
[14/14] Compiling Locks UnfairLock.swift
[15/19] Compiling PonyExpress Recipient.swift
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/Recipient.swift:14:24: warning: static property 'nextIdentifier' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
12 | /// - SeeAlso: ``PostOffice/unregister(_:)``
13 | public struct RecipientId: Hashable {
14 | @Atomic static var nextIdentifier: UInt = 0
| |- warning: static property 'nextIdentifier' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'nextIdentifier' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'nextIdentifier' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
15 |
16 | let value: UInt
[16/19] Compiling PonyExpress Mail.swift
[17/19] Compiling PonyExpress Array+Extension.swift
[18/19] Emitting module PonyExpress
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/PostOffice.swift:24:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'PostOffice' may have shared mutable state; this is an error in the Swift 6 language mode
17 | /// PostOffice.default.post(yourNotification, sender: yourSender)
18 | /// ```
19 | public class PostOffice {
| `- note: class 'PostOffice' does not conform to the 'Sendable' protocol
20 |
21 | // MARK: - Public
22 |
23 | /// A default `PostOffice`, akin to `NotificationCenter.default`.
24 | public static let `default` = PostOffice()
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'PostOffice' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | // MARK: - Internal
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/Recipient.swift:14:24: warning: static property 'nextIdentifier' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
12 | /// - SeeAlso: ``PostOffice/unregister(_:)``
13 | public struct RecipientId: Hashable {
14 | @Atomic static var nextIdentifier: UInt = 0
| |- warning: static property 'nextIdentifier' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'nextIdentifier' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'nextIdentifier' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
15 |
16 | let value: UInt
[19/19] Compiling PonyExpress PostOffice.swift
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/PostOffice.swift:24:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'PostOffice' may have shared mutable state; this is an error in the Swift 6 language mode
17 | /// PostOffice.default.post(yourNotification, sender: yourSender)
18 | /// ```
19 | public class PostOffice {
| `- note: class 'PostOffice' does not conform to the 'Sendable' protocol
20 |
21 | // MARK: - Public
22 |
23 | /// A default `PostOffice`, akin to `NotificationCenter.default`.
24 | public static let `default` = PostOffice()
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'PostOffice' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 |
26 | // MARK: - Internal
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/PostOffice.swift:653:21: warning: capture of 'listener' with non-sendable type 'PostOffice.RecipientContext' in a '@Sendable' closure
59 |
60 | /// Storage to keep the recipient and all of its metadata conveniently linked
61 | private struct RecipientContext {
| `- note: consider making struct 'RecipientContext' conform to the 'Sendable' protocol
62 | let recipient: AnyRecipient
63 | let queue: DispatchQueue?
:
651 | if let queue = listener.queue {
652 | queue.async {
653 | listener.recipient.block?(notification, sender)
| `- warning: capture of 'listener' with non-sendable type 'PostOffice.RecipientContext' in a '@Sendable' closure
654 | }
655 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/PostOffice.swift:653:47: warning: capture of 'notification' with non-sendable type 'any UnverifiedMail' in a '@Sendable' closure
651 | if let queue = listener.queue {
652 | queue.async {
653 | listener.recipient.block?(notification, sender)
| `- warning: capture of 'notification' with non-sendable type 'any UnverifiedMail' in a '@Sendable' closure
654 | }
655 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/Mail.swift:18:17: note: protocol 'UnverifiedMail' does not conform to the 'Sendable' protocol
16 |
17 | /// Notifications that do not require a specific sender type, or can be sent with a `nil` sender, must implement `UnverifiedMail`.
18 | public protocol UnverifiedMail { }
| `- note: protocol 'UnverifiedMail' does not conform to the 'Sendable' protocol
19 |
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/PostOffice.swift:653:61: warning: capture of 'sender' with non-sendable type 'Sender?' in a '@Sendable' closure
632 | // MARK: - Post Helpers
633 |
634 | private func postMailHelper<Sender: AnyObject>(_ notification: UnverifiedMail, sender: Sender?) {
| `- note: consider making generic parameter 'Sender' conform to the 'Sendable' protocol
635 | lock.lock()
636 | var allListeners: [RecipientContext] = []
:
651 | if let queue = listener.queue {
652 | queue.async {
653 | listener.recipient.block?(notification, sender)
| `- warning: capture of 'sender' with non-sendable type 'Sender?' in a '@Sendable' closure
654 | }
655 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/PostOffice.swift:680:21: warning: capture of 'listener' with non-sendable type 'PostOffice.RecipientContext' in a '@Sendable' closure
59 |
60 | /// Storage to keep the recipient and all of its metadata conveniently linked
61 | private struct RecipientContext {
| `- note: consider making struct 'RecipientContext' conform to the 'Sendable' protocol
62 | let recipient: AnyRecipient
63 | let queue: DispatchQueue?
:
678 | if let queue = listener.queue {
679 | queue.async {
680 | listener.recipient.block?(notification, sender)
| `- warning: capture of 'listener' with non-sendable type 'PostOffice.RecipientContext' in a '@Sendable' closure
681 | }
682 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/PostOffice.swift:680:47: warning: capture of 'notification' with non-sendable type 'Notification' in a '@Sendable' closure
659 | }
660 |
661 | private func postVerifiedMailHelper<Notification: VerifiedMail>(_ notification: Notification, sender: Notification.RequiredSender?) {
| `- note: consider making generic parameter 'Notification' conform to the 'Sendable' protocol
662 | lock.lock()
663 | var allListeners: [RecipientContext] = []
:
678 | if let queue = listener.queue {
679 | queue.async {
680 | listener.recipient.block?(notification, sender)
| `- warning: capture of 'notification' with non-sendable type 'Notification' in a '@Sendable' closure
681 | }
682 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/PonyExpress/PostOffice.swift:680:61: warning: capture of 'sender' with non-sendable type 'Notification.RequiredSender?' in a '@Sendable' closure
678 | if let queue = listener.queue {
679 | queue.async {
680 | listener.recipient.block?(notification, sender)
| `- warning: capture of 'sender' with non-sendable type 'Notification.RequiredSender?' in a '@Sendable' closure
681 | }
682 | } else {
Build complete! (9.08s)
Build complete.
{
"dependencies" : [
{
"identity" : "locks",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/adamwulf/Locks.git"
}
],
"manifest_display_name" : "PonyExpress",
"name" : "PonyExpress",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "ios",
"version" : "11.0"
}
],
"products" : [
{
"name" : "PonyExpress",
"targets" : [
"PonyExpress"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "PonyExpressTests",
"module_type" : "SwiftTarget",
"name" : "PonyExpressTests",
"path" : "Tests/PonyExpressTests",
"sources" : [
"MemoryTests.swift",
"TestHelpers.swift",
"UnverifiedMailBlockTests.swift",
"UnverifiedMailMethodTests.swift",
"VerifiedBlockTests.swift",
"VerifiedMethodTests.swift"
],
"target_dependencies" : [
"PonyExpress"
],
"type" : "test"
},
{
"c99name" : "PonyExpress",
"module_type" : "SwiftTarget",
"name" : "PonyExpress",
"path" : "Sources/PonyExpress",
"product_dependencies" : [
"Locks"
],
"product_memberships" : [
"PonyExpress"
],
"sources" : [
"Array+Extension.swift",
"Mail.swift",
"PostOffice.swift",
"Recipient.swift"
],
"type" : "library"
}
],
"tools_version" : "5.7"
}
Done.