Build Information
Successful build of PonyExpress, reference main (9d5a3a), with Swift 6.1 for macOS (SPM) on 5 Sep 2025 11:22:20 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.67.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/adamwulf/PonyExpress.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/adamwulf/PonyExpress
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 9d5a3a1 Updating locks to 1.0.1
Cloned https://github.com/adamwulf/PonyExpress.git
Revision (git rev-parse @):
9d5a3a11a6e68e5ba0880be24b9e968dc55a3d9f
SUCCESS checkout https://github.com/adamwulf/PonyExpress.git at main
Fetching https://github.com/adamwulf/Locks.git
[7/312] Fetching locks
Fetched https://github.com/adamwulf/Locks.git from cache (0.84s)
Computing version for https://github.com/adamwulf/Locks.git
Computed https://github.com/adamwulf/Locks.git at 1.0.1 (1.48s)
Creating working copy for https://github.com/adamwulf/Locks.git
Working copy of https://github.com/adamwulf/Locks.git resolved at 1.0.1
========================================
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.1",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Locks",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/adamwulf/PonyExpress.git
[1/2207] Fetching ponyexpress
Fetched https://github.com/adamwulf/PonyExpress.git from cache (0.87s)
Fetching https://github.com/adamwulf/Locks.git from cache
Fetched https://github.com/adamwulf/Locks.git from cache (0.45s)
Computing version for https://github.com/adamwulf/Locks.git
Computed https://github.com/adamwulf/Locks.git at 1.0.1 (0.50s)
Creating working copy for https://github.com/adamwulf/Locks.git
Working copy of https://github.com/adamwulf/Locks.git resolved at 1.0.1
Creating working copy for https://github.com/adamwulf/PonyExpress.git
Working copy of https://github.com/adamwulf/PonyExpress.git resolved at main (9d5a3a1)
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.1",
"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 RecursiveMutex.swift
[5/13] Compiling Locks Mutex.swift
[6/13] Compiling Locks AtomicWrapper.swift
[7/13] Compiling Locks AtomicDictionary.swift
[8/13] Emitting module Locks
[9/13] Compiling Locks AtomicWrapper+Extensions.swift
[10/13] Compiling Locks AtomicSet.swift
[11/13] Compiling Locks ThreadLocal.swift
[12/14] Compiling Locks ReadWriteLock.swift
[13/14] Compiling Locks NSLocking+Extensions.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 Array+Extension.swift
[17/19] Compiling PonyExpress Mail.swift
[18/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 {
[19/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
Build complete! (7.66s)
Build complete.
{
"dependencies" : [
{
"identity" : "locks",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.1",
"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.