The Swift Package Index logo.Swift Package Index

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 InferSendableFromCaptures

Build 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.