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 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 InferSendableFromCaptures

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