Build Information
Successful build of LiveAudioServer, reference main (3e2a77), with Swift 6.1 for macOS (SPM) on 5 Oct 2026 07:16:31 UTC.
Swift 6 data race errors: 2
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 5.1.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/dsward2/LiveAudioServer.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/dsward2/LiveAudioServer
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 3e2a77f Merge pull request #5 from dsward2/minimal-ui
Cloned https://github.com/dsward2/LiveAudioServer.git
Revision (git rev-parse @):
3e2a77f74c24b6ee88848abe99679c06faa8ab41
SUCCESS checkout https://github.com/dsward2/LiveAudioServer.git at main
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/dsward2/LiveAudioServer.git
https://github.com/dsward2/LiveAudioServer.git
{
"dependencies" : [
{
"identity" : "swift-testing",
"requirement" : {
"range" : [
{
"lower_bound" : "0.10.0",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-testing.git"
}
],
"manifest_display_name" : "LiveAudioServer",
"name" : "LiveAudioServer",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "13.0"
}
],
"products" : [
{
"name" : "LiveAudioServerCore",
"targets" : [
"LiveAudioServerCore"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "LiveAudioServer",
"targets" : [
"LiveAudioServer"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "LiveAudioServerTests",
"module_type" : "SwiftTarget",
"name" : "LiveAudioServerTests",
"path" : "Tests/LiveAudioServerTests",
"product_dependencies" : [
"Testing"
],
"sources" : [
"CLIParseTests.swift",
"ConfigFileTests.swift",
"FillerGeneratorTests.swift",
"HLSSegmenterTests.swift",
"IPACLTests.swift",
"LiveAudioServerLibraryAPITests.swift",
"NowPlayingTests.swift",
"PCMInputSourceTests.swift",
"RecorderTests.swift",
"StatsCollectorTests.swift",
"TPDFDitherTests.swift"
],
"target_dependencies" : [
"LiveAudioServerCore"
],
"type" : "test"
},
{
"c99name" : "LiveAudioServerCore",
"module_type" : "SwiftTarget",
"name" : "LiveAudioServerCore",
"path" : "Sources/LiveAudioServerCore",
"product_memberships" : [
"LiveAudioServerCore",
"LiveAudioServer"
],
"sources" : [
"AACEncoder.swift",
"AudioEncoderConfig.swift",
"Bonjour.swift",
"CLIParse.swift",
"ChunkBroadcaster.swift",
"Config.swift",
"ConfigFile.swift",
"HLSSegmenter.swift",
"HTTPServer.swift",
"IPACL.swift",
"LiveAudioServer.swift",
"Logger.swift",
"MP3Encoder.swift",
"NowPlaying.swift",
"PCMSource.swift",
"Recorder.swift",
"StatsCollector.swift",
"TLSIdentity.swift",
"Version.swift"
],
"target_dependencies" : [
"CLame"
],
"type" : "library"
},
{
"c99name" : "LiveAudioServer",
"module_type" : "SwiftTarget",
"name" : "LiveAudioServer",
"path" : "Sources/LiveAudioServer",
"product_memberships" : [
"LiveAudioServer"
],
"sources" : [
"LiveAudioServerApp.swift"
],
"target_dependencies" : [
"LiveAudioServerCore"
],
"type" : "executable"
},
{
"c99name" : "CLame",
"module_type" : "BinaryTarget",
"name" : "CLame",
"path" : "Frameworks/Mp3Lame.xcframework",
"product_memberships" : [
"LiveAudioServerCore",
"LiveAudioServer"
],
"sources" : [
],
"type" : "binary"
}
],
"tools_version" : "5.10"
}
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/8] Write sources
[0/8] Write LiveAudioServer-entitlement.plist
[0/8] Write sources
[3/8] Copying CLame.framework
[4/8] Write swift-version-2F0A5646E1D333AE.txt
[6/27] Compiling LiveAudioServerCore PCMSource.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/Recorder.swift:129:30: warning: capture of 'self' with non-sendable type 'FileRecorder?' in a '@Sendable' closure
31 | }
32 |
33 | final class FileRecorder {
| `- note: class 'FileRecorder' does not conform to the 'Sendable' protocol
34 | enum State: String, Codable {
35 | case idle
:
127 | guard !data.isEmpty else { return }
128 | queue.async { [weak self] in
129 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FileRecorder?' in a '@Sendable' closure
130 | guard self._state == .recording, let h = self.handle else { return }
131 | do {
[7/27] Compiling LiveAudioServerCore Recorder.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/Recorder.swift:129:30: warning: capture of 'self' with non-sendable type 'FileRecorder?' in a '@Sendable' closure
31 | }
32 |
33 | final class FileRecorder {
| `- note: class 'FileRecorder' does not conform to the 'Sendable' protocol
34 | enum State: String, Codable {
35 | case idle
:
127 | guard !data.isEmpty else { return }
128 | queue.async { [weak self] in
129 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'FileRecorder?' in a '@Sendable' closure
130 | guard self._state == .recording, let h = self.handle else { return }
131 | do {
[8/27] Compiling LiveAudioServerCore ConfigFile.swift
[9/27] Compiling LiveAudioServerCore HLSSegmenter.swift
[10/27] Compiling LiveAudioServerCore StatsCollector.swift
[11/27] Compiling LiveAudioServerCore TLSIdentity.swift
[12/28] Compiling LiveAudioServerCore ChunkBroadcaster.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/ChunkBroadcaster.swift:60:30: warning: capture of 'self' with non-sendable type 'StreamClient?' in a '@Sendable' closure
24 | // MARK: - Client Slot
25 |
26 | final class StreamClient {
| `- note: class 'StreamClient' does not conform to the 'Sendable' protocol
27 | let id: UUID
28 | let connection: NWConnection
:
58 | pendingBytes += data.count
59 | connection.send(content: framed, completion: .contentProcessed { [weak self] error in
60 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'StreamClient?' in a '@Sendable' closure
61 | self.pendingBytes -= data.count
62 | if let error = error {
[13/28] Compiling LiveAudioServerCore Config.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/ChunkBroadcaster.swift:60:30: warning: capture of 'self' with non-sendable type 'StreamClient?' in a '@Sendable' closure
24 | // MARK: - Client Slot
25 |
26 | final class StreamClient {
| `- note: class 'StreamClient' does not conform to the 'Sendable' protocol
27 | let id: UUID
28 | let connection: NWConnection
:
58 | pendingBytes += data.count
59 | connection.send(content: framed, completion: .contentProcessed { [weak self] error in
60 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'StreamClient?' in a '@Sendable' closure
61 | self.pendingBytes -= data.count
62 | if let error = error {
[14/28] Compiling LiveAudioServerCore MP3Encoder.swift
[15/28] Compiling LiveAudioServerCore NowPlaying.swift
[16/28] Compiling LiveAudioServerCore HTTPServer.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:575:30: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
573 | func start() {
574 | connection.stateUpdateHandler = { [weak self] state in
575 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
576 | switch state {
577 | case .cancelled, .failed:
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:600:30: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
598 | private func receiveRequest() {
599 | connection.receive(minimumIncompleteLength: 1, maximumLength: 8192) { [weak self] data, _, isComplete, _ in
600 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
601 | if let d = data { self.receiveBuffer.append(d) }
602 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:715:21: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
713 | } else {
714 | connection.send(content: notFoundResponse(), completion: .contentProcessed { [weak self] _ in
715 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
716 | })
717 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:731:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
729 | response.append(body)
730 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
731 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
732 | })
733 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:749:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
747 | response.append(body)
748 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
749 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
750 | })
751 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:761:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
759 | if headOnly {
760 | connection.send(content: headers, completion: .contentProcessed { [weak self] _ in
761 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
762 | })
763 | return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:768:30: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
766 | // Send headers, then register as a streaming client
767 | connection.send(content: headers, completion: .contentProcessed { [weak self] error in
768 | guard let self = self, error == nil else { self?.connection.cancel(); return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
769 |
770 | let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:797:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
795 | if !headOnly { response.append(body) }
796 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
797 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
798 | })
799 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:829:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
827 | if !headOnly { response.append(body) }
828 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
829 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
830 | })
831 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:845:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
843 | if !headOnly { response.append(body) }
844 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
845 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
846 | })
847 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:864:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
862 | response.append(responseBody)
863 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
864 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
865 | })
866 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:897:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
895 | if !headOnly { response.append(body) }
896 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
897 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
898 | })
899 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:989:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
987 | guard let segmenter = hlsSegmenter else {
988 | connection.send(content: notFoundResponse(), completion: .contentProcessed { [weak self] _ in
989 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
990 | })
991 | return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1003:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
1001 | if !headOnly { response.append(body) }
1002 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
1003 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
1004 | })
1005 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1011:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
1009 | let body = segmenter.segmentData(for: path) else {
1010 | connection.send(content: notFoundResponse(), completion: .contentProcessed { [weak self] _ in
1011 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
1012 | })
1013 | return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1025:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
1023 | if !headOnly { response.append(body) }
1024 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
1025 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
1026 | })
1027 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1148:30: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1030 | // MARK: - HTTP Server
1031 |
1032 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
1033 | private let config: ServerConfig
1034 | private let mp3Broadcaster: ChunkBroadcaster
:
1146 |
1147 | listener.newConnectionHandler = { [weak self] conn in
1148 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1149 |
1150 | // Source-IP allow-list check (default = allow all).
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1193:30: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1030 | // MARK: - HTTP Server
1031 |
1032 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
1033 | private let config: ServerConfig
1034 | private let mp3Broadcaster: ChunkBroadcaster
:
1191 |
1192 | listener.stateUpdateHandler = { [weak self] state in
1193 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1194 | switch state {
1195 | case .ready:
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/IPACL.swift:126:23: warning: static property 'allowAll' is not concurrency-safe because non-'Sendable' type 'IPAllowList' may have shared mutable state; this is an error in the Swift 6 language mode
117 | /// Ordered list of allow-list matchers. A connection is allowed iff at least
118 | /// one matcher matches the source host.
119 | public struct IPAllowList: Equatable {
| `- note: consider making struct 'IPAllowList' conform to the 'Sendable' protocol
120 | let matchers: [IPMatcher]
121 | /// `true` for the unrestricted default — kept as a separate flag so a
:
124 | let allowAll: Bool
125 |
126 | public static let allowAll = IPAllowList(matchers: [], allowAll: true)
| |- warning: static property 'allowAll' is not concurrency-safe because non-'Sendable' type 'IPAllowList' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'allowAll' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 | func allows(_ host: NWEndpoint.Host) -> Bool {
[17/28] Compiling LiveAudioServerCore IPACL.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:575:30: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
573 | func start() {
574 | connection.stateUpdateHandler = { [weak self] state in
575 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
576 | switch state {
577 | case .cancelled, .failed:
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:600:30: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
598 | private func receiveRequest() {
599 | connection.receive(minimumIncompleteLength: 1, maximumLength: 8192) { [weak self] data, _, isComplete, _ in
600 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
601 | if let d = data { self.receiveBuffer.append(d) }
602 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:715:21: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
713 | } else {
714 | connection.send(content: notFoundResponse(), completion: .contentProcessed { [weak self] _ in
715 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
716 | })
717 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:731:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
729 | response.append(body)
730 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
731 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
732 | })
733 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:749:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
747 | response.append(body)
748 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
749 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
750 | })
751 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:761:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
759 | if headOnly {
760 | connection.send(content: headers, completion: .contentProcessed { [weak self] _ in
761 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
762 | })
763 | return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:768:30: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
766 | // Send headers, then register as a streaming client
767 | connection.send(content: headers, completion: .contentProcessed { [weak self] error in
768 | guard let self = self, error == nil else { self?.connection.cancel(); return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
769 |
770 | let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:797:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
795 | if !headOnly { response.append(body) }
796 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
797 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
798 | })
799 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:829:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
827 | if !headOnly { response.append(body) }
828 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
829 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
830 | })
831 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:845:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
843 | if !headOnly { response.append(body) }
844 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
845 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
846 | })
847 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:864:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
862 | response.append(responseBody)
863 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
864 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
865 | })
866 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:897:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
895 | if !headOnly { response.append(body) }
896 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
897 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
898 | })
899 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:989:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
987 | guard let segmenter = hlsSegmenter else {
988 | connection.send(content: notFoundResponse(), completion: .contentProcessed { [weak self] _ in
989 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
990 | })
991 | return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1003:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
1001 | if !headOnly { response.append(body) }
1002 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
1003 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
1004 | })
1005 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1011:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
1009 | let body = segmenter.segmentData(for: path) else {
1010 | connection.send(content: notFoundResponse(), completion: .contentProcessed { [weak self] _ in
1011 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
1012 | })
1013 | return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1025:13: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
526 | // MARK: - Connection Handler
527 |
528 | final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
529 | private let connection: NWConnection
530 | private let config: ServerConfig
:
1023 | if !headOnly { response.append(body) }
1024 | connection.send(content: response, completion: .contentProcessed { [weak self] _ in
1025 | self?.connection.cancel()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
1026 | })
1027 | }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1148:30: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1030 | // MARK: - HTTP Server
1031 |
1032 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
1033 | private let config: ServerConfig
1034 | private let mp3Broadcaster: ChunkBroadcaster
:
1146 |
1147 | listener.newConnectionHandler = { [weak self] conn in
1148 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1149 |
1150 | // Source-IP allow-list check (default = allow all).
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/HTTPServer.swift:1193:30: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1030 | // MARK: - HTTP Server
1031 |
1032 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
1033 | private let config: ServerConfig
1034 | private let mp3Broadcaster: ChunkBroadcaster
:
1191 |
1192 | listener.stateUpdateHandler = { [weak self] state in
1193 | guard let self = self else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
1194 | switch state {
1195 | case .ready:
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/IPACL.swift:126:23: warning: static property 'allowAll' is not concurrency-safe because non-'Sendable' type 'IPAllowList' may have shared mutable state; this is an error in the Swift 6 language mode
117 | /// Ordered list of allow-list matchers. A connection is allowed iff at least
118 | /// one matcher matches the source host.
119 | public struct IPAllowList: Equatable {
| `- note: consider making struct 'IPAllowList' conform to the 'Sendable' protocol
120 | let matchers: [IPMatcher]
121 | /// `true` for the unrestricted default — kept as a separate flag so a
:
124 | let allowAll: Bool
125 |
126 | public static let allowAll = IPAllowList(matchers: [], allowAll: true)
| |- warning: static property 'allowAll' is not concurrency-safe because non-'Sendable' type 'IPAllowList' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'allowAll' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 | func allows(_ host: NWEndpoint.Host) -> Bool {
[18/28] Compiling LiveAudioServerCore Version.swift
[19/28] Compiling LiveAudioServerCore AACEncoder.swift
[20/28] Compiling LiveAudioServerCore AudioEncoderConfig.swift
[21/28] Emitting module LiveAudioServerCore
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/IPACL.swift:126:23: warning: static property 'allowAll' is not concurrency-safe because non-'Sendable' type 'IPAllowList' may have shared mutable state; this is an error in the Swift 6 language mode
117 | /// Ordered list of allow-list matchers. A connection is allowed iff at least
118 | /// one matcher matches the source host.
119 | public struct IPAllowList: Equatable {
| `- note: consider making struct 'IPAllowList' conform to the 'Sendable' protocol
120 | let matchers: [IPMatcher]
121 | /// `true` for the unrestricted default — kept as a separate flag so a
:
124 | let allowAll: Bool
125 |
126 | public static let allowAll = IPAllowList(matchers: [], allowAll: true)
| |- warning: static property 'allowAll' is not concurrency-safe because non-'Sendable' type 'IPAllowList' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'allowAll' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 | func allows(_ host: NWEndpoint.Host) -> Bool {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/Logger.swift:44:24: warning: static property '_logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
42 | public enum LiveAudioServerLogging {
43 | private static let lock = NSLock()
44 | private static var _logger: LiveAudioServerLogger = SilentLogger()
| |- warning: static property '_logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
45 |
46 | public static var logger: LiveAudioServerLogger {
[22/28] Compiling LiveAudioServerCore Bonjour.swift
[23/28] Compiling LiveAudioServerCore CLIParse.swift
[24/28] Compiling LiveAudioServerCore LiveAudioServer.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/Logger.swift:44:24: warning: static property '_logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
42 | public enum LiveAudioServerLogging {
43 | private static let lock = NSLock()
44 | private static var _logger: LiveAudioServerLogger = SilentLogger()
| |- warning: static property '_logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
45 |
46 | public static var logger: LiveAudioServerLogger {
[25/28] Compiling LiveAudioServerCore Logger.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAudioServerCore/Logger.swift:44:24: warning: static property '_logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
42 | public enum LiveAudioServerLogging {
43 | private static let lock = NSLock()
44 | private static var _logger: LiveAudioServerLogger = SilentLogger()
| |- warning: static property '_logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
45 |
46 | public static var logger: LiveAudioServerLogger {
[26/30] Compiling LiveAudioServer LiveAudioServerApp.swift
[27/30] Emitting module LiveAudioServer
[27/30] Write Objects.LinkFileList
[28/30] Linking LiveAudioServer
[29/30] Applying LiveAudioServer
Build complete! (21.24s)
Fetching https://github.com/apple/swift-testing.git
[1/44237] Fetching swift-testing
Fetched https://github.com/apple/swift-testing.git from cache (4.42s)
Computing version for https://github.com/apple/swift-testing.git
Computed https://github.com/apple/swift-testing.git at 0.99.0 (5.07s)
Fetching https://github.com/swiftlang/swift-syntax.git from cache
Fetched https://github.com/swiftlang/swift-syntax.git from cache (2.97s)
Computing version for https://github.com/swiftlang/swift-syntax.git
Computed https://github.com/swiftlang/swift-syntax.git at 600.0.1 (6.51s)
Creating working copy for https://github.com/apple/swift-testing.git
Working copy of https://github.com/apple/swift-testing.git resolved at 0.99.0
Creating working copy for https://github.com/swiftlang/swift-syntax.git
Working copy of https://github.com/swiftlang/swift-syntax.git resolved at 600.0.1
Build complete.
{
"dependencies" : [
{
"identity" : "swift-testing",
"requirement" : {
"range" : [
{
"lower_bound" : "0.10.0",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-testing.git"
}
],
"manifest_display_name" : "LiveAudioServer",
"name" : "LiveAudioServer",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "13.0"
}
],
"products" : [
{
"name" : "LiveAudioServerCore",
"targets" : [
"LiveAudioServerCore"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "LiveAudioServer",
"targets" : [
"LiveAudioServer"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "LiveAudioServerTests",
"module_type" : "SwiftTarget",
"name" : "LiveAudioServerTests",
"path" : "Tests/LiveAudioServerTests",
"product_dependencies" : [
"Testing"
],
"sources" : [
"CLIParseTests.swift",
"ConfigFileTests.swift",
"FillerGeneratorTests.swift",
"HLSSegmenterTests.swift",
"IPACLTests.swift",
"LiveAudioServerLibraryAPITests.swift",
"NowPlayingTests.swift",
"PCMInputSourceTests.swift",
"RecorderTests.swift",
"StatsCollectorTests.swift",
"TPDFDitherTests.swift"
],
"target_dependencies" : [
"LiveAudioServerCore"
],
"type" : "test"
},
{
"c99name" : "LiveAudioServerCore",
"module_type" : "SwiftTarget",
"name" : "LiveAudioServerCore",
"path" : "Sources/LiveAudioServerCore",
"product_memberships" : [
"LiveAudioServerCore",
"LiveAudioServer"
],
"sources" : [
"AACEncoder.swift",
"AudioEncoderConfig.swift",
"Bonjour.swift",
"CLIParse.swift",
"ChunkBroadcaster.swift",
"Config.swift",
"ConfigFile.swift",
"HLSSegmenter.swift",
"HTTPServer.swift",
"IPACL.swift",
"LiveAudioServer.swift",
"Logger.swift",
"MP3Encoder.swift",
"NowPlaying.swift",
"PCMSource.swift",
"Recorder.swift",
"StatsCollector.swift",
"TLSIdentity.swift",
"Version.swift"
],
"target_dependencies" : [
"CLame"
],
"type" : "library"
},
{
"c99name" : "LiveAudioServer",
"module_type" : "SwiftTarget",
"name" : "LiveAudioServer",
"path" : "Sources/LiveAudioServer",
"product_memberships" : [
"LiveAudioServer"
],
"sources" : [
"LiveAudioServerApp.swift"
],
"target_dependencies" : [
"LiveAudioServerCore"
],
"type" : "executable"
},
{
"c99name" : "CLame",
"module_type" : "BinaryTarget",
"name" : "CLame",
"path" : "Frameworks/Mp3Lame.xcframework",
"product_memberships" : [
"LiveAudioServerCore",
"LiveAudioServer"
],
"sources" : [
],
"type" : "binary"
}
],
"tools_version" : "5.10"
}
Done.