The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of MultipeerKit, reference main (24f06a), with Swift 6.0 for macOS (SPM) on 28 Nov 2024 18:21:02 UTC.

Swift 6 data race errors: 5

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.1.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.58.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/insidegui/MultipeerKit.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/insidegui/MultipeerKit
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 24f06a9 Create FUNDING.yml
Cloned https://github.com/insidegui/MultipeerKit.git
Revision (git rev-parse @):
24f06a99099d18182aaa0807317cf6e11acbab0e
SUCCESS checkout https://github.com/insidegui/MultipeerKit.git at main
========================================
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": "multipeerkit",
      "name": "MultipeerKit",
      "url": "https://github.com/insidegui/MultipeerKit.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/MultipeerKit",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/insidegui/MultipeerKit.git
[1/914] Fetching multipeerkit
Fetched https://github.com/insidegui/MultipeerKit.git from cache (1.16s)
Creating working copy for https://github.com/insidegui/MultipeerKit.git
Working copy of https://github.com/insidegui/MultipeerKit.git resolved at main (24f06a9)
warning: '.resolve-product-dependencies': dependency 'multipeerkit' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/insidegui/MultipeerKit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.1.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/4] Write sources
[1/4] Write swift-version--7754E27361AE5C74.txt
[3/14] Compiling MultipeerKit MultipeerProtocol.swift
[4/14] Compiling MultipeerKit MultipeerConfiguration.swift
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerConfiguration.swift:58:27: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration.Security' may have shared mutable state; this is an error in the Swift 6 language mode
 19 |
 20 |     /// Configures security-related aspects of the multipeer connection.
 21 |     public struct Security {
    |                   `- note: consider making struct 'Security' conform to the 'Sendable' protocol
 22 |
 23 |         public typealias InvitationHandler = (Peer, Data?, @escaping (Bool) -> Void) -> Void
    :
 56 |
 57 |         /// The default security configuration, which has no identity, uses no encryption and accepts all invitations.
 58 |         public static let `default` = Security(identity: nil, encryptionPreference: .none, invitationHandler: { _, _, closure in
    |                           |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration.Security' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: annotate 'default' with '@MainActor' if property should only be accessed from the main actor
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 59 |             closure(true)
 60 |         })
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerConfiguration.swift:114:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
  3 |
  4 | /// Configures several aspects of the multipeer communication.
  5 | public struct MultipeerConfiguration {
    |               `- note: consider making struct 'MultipeerConfiguration' conform to the 'Sendable' protocol
  6 |
  7 |     /// Defines how the multipeer connection handles newly discovered peers.
    :
112 |     /// The default configuration, uses the service type `MKSVC`, the name of the device/computer as the
113 |     /// display name, `UserDefaults.standard`, the default security configuration and automatic invitation.
114 |     public static let `default` = MultipeerConfiguration(
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' with '@MainActor' if property should only be accessed from the main actor
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
115 |         serviceType: "MKSVC",
116 |         peerName: MCPeerID.defaultDisplayName,
[5/14] Compiling MultipeerKit MultipeerDataSource.swift
[6/15] Compiling MultipeerKit MultipeerMessage.swift
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/Models/MultipeerMessage.swift:48:24: warning: static property 'decoders' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 46 |     private typealias MessageEncoder = (Any, inout KeyedEncodingContainer<CodingKeys>) throws -> Void
 47 |
 48 |     private static var decoders: [String: MessageDecoder] = [:]
    |                        |- warning: static property 'decoders' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'decoders' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: annotate 'decoders' with '@MainActor' if property should only be accessed from the main actor
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 49 |     private static var encoders: [String: MessageEncoder] = [:]
 50 |
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/Models/MultipeerMessage.swift:49:24: warning: static property 'encoders' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 47 |
 48 |     private static var decoders: [String: MessageDecoder] = [:]
 49 |     private static var encoders: [String: MessageEncoder] = [:]
    |                        |- warning: static property 'encoders' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'encoders' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: annotate 'encoders' with '@MainActor' if property should only be accessed from the main actor
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |
 51 |     static func register<T: Codable>(_ type: T.Type, for typeName: String, closure: @escaping (T, Peer) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/Models/MultipeerMessage.swift:55:40: warning: sending 'closure' risks causing data races; this is an error in the Swift 6 language mode
 53 |             let payload = try container.decode(T.self, forKey: .payload)
 54 |
 55 |             DispatchQueue.main.async { closure(payload, peer) }
    |                                        |- warning: sending 'closure' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'closure' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 56 |
 57 |             return payload
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/Models/MultipeerMessage.swift:55:48: warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
 53 |             let payload = try container.decode(T.self, forKey: .payload)
 54 |
 55 |             DispatchQueue.main.async { closure(payload, peer) }
    |                                                |- warning: sending 'payload' risks causing data races; this is an error in the Swift 6 language mode
    |                                                `- note: task-isolated 'payload' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 56 |
 57 |             return payload
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/Models/MultipeerMessage.swift:55:57: warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
 53 |             let payload = try container.decode(T.self, forKey: .payload)
 54 |
 55 |             DispatchQueue.main.async { closure(payload, peer) }
    |                                                         |- warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
    |                                                         `- note: task-isolated 'peer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 56 |
 57 |             return payload
[7/15] Compiling MultipeerKit MultipeerConnection.swift
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerConfiguration.swift:114:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
  3 |
  4 | /// Configures several aspects of the multipeer communication.
  5 | public struct MultipeerConfiguration {
    |               `- note: consider making struct 'MultipeerConfiguration' conform to the 'Sendable' protocol
  6 |
  7 |     /// Defines how the multipeer connection handles newly discovered peers.
    :
112 |     /// The default configuration, uses the service type `MKSVC`, the name of the device/computer as the
113 |     /// display name, `UserDefaults.standard`, the default security configuration and automatic invitation.
114 |     public static let `default` = MultipeerConfiguration(
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' with '@MainActor' if property should only be accessed from the main actor
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
115 |         serviceType: "MKSVC",
116 |         peerName: MCPeerID.defaultDisplayName,
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:134:30: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
132 |
133 |         DispatchQueue.main.async {
134 |             guard let peer = self.discoveredPeers[peerID] else { return }
    |                              |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
135 |
136 |             let handler = self.invitationCompletionHandlers[peerID]
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:134:51: warning: sending 'peerID' risks causing data races; this is an error in the Swift 6 language mode
132 |
133 |         DispatchQueue.main.async {
134 |             guard let peer = self.discoveredPeers[peerID] else { return }
    |                                                   |- warning: sending 'peerID' risks causing data races; this is an error in the Swift 6 language mode
    |                                                   `- note: task-isolated 'peerID' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
135 |
136 |             let handler = self.invitationCompletionHandlers[peerID]
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:241:30: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
239 |
240 |         DispatchQueue.main.async {
241 |             guard let peer = self.discoveredPeers[peerID] else { return }
    |                              |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
242 |
243 |             self.configuration.security.invitationHandler(peer, context, { [weak self] decision in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:241:51: warning: sending 'peerID' risks causing data races; this is an error in the Swift 6 language mode
239 |
240 |         DispatchQueue.main.async {
241 |             guard let peer = self.discoveredPeers[peerID] else { return }
    |                                                   |- warning: sending 'peerID' risks causing data races; this is an error in the Swift 6 language mode
    |                                                   `- note: task-isolated 'peerID' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
242 |
243 |             self.configuration.security.invitationHandler(peer, context, { [weak self] decision in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:246:17: warning: sending 'invitationHandler' risks causing data races; this is an error in the Swift 6 language mode
244 |                 guard let self = self else { return }
245 |
246 |                 invitationHandler(decision, decision ? self.session : nil)
    |                 |- warning: sending 'invitationHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'invitationHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
247 |             })
248 |         }
[8/15] Compiling MultipeerKit MultipeerKit.swift
[9/15] Emitting module MultipeerKit
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/Models/MultipeerMessage.swift:48:24: warning: static property 'decoders' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 46 |     private typealias MessageEncoder = (Any, inout KeyedEncodingContainer<CodingKeys>) throws -> Void
 47 |
 48 |     private static var decoders: [String: MessageDecoder] = [:]
    |                        |- warning: static property 'decoders' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'decoders' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: annotate 'decoders' with '@MainActor' if property should only be accessed from the main actor
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 49 |     private static var encoders: [String: MessageEncoder] = [:]
 50 |
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/Models/MultipeerMessage.swift:49:24: warning: static property 'encoders' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 47 |
 48 |     private static var decoders: [String: MessageDecoder] = [:]
 49 |     private static var encoders: [String: MessageEncoder] = [:]
    |                        |- warning: static property 'encoders' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: convert 'encoders' to a 'let' constant to make 'Sendable' shared state immutable
    |                        |- note: annotate 'encoders' with '@MainActor' if property should only be accessed from the main actor
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |
 51 |     static func register<T: Codable>(_ type: T.Type, for typeName: String, closure: @escaping (T, Peer) -> Void) {
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerConfiguration.swift:114:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
  3 |
  4 | /// Configures several aspects of the multipeer communication.
  5 | public struct MultipeerConfiguration {
    |               `- note: consider making struct 'MultipeerConfiguration' conform to the 'Sendable' protocol
  6 |
  7 |     /// Defines how the multipeer connection handles newly discovered peers.
    :
112 |     /// The default configuration, uses the service type `MKSVC`, the name of the device/computer as the
113 |     /// display name, `UserDefaults.standard`, the default security configuration and automatic invitation.
114 |     public static let `default` = MultipeerConfiguration(
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' with '@MainActor' if property should only be accessed from the main actor
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
115 |         serviceType: "MKSVC",
116 |         peerName: MCPeerID.defaultDisplayName,
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerConfiguration.swift:58:27: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration.Security' may have shared mutable state; this is an error in the Swift 6 language mode
 19 |
 20 |     /// Configures security-related aspects of the multipeer connection.
 21 |     public struct Security {
    |                   `- note: consider making struct 'Security' conform to the 'Sendable' protocol
 22 |
 23 |         public typealias InvitationHandler = (Peer, Data?, @escaping (Bool) -> Void) -> Void
    :
 56 |
 57 |         /// The default security configuration, which has no identity, uses no encryption and accepts all invitations.
 58 |         public static let `default` = Security(identity: nil, encryptionPreference: .none, invitationHandler: { _, _, closure in
    |                           |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration.Security' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: annotate 'default' with '@MainActor' if property should only be accessed from the main actor
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 59 |             closure(true)
 60 |         })
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:43:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 41 |
 42 |             DispatchQueue.main.async {
 43 |                 self.availablePeersDidChange(self.availablePeers)
    |                 |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 44 |             }
 45 |         }
[10/15] Compiling MultipeerKit MockMultipeerConnection.swift
[11/15] Compiling MultipeerKit MCPeerID+Me.swift
[12/15] Compiling MultipeerKit Peer.swift
[13/15] Compiling MultipeerKit MultipeerTransceiver.swift
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerConfiguration.swift:114:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
  3 |
  4 | /// Configures several aspects of the multipeer communication.
  5 | public struct MultipeerConfiguration {
    |               `- note: consider making struct 'MultipeerConfiguration' conform to the 'Sendable' protocol
  6 |
  7 |     /// Defines how the multipeer connection handles newly discovered peers.
    :
112 |     /// The default configuration, uses the service type `MKSVC`, the name of the device/computer as the
113 |     /// display name, `UserDefaults.standard`, the default security configuration and automatic invitation.
114 |     public static let `default` = MultipeerConfiguration(
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'MultipeerConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' with '@MainActor' if property should only be accessed from the main actor
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
115 |         serviceType: "MKSVC",
116 |         peerName: MCPeerID.defaultDisplayName,
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:43:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 41 |
 42 |             DispatchQueue.main.async {
 43 |                 self.availablePeersDidChange(self.availablePeers)
    |                 |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 44 |             }
 45 |         }
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:70:40: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 68 |         }
 69 |         connection.didFindPeer = { [weak self] peer in
 70 |             DispatchQueue.main.async { self?.handlePeerAdded(peer) }
    |                                        |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 71 |         }
 72 |         connection.didLosePeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:70:62: warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
 68 |         }
 69 |         connection.didFindPeer = { [weak self] peer in
 70 |             DispatchQueue.main.async { self?.handlePeerAdded(peer) }
    |                                                              |- warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
    |                                                              `- note: task-isolated 'peer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 71 |         }
 72 |         connection.didLosePeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:73:40: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 71 |         }
 72 |         connection.didLosePeer = { [weak self] peer in
 73 |             DispatchQueue.main.async { self?.handlePeerRemoved(peer) }
    |                                        |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 74 |         }
 75 |         connection.didConnectToPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:73:64: warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
 71 |         }
 72 |         connection.didLosePeer = { [weak self] peer in
 73 |             DispatchQueue.main.async { self?.handlePeerRemoved(peer) }
    |                                                                |- warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
    |                                                                `- note: task-isolated 'peer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 74 |         }
 75 |         connection.didConnectToPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:76:40: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 74 |         }
 75 |         connection.didConnectToPeer = { [weak self] peer in
 76 |             DispatchQueue.main.async { self?.handlePeerConnected(peer) }
    |                                        |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |         }
 78 |         connection.didDisconnectFromPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:76:66: warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
 74 |         }
 75 |         connection.didConnectToPeer = { [weak self] peer in
 76 |             DispatchQueue.main.async { self?.handlePeerConnected(peer) }
    |                                                                  |- warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
    |                                                                  `- note: task-isolated 'peer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |         }
 78 |         connection.didDisconnectFromPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:79:40: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 77 |         }
 78 |         connection.didDisconnectFromPeer = { [weak self] peer in
 79 |             DispatchQueue.main.async { self?.handlePeerDisconnected(peer) }
    |                                        |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 80 |         }
 81 |     }
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:79:69: warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
 77 |         }
 78 |         connection.didDisconnectFromPeer = { [weak self] peer in
 79 |             DispatchQueue.main.async { self?.handlePeerDisconnected(peer) }
    |                                                                     |- warning: sending 'peer' risks causing data races; this is an error in the Swift 6 language mode
    |                                                                     `- note: task-isolated 'peer' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 80 |         }
 81 |     }
[13/15] Write Objects.LinkFileList
[14/15] Linking libMultipeerKitDynamic.dylib
Build complete! (19.73s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "MultipeerKit",
  "name" : "MultipeerKit",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.14"
    },
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "tvos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "MultipeerKit",
      "targets" : [
        "MultipeerKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MultipeerKitDynamic",
      "targets" : [
        "MultipeerKit"
      ],
      "type" : {
        "library" : [
          "dynamic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "MultipeerKitTests",
      "module_type" : "SwiftTarget",
      "name" : "MultipeerKitTests",
      "path" : "Tests/MultipeerKitTests",
      "sources" : [
        "MultipeerKitTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "MultipeerKit"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MultipeerKit",
      "module_type" : "SwiftTarget",
      "name" : "MultipeerKit",
      "path" : "Sources/MultipeerKit",
      "product_memberships" : [
        "MultipeerKit",
        "MultipeerKitDynamic"
      ],
      "sources" : [
        "Internal API/Extensions/MCPeerID+Me.swift",
        "Internal API/MockMultipeerConnection.swift",
        "Internal API/Models/MultipeerMessage.swift",
        "Internal API/MultipeerConnection.swift",
        "Internal API/MultipeerKit.swift",
        "Internal API/MultipeerProtocol.swift",
        "Public API/Models/Peer.swift",
        "Public API/MultipeerConfiguration.swift",
        "Public API/MultipeerDataSource.swift",
        "Public API/MultipeerTransceiver.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.5"
}
Done.