Build Information
Successful build of WebMIDIKit, reference master (6f3506
), with Swift 6.1 for macOS (SPM) on 24 Apr 2025 09:16:34 UTC.
Swift 6 data race errors: 0
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/adamnemecek/webmidikit.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/adamnemecek/webmidikit
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
HEAD is now at 6f35069 Improve Xcode 12+ compatibility (#35)
Cloned https://github.com/adamnemecek/webmidikit.git
Revision (git rev-parse @):
6f3506937c141f04edaaa182502984d7baaa2e26
SUCCESS checkout https://github.com/adamnemecek/webmidikit.git at master
========================================
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": "webmidikit",
"name": "WebMIDIKit",
"url": "https://github.com/adamnemecek/webmidikit.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/webmidikit",
"dependencies": [
]
}
]
}
Fetching https://github.com/adamnemecek/webmidikit.git
[1/1788] Fetching webmidikit
Fetched https://github.com/adamnemecek/webmidikit.git from cache (0.81s)
Creating working copy for https://github.com/adamnemecek/webmidikit.git
Working copy of https://github.com/adamnemecek/webmidikit.git resolved at master (6f35069)
warning: '.resolve-product-dependencies': dependency 'webmidikit' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/adamnemecek/webmidikit.git
https://github.com/adamnemecek/webmidikit.git
{
"dependencies" : [
],
"manifest_display_name" : "WebMIDIKit",
"name" : "WebMIDIKit",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
}
],
"products" : [
{
"name" : "WebMIDIKit",
"targets" : [
"WebMIDIKit"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "WebMIDIKitTests",
"module_type" : "SwiftTarget",
"name" : "WebMIDIKitTests",
"path" : "Tests/WebMIDIKitTests",
"sources" : [
"MIDIPacketListBuilderTests.swift",
"WebMIDIKitTests.swift"
],
"target_dependencies" : [
"WebMIDIKit"
],
"type" : "test"
},
{
"c99name" : "WebMIDIKit",
"module_type" : "SwiftTarget",
"name" : "WebMIDIKit",
"path" : "Sources/WebMIDIKit",
"product_memberships" : [
"WebMIDIKit"
],
"sources" : [
"CoreMIDI.swift",
"Enums.swift",
"Extensions.swift",
"MIDIClient.swift",
"MIDIEndpoint.swift",
"MIDIEvent.swift",
"MIDIInput.swift",
"MIDIOutput.swift",
"MIDIPacketList.swift",
"MIDIPacketListBuilder.swift",
"MIDIPort.swift",
"MIDIPortMap.swift",
"MIDIStatus.swift",
"VirtualMIDIInput.swift",
"VirtualMIDIOutput.swift",
"WebMIDIKit.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
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/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/18] Compiling WebMIDIKit VirtualMIDIOutput.swift
[4/19] Compiling WebMIDIKit WebMIDIKit.swift
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/WebMIDIKit.swift:126:17: warning: capture of 'callback' with non-sendable type '(MIDIEndpoint, MIDIEndpointNotificationType) -> Void' in a '@Sendable' closure
124 | return addObserver(forName: .MIDISetupNotification, object: nil, queue: nil) {
125 | _ = ($0.object as? MIDIObjectAddRemoveNotification).map {
126 | callback(.init(notification: $0),
| |- warning: capture of 'callback' with non-sendable type '(MIDIEndpoint, MIDIEndpointNotificationType) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
127 | MIDIEndpointNotificationType($0.messageID))
128 | }
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/WebMIDIKit.swift:126:17: warning: capture of 'callback' with non-sendable type '(MIDIEndpoint, MIDIEndpointNotificationType) -> Void' in an isolated closure; this is an error in the Swift 6 language mode
124 | return addObserver(forName: .MIDISetupNotification, object: nil, queue: nil) {
125 | _ = ($0.object as? MIDIObjectAddRemoveNotification).map {
126 | callback(.init(notification: $0),
| |- warning: capture of 'callback' with non-sendable type '(MIDIEndpoint, MIDIEndpointNotificationType) -> 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'
127 | MIDIEndpointNotificationType($0.messageID))
128 | }
[5/19] Compiling WebMIDIKit MIDIPort.swift
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPort.swift:186:27: warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit?
184 | type = "MIDIOutput"
185 | }
186 | return "\(type) \(name) by \(manufacturer), connection: \(connection) (id: \(id))"
| |- warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit?
| |- note: use 'String(describing:)' to silence this warning
| `- note: provide a default value to avoid this warning
187 | }
188 | }
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPort.swift:186:38: warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit?
184 | type = "MIDIOutput"
185 | }
186 | return "\(type) \(name) by \(manufacturer), connection: \(connection) (id: \(id))"
| |- warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit?
| |- note: use 'String(describing:)' to silence this warning
| `- note: provide a default value to avoid this warning
187 | }
188 | }
[6/19] Compiling WebMIDIKit MIDIPortMap.swift
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPort.swift:186:27: warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit?
184 | type = "MIDIOutput"
185 | }
186 | return "\(type) \(name) by \(manufacturer), connection: \(connection) (id: \(id))"
| |- warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit?
| |- note: use 'String(describing:)' to silence this warning
| `- note: provide a default value to avoid this warning
187 | }
188 | }
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPort.swift:186:38: warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit?
184 | type = "MIDIOutput"
185 | }
186 | return "\(type) \(name) by \(manufacturer), connection: \(connection) (id: \(id))"
| |- warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit?
| |- note: use 'String(describing:)' to silence this warning
| `- note: provide a default value to avoid this warning
187 | }
188 | }
[7/19] Compiling WebMIDIKit VirtualMIDIInput.swift
[8/19] Compiling WebMIDIKit MIDIStatus.swift
[9/19] Compiling WebMIDIKit MIDIInput.swift
[10/19] Compiling WebMIDIKit MIDIOutput.swift
[11/19] Compiling WebMIDIKit Extensions.swift
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/Extensions.swift:10:1: warning: extension declares a conformance of imported type 'MIDIObjectType' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
8 | }
9 |
10 | extension MIDIObjectType: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'MIDIObjectType' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
11 | public var description: String {
12 | switch self {
[12/19] Compiling WebMIDIKit MIDIClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/Extensions.swift:10:1: warning: extension declares a conformance of imported type 'MIDIObjectType' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
8 | }
9 |
10 | extension MIDIObjectType: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'MIDIObjectType' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
11 | public var description: String {
12 | switch self {
[13/19] Compiling WebMIDIKit MIDIEndpoint.swift
[14/19] Compiling WebMIDIKit MIDIEvent.swift
[15/19] Compiling WebMIDIKit MIDIPacketList.swift
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketList.swift:133:1: warning: extension declares a conformance of imported type 'MIDIPacketList' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
131 | // }
132 |
133 | extension MIDIPacketList: Sequence {
| |- warning: extension declares a conformance of imported type 'MIDIPacketList' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
134 | public typealias Element = UnsafeMutablePointer<MIDIPacket>
135 |
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketList.swift:220:1: warning: extension declares a conformance of imported type 'UnsafePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
218 | // }
219 |
220 | extension UnsafePointer: Sequence where Pointee == MIDIPacketList {
| |- warning: extension declares a conformance of imported type 'UnsafePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
221 | public typealias Element = UnsafeMutablePointer<MIDIPacket>
222 |
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketListBuilder.swift:194:1: warning: extension declares a conformance of imported type 'UnsafeMutablePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
192 |
193 |
194 | extension UnsafeMutablePointer: Sequence where Pointee == MIDIPacketList {
| |- warning: extension declares a conformance of imported type 'UnsafeMutablePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
195 | public typealias Element = UnsafePointer<MIDIPacket>
196 |
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketListBuilder.swift:216:1: warning: extension declares a conformance of imported type 'UnsafeRawBufferPointer' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
214 | }
215 |
216 | extension UnsafeRawBufferPointer : Equatable {
| |- warning: extension declares a conformance of imported type 'UnsafeRawBufferPointer' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
217 | @inline(__always)
218 | public static func ==(lhs: Self, rhs: Self) -> Bool {
[16/19] Compiling WebMIDIKit MIDIPacketListBuilder.swift
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketList.swift:133:1: warning: extension declares a conformance of imported type 'MIDIPacketList' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
131 | // }
132 |
133 | extension MIDIPacketList: Sequence {
| |- warning: extension declares a conformance of imported type 'MIDIPacketList' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
134 | public typealias Element = UnsafeMutablePointer<MIDIPacket>
135 |
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketList.swift:220:1: warning: extension declares a conformance of imported type 'UnsafePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
218 | // }
219 |
220 | extension UnsafePointer: Sequence where Pointee == MIDIPacketList {
| |- warning: extension declares a conformance of imported type 'UnsafePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
221 | public typealias Element = UnsafeMutablePointer<MIDIPacket>
222 |
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketListBuilder.swift:194:1: warning: extension declares a conformance of imported type 'UnsafeMutablePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
192 |
193 |
194 | extension UnsafeMutablePointer: Sequence where Pointee == MIDIPacketList {
| |- warning: extension declares a conformance of imported type 'UnsafeMutablePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
195 | public typealias Element = UnsafePointer<MIDIPacket>
196 |
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketListBuilder.swift:216:1: warning: extension declares a conformance of imported type 'UnsafeRawBufferPointer' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
214 | }
215 |
216 | extension UnsafeRawBufferPointer : Equatable {
| |- warning: extension declares a conformance of imported type 'UnsafeRawBufferPointer' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
217 | @inline(__always)
218 | public static func ==(lhs: Self, rhs: Self) -> Bool {
[17/19] Emitting module WebMIDIKit
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/CoreMIDI.swift:3:1: warning: extension declares a conformance of imported type 'MIDIObjectAddRemoveNotification' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
1 | import CoreMIDI
2 |
3 | extension MIDIObjectAddRemoveNotification: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'MIDIObjectAddRemoveNotification' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
4 |
5 | public var description: String {
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/Extensions.swift:10:1: warning: extension declares a conformance of imported type 'MIDIObjectType' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
8 | }
9 |
10 | extension MIDIObjectType: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'MIDIObjectType' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
11 | public var description: String {
12 | switch self {
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketList.swift:133:1: warning: extension declares a conformance of imported type 'MIDIPacketList' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
131 | // }
132 |
133 | extension MIDIPacketList: Sequence {
| |- warning: extension declares a conformance of imported type 'MIDIPacketList' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
134 | public typealias Element = UnsafeMutablePointer<MIDIPacket>
135 |
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketList.swift:220:1: warning: extension declares a conformance of imported type 'UnsafePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
218 | // }
219 |
220 | extension UnsafePointer: Sequence where Pointee == MIDIPacketList {
| |- warning: extension declares a conformance of imported type 'UnsafePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
221 | public typealias Element = UnsafeMutablePointer<MIDIPacket>
222 |
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketListBuilder.swift:194:1: warning: extension declares a conformance of imported type 'UnsafeMutablePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
192 |
193 |
194 | extension UnsafeMutablePointer: Sequence where Pointee == MIDIPacketList {
| |- warning: extension declares a conformance of imported type 'UnsafeMutablePointer' to imported protocol 'Sequence'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
195 | public typealias Element = UnsafePointer<MIDIPacket>
196 |
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/MIDIPacketListBuilder.swift:216:1: warning: extension declares a conformance of imported type 'UnsafeRawBufferPointer' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
214 | }
215 |
216 | extension UnsafeRawBufferPointer : Equatable {
| |- warning: extension declares a conformance of imported type 'UnsafeRawBufferPointer' to imported protocol 'Equatable'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
217 | @inline(__always)
218 | public static func ==(lhs: Self, rhs: Self) -> Bool {
[18/19] Compiling WebMIDIKit CoreMIDI.swift
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/CoreMIDI.swift:3:1: warning: extension declares a conformance of imported type 'MIDIObjectAddRemoveNotification' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
1 | import CoreMIDI
2 |
3 | extension MIDIObjectAddRemoveNotification: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'MIDIObjectAddRemoveNotification' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
4 |
5 | public var description: String {
[19/19] Compiling WebMIDIKit Enums.swift
/Users/admin/builder/spi-builder-workspace/Sources/WebMIDIKit/CoreMIDI.swift:3:1: warning: extension declares a conformance of imported type 'MIDIObjectAddRemoveNotification' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
1 | import CoreMIDI
2 |
3 | extension MIDIObjectAddRemoveNotification: CustomStringConvertible {
| |- warning: extension declares a conformance of imported type 'MIDIObjectAddRemoveNotification' to imported protocol 'CustomStringConvertible'; this will not behave correctly if the owners of 'CoreMIDI' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
4 |
5 | public var description: String {
Build complete! (7.57s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "WebMIDIKit",
"name" : "WebMIDIKit",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
}
],
"products" : [
{
"name" : "WebMIDIKit",
"targets" : [
"WebMIDIKit"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "WebMIDIKitTests",
"module_type" : "SwiftTarget",
"name" : "WebMIDIKitTests",
"path" : "Tests/WebMIDIKitTests",
"sources" : [
"MIDIPacketListBuilderTests.swift",
"WebMIDIKitTests.swift"
],
"target_dependencies" : [
"WebMIDIKit"
],
"type" : "test"
},
{
"c99name" : "WebMIDIKit",
"module_type" : "SwiftTarget",
"name" : "WebMIDIKit",
"path" : "Sources/WebMIDIKit",
"product_memberships" : [
"WebMIDIKit"
],
"sources" : [
"CoreMIDI.swift",
"Enums.swift",
"Extensions.swift",
"MIDIClient.swift",
"MIDIEndpoint.swift",
"MIDIEvent.swift",
"MIDIInput.swift",
"MIDIOutput.swift",
"MIDIPacketList.swift",
"MIDIPacketListBuilder.swift",
"MIDIPort.swift",
"MIDIPortMap.swift",
"MIDIStatus.swift",
"VirtualMIDIInput.swift",
"VirtualMIDIOutput.swift",
"WebMIDIKit.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
Done.