The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

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.