This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.

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 with Swift 6.0 for macOS (SPM).

Swift 6 data race errors: 6

Build Command

env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete

Build Log

========================================
RunAll
========================================
Builder version: 4.40.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
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $workDir
https://github.com/insidegui/MultipeerKit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/4] Write sources
[1/4] Write swift-version-6F35C1178C84523A.txt
[3/14] Compiling MultipeerKit MultipeerProtocol.swift
[4/15] Compiling MultipeerKit MultipeerDataSource.swift
[5/15] 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,
[6/15] Compiling MultipeerKit MultipeerKit.swift
[7/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 non-isolated 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 non-isolated 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 non-isolated 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 non-isolated 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: capture of 'closure' with non-sendable type '(T, Peer) -> Void' in a `@Sendable` closure; 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: capture of 'closure' with non-sendable type '(T, Peer) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 56 |
 57 |             return payload
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/Models/MultipeerMessage.swift:55:48: warning: capture of 'payload' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 49 |     private static var encoders: [String: MessageEncoder] = [:]
 50 |
 51 |     static func register<T: Codable>(_ type: T.Type, for typeName: String, closure: @escaping (T, Peer) -> Void) {
    |                          `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 52 |         decoders[typeName] = { container, peer in
 53 |             let payload = try container.decode(T.self, forKey: .payload)
 54 |
 55 |             DispatchQueue.main.async { closure(payload, peer) }
    |                                                `- warning: capture of 'payload' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 56 |
 57 |             return payload
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/Models/MultipeerMessage.swift:55:57: warning: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; 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: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 56 |
 57 |             return payload
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/Models/Peer.swift:6:15: note: consider making struct 'Peer' conform to the 'Sendable' protocol
 4 |
 5 | /// Represents a remote peer.
 6 | public struct Peer: Hashable, Identifiable {
   |               `- note: consider making struct 'Peer' conform to the 'Sendable' protocol
 7 |
 8 |     let underlyingPeer: MCPeerID
/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
[8/15] Compiling MultipeerKit Peer.swift
[9/15] Compiling MultipeerKit MockMultipeerConnection.swift
[10/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: capture of 'self' with non-sendable type 'MultipeerConnection' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 11 | }
 12 |
 13 | final class MultipeerConnection: NSObject, MultipeerProtocol {
    |             `- note: class 'MultipeerConnection' does not conform to the 'Sendable' protocol
 14 |
 15 |     enum Mode: Int, CaseIterable {
    :
132 |
133 |         DispatchQueue.main.async {
134 |             guard let peer = self.discoveredPeers[peerID] else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'MultipeerConnection' in a `@Sendable` closure; this is an error in the Swift 6 language mode
135 |
136 |             let handler = self.invitationCompletionHandlers[peerID]
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:134:51: warning: capture of 'peerID' with non-sendable type 'MCPeerID' in a `@Sendable` closure; 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: capture of 'peerID' with non-sendable type 'MCPeerID' in a `@Sendable` closure; this is an error in the Swift 6 language mode
135 |
136 |             let handler = self.invitationCompletionHandlers[peerID]
MultipeerConnectivity.MCPeerID:2:12: note: class 'MCPeerID' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.10, *)
 2 | open class MCPeerID : NSObject, NSCopying, NSSecureCoding {
   |            `- note: class 'MCPeerID' does not conform to the 'Sendable' protocol
 3 |     public init(displayName myDisplayName: String)
 4 |     open var displayName: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'MultipeerConnectivity'
  1 | import Foundation
  2 | import MultipeerConnectivity
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'MultipeerConnectivity'
  3 | import os.log
  4 |
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:241:30: warning: capture of 'self' with non-sendable type 'MultipeerConnection' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 11 | }
 12 |
 13 | final class MultipeerConnection: NSObject, MultipeerProtocol {
    |             `- note: class 'MultipeerConnection' does not conform to the 'Sendable' protocol
 14 |
 15 |     enum Mode: Int, CaseIterable {
    :
239 |
240 |         DispatchQueue.main.async {
241 |             guard let peer = self.discoveredPeers[peerID] else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'MultipeerConnection' in a `@Sendable` closure; this is an error in the Swift 6 language mode
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: capture of 'peerID' with non-sendable type 'MCPeerID' in a `@Sendable` closure; 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: capture of 'peerID' with non-sendable type 'MCPeerID' in a `@Sendable` closure; this is an error in the Swift 6 language mode
242 |
243 |             self.configuration.security.invitationHandler(peer, context, { [weak self] decision in
MultipeerConnectivity.MCPeerID:2:12: note: class 'MCPeerID' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.10, *)
 2 | open class MCPeerID : NSObject, NSCopying, NSSecureCoding {
   |            `- note: class 'MCPeerID' does not conform to the 'Sendable' protocol
 3 |     public init(displayName myDisplayName: String)
 4 |     open var displayName: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:246:17: warning: capture of 'invitationHandler' with non-sendable type '(Bool, MCSession?) -> Void' in a `@Sendable` closure; 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: capture of 'invitationHandler' with non-sendable type '(Bool, MCSession?) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
247 |             })
248 |         }
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Internal API/MultipeerConnection.swift:246:17: warning: capture of 'invitationHandler' with non-sendable type '(Bool, MCSession?) -> Void' in an isolated closure; 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: capture of 'invitationHandler' with non-sendable type '(Bool, MCSession?) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
247 |             })
248 |         }
/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 |         }
[11/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 non-isolated 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 non-isolated 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 non-isolated 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 non-isolated 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: capture of 'self' with non-sendable type 'MultipeerTransceiver' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  4 |
  5 | /// Handles all aspects related to the multipeer communication.
  6 | public final class MultipeerTransceiver {
    |                    `- note: class 'MultipeerTransceiver' does not conform to the 'Sendable' protocol
  7 |
  8 |     private let log = MultipeerKit.log(for: MultipeerTransceiver.self)
    :
 41 |
 42 |             DispatchQueue.main.async {
 43 |                 self.availablePeersDidChange(self.availablePeers)
    |                 `- warning: capture of 'self' with non-sendable type 'MultipeerTransceiver' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 44 |             }
 45 |         }
/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 |         }
[12/15] Compiling MultipeerKit MCPeerID+Me.swift
[13/15] Compiling MultipeerKit MultipeerTransceiver.swift
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:43:17: warning: capture of 'self' with non-sendable type 'MultipeerTransceiver' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  4 |
  5 | /// Handles all aspects related to the multipeer communication.
  6 | public final class MultipeerTransceiver {
    |                    `- note: class 'MultipeerTransceiver' does not conform to the 'Sendable' protocol
  7 |
  8 |     private let log = MultipeerKit.log(for: MultipeerTransceiver.self)
    :
 41 |
 42 |             DispatchQueue.main.async {
 43 |                 self.availablePeersDidChange(self.availablePeers)
    |                 `- warning: capture of 'self' with non-sendable type 'MultipeerTransceiver' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 44 |             }
 45 |         }
/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:70:40: warning: capture of 'self' with non-sendable type 'MultipeerTransceiver?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  4 |
  5 | /// Handles all aspects related to the multipeer communication.
  6 | public final class MultipeerTransceiver {
    |                    `- note: class 'MultipeerTransceiver' does not conform to the 'Sendable' protocol
  7 |
  8 |     private let log = MultipeerKit.log(for: MultipeerTransceiver.self)
    :
 68 |         }
 69 |         connection.didFindPeer = { [weak self] peer in
 70 |             DispatchQueue.main.async { self?.handlePeerAdded(peer) }
    |                                        `- warning: capture of 'self' with non-sendable type 'MultipeerTransceiver?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 71 |         }
 72 |         connection.didLosePeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:70:62: warning: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; 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: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 71 |         }
 72 |         connection.didLosePeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/Models/Peer.swift:6:15: note: consider making struct 'Peer' conform to the 'Sendable' protocol
 4 |
 5 | /// Represents a remote peer.
 6 | public struct Peer: Hashable, Identifiable {
   |               `- note: consider making struct 'Peer' conform to the 'Sendable' protocol
 7 |
 8 |     let underlyingPeer: MCPeerID
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:70:40: warning: reference to captured var 'self' in concurrently-executing code; 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: reference to captured var 'self' in concurrently-executing code; this is an error in the Swift 6 language mode
 71 |         }
 72 |         connection.didLosePeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:73:40: warning: capture of 'self' with non-sendable type 'MultipeerTransceiver?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  4 |
  5 | /// Handles all aspects related to the multipeer communication.
  6 | public final class MultipeerTransceiver {
    |                    `- note: class 'MultipeerTransceiver' does not conform to the 'Sendable' protocol
  7 |
  8 |     private let log = MultipeerKit.log(for: MultipeerTransceiver.self)
    :
 71 |         }
 72 |         connection.didLosePeer = { [weak self] peer in
 73 |             DispatchQueue.main.async { self?.handlePeerRemoved(peer) }
    |                                        `- warning: capture of 'self' with non-sendable type 'MultipeerTransceiver?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 74 |         }
 75 |         connection.didConnectToPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:73:64: warning: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; 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: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 74 |         }
 75 |         connection.didConnectToPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/Models/Peer.swift:6:15: note: consider making struct 'Peer' conform to the 'Sendable' protocol
 4 |
 5 | /// Represents a remote peer.
 6 | public struct Peer: Hashable, Identifiable {
   |               `- note: consider making struct 'Peer' conform to the 'Sendable' protocol
 7 |
 8 |     let underlyingPeer: MCPeerID
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:73:40: warning: reference to captured var 'self' in concurrently-executing code; 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: reference to captured var 'self' in concurrently-executing code; this is an error in the Swift 6 language mode
 74 |         }
 75 |         connection.didConnectToPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:76:40: warning: capture of 'self' with non-sendable type 'MultipeerTransceiver?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  4 |
  5 | /// Handles all aspects related to the multipeer communication.
  6 | public final class MultipeerTransceiver {
    |                    `- note: class 'MultipeerTransceiver' does not conform to the 'Sendable' protocol
  7 |
  8 |     private let log = MultipeerKit.log(for: MultipeerTransceiver.self)
    :
 74 |         }
 75 |         connection.didConnectToPeer = { [weak self] peer in
 76 |             DispatchQueue.main.async { self?.handlePeerConnected(peer) }
    |                                        `- warning: capture of 'self' with non-sendable type 'MultipeerTransceiver?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 77 |         }
 78 |         connection.didDisconnectFromPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:76:66: warning: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; 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: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 77 |         }
 78 |         connection.didDisconnectFromPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/Models/Peer.swift:6:15: note: consider making struct 'Peer' conform to the 'Sendable' protocol
 4 |
 5 | /// Represents a remote peer.
 6 | public struct Peer: Hashable, Identifiable {
   |               `- note: consider making struct 'Peer' conform to the 'Sendable' protocol
 7 |
 8 |     let underlyingPeer: MCPeerID
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:76:40: warning: reference to captured var 'self' in concurrently-executing code; 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: reference to captured var 'self' in concurrently-executing code; this is an error in the Swift 6 language mode
 77 |         }
 78 |         connection.didDisconnectFromPeer = { [weak self] peer in
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:79:40: warning: capture of 'self' with non-sendable type 'MultipeerTransceiver?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  4 |
  5 | /// Handles all aspects related to the multipeer communication.
  6 | public final class MultipeerTransceiver {
    |                    `- note: class 'MultipeerTransceiver' does not conform to the 'Sendable' protocol
  7 |
  8 |     private let log = MultipeerKit.log(for: MultipeerTransceiver.self)
    :
 77 |         }
 78 |         connection.didDisconnectFromPeer = { [weak self] peer in
 79 |             DispatchQueue.main.async { self?.handlePeerDisconnected(peer) }
    |                                        `- warning: capture of 'self' with non-sendable type 'MultipeerTransceiver?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 80 |         }
 81 |     }
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:79:69: warning: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; 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: capture of 'peer' with non-sendable type 'Peer' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 80 |         }
 81 |     }
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/Models/Peer.swift:6:15: note: consider making struct 'Peer' conform to the 'Sendable' protocol
 4 |
 5 | /// Represents a remote peer.
 6 | public struct Peer: Hashable, Identifiable {
   |               `- note: consider making struct 'Peer' conform to the 'Sendable' protocol
 7 |
 8 |     let underlyingPeer: MCPeerID
/Users/admin/builder/spi-builder-workspace/Sources/MultipeerKit/Public API/MultipeerTransceiver.swift:79:40: warning: reference to captured var 'self' in concurrently-executing code; 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: reference to captured var 'self' in concurrently-executing code; this is an error in the Swift 6 language mode
 80 |         }
 81 |     }
/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! (29.93s)
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.
This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.