The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of NWWebSocket, reference 0.5.7 (da32dc), with Swift 6.1 for macOS (SPM) on 20 Jun 2025 22:03:57 UTC.

Swift 6 data race errors: 1

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.64.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/pusher/NWWebSocket.git
Reference: 0.5.7
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/pusher/NWWebSocket
 * tag               0.5.7      -> FETCH_HEAD
HEAD is now at da32dcf Merge pull request #58 from pusher/fix-connect-after-started
Cloned https://github.com/pusher/NWWebSocket.git
Revision (git rev-parse @):
da32dcf230d9b627a9ef9d79b83605d12b3fbcbd
SUCCESS checkout https://github.com/pusher/NWWebSocket.git at 0.5.7
========================================
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": "nwwebsocket",
      "name": "NWWebSocket",
      "url": "https://github.com/pusher/NWWebSocket.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/NWWebSocket",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/pusher/NWWebSocket.git
[1/758] Fetching nwwebsocket
Fetched https://github.com/pusher/NWWebSocket.git from cache (0.91s)
Creating working copy for https://github.com/pusher/NWWebSocket.git
Working copy of https://github.com/pusher/NWWebSocket.git resolved at 0.5.7 (da32dcf)
warning: '.resolve-product-dependencies': dependency 'nwwebsocket' 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/pusher/NWWebSocket.git
https://github.com/pusher/NWWebSocket.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "NWWebSocket",
  "name" : "NWWebSocket",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "NWWebSocket",
      "targets" : [
        "NWWebSocket"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "NWWebSocketTests",
      "module_type" : "SwiftTarget",
      "name" : "NWWebSocketTests",
      "path" : "Tests/NWWebSocketTests",
      "sources" : [
        "NWWebSocketTests.swift",
        "Server/NWServerConnection.swift",
        "Server/NWWebSocketServer.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "NWWebSocket"
      ],
      "type" : "test"
    },
    {
      "c99name" : "NWWebSocket",
      "module_type" : "SwiftTarget",
      "name" : "NWWebSocket",
      "path" : "Sources/NWWebSocket",
      "product_memberships" : [
        "NWWebSocket"
      ],
      "sources" : [
        "Extension/NWConnection+Extension.swift",
        "Model/Client/NWWebSocket.swift",
        "Protocol/WebSocketConnection.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.1"
}
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/6] Compiling NWWebSocket NWWebSocket.swift
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:119:17: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
117 |             connection = NWConnection(to: endpoint, using: parameters)
118 |             connection?.stateUpdateHandler = { [weak self] state in
119 |                 self?.stateDidChange(to: state)
    |                 `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
120 |             }
121 |             connection?.betterPathUpdateHandler = { [weak self] isAvailable in
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:122:17: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
120 |             }
121 |             connection?.betterPathUpdateHandler = { [weak self] isAvailable in
122 |                 self?.betterPath(isAvailable: isAvailable)
    |                 `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
123 |             }
124 |             connection?.viabilityUpdateHandler = { [weak self] isViable in
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:125:17: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
123 |             }
124 |             connection?.viabilityUpdateHandler = { [weak self] isViable in
125 |                 self?.viabilityDidChange(isViable: isViable)
    |                 `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
126 |             }
127 |             listen()
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:175:30: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
173 |     public func listen() {
174 |         connection?.receiveMessage { [weak self] (data, context, _, error) in
175 |             guard let self = self else {
    |                              `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure
176 |                 return
177 |             }
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:198:30: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
196 |
197 |         pingTimer = .scheduledTimer(withTimeInterval: interval, repeats: true) { [weak self] _ in
198 |             guard let self = self else {
    |                              `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure
199 |                 return
200 |             }
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:211:30: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
209 |         let metadata = NWProtocolWebSocket.Metadata(opcode: .ping)
210 |         metadata.setPongHandler(connectionQueue) { [weak self] error in
211 |             guard let self = self else {
    |                              `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure
212 |                 return
213 |             }
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:335:30: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
333 |         connection = NWConnection(to: endpoint, using: parameters)
334 |         connection?.stateUpdateHandler = { [weak self] state in
335 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
336 |             self.stateDidChange(to: state)
337 |
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:341:17: warning: capture of 'completionHandler' with non-sendable type '(Result<any WebSocketConnection, NWError>) -> Void' in a '@Sendable' closure; this is an error in the Swift 6 language mode
339 |             switch state {
340 |             case .ready:
341 |                 completionHandler(.success(self))
    |                 |- warning: capture of 'completionHandler' with non-sendable type '(Result<any WebSocketConnection, NWError>) -> 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'
342 |             case .failed(let error):
343 |                 completionHandler(.failure(error))
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:349:13: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
347 |         }
348 |         connection?.betterPathUpdateHandler = { [weak self] isAvailable in
349 |             self?.betterPath(isAvailable: isAvailable)
    |             `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
350 |         }
351 |         connection?.viabilityUpdateHandler = { [weak self] isViable in
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:352:13: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
350 |         }
351 |         connection?.viabilityUpdateHandler = { [weak self] isViable in
352 |             self?.viabilityDidChange(isViable: isViable)
    |             `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
353 |         }
354 |         listen()
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:411:30: warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure
  3 |
  4 | /// A WebSocket client that manages a socket connection.
  5 | open class NWWebSocket: WebSocketConnection {
    |            `- note: class 'NWWebSocket' does not conform to the 'Sendable' protocol
  6 |
  7 |     // MARK: - Public properties
    :
409 |                          isComplete: true,
410 |                          completion: .contentProcessed({ [weak self] error in
411 |             guard let self = self else {
    |                              `- warning: capture of 'self' with non-sendable type 'NWWebSocket?' in a '@Sendable' closure
412 |                 return
413 |             }
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Model/Client/NWWebSocket.swift:488:40: warning: reference to captured var 'connectionToTearDown' in concurrently-executing code
486 |             // Small delay to let any in-flight callbacks complete
487 |             DispatchQueue.global().asyncAfter(deadline: .now() + 0.1) {
488 |                 guard let connection = connectionToTearDown else { return }
    |                                        `- warning: reference to captured var 'connectionToTearDown' in concurrently-executing code
489 |
490 |                 // Only cancel if not already cancelled
[4/6] Compiling NWWebSocket NWConnection+Extension.swift
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Extension/NWConnection+Extension.swift:3:17: warning: var '_intentionalDisconnection' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 1 | import Network
 2 |
 3 | fileprivate var _intentionalDisconnection: Bool = false
   |                 |- warning: var '_intentionalDisconnection' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                 |- note: convert '_intentionalDisconnection' to a 'let' constant to make 'Sendable' shared state immutable
   |                 |- note: add '@MainActor' to make var '_intentionalDisconnection' part of global actor 'MainActor'
   |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 4 |
 5 | internal extension NWConnection {
[5/6] Emitting module NWWebSocket
/Users/admin/builder/spi-builder-workspace/Sources/NWWebSocket/Extension/NWConnection+Extension.swift:3:17: warning: var '_intentionalDisconnection' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 1 | import Network
 2 |
 3 | fileprivate var _intentionalDisconnection: Bool = false
   |                 |- warning: var '_intentionalDisconnection' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                 |- note: convert '_intentionalDisconnection' to a 'let' constant to make 'Sendable' shared state immutable
   |                 |- note: add '@MainActor' to make var '_intentionalDisconnection' part of global actor 'MainActor'
   |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 4 |
 5 | internal extension NWConnection {
[6/6] Compiling NWWebSocket WebSocketConnection.swift
Build complete! (3.67s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "NWWebSocket",
  "name" : "NWWebSocket",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "NWWebSocket",
      "targets" : [
        "NWWebSocket"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "NWWebSocketTests",
      "module_type" : "SwiftTarget",
      "name" : "NWWebSocketTests",
      "path" : "Tests/NWWebSocketTests",
      "sources" : [
        "NWWebSocketTests.swift",
        "Server/NWServerConnection.swift",
        "Server/NWWebSocketServer.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "NWWebSocket"
      ],
      "type" : "test"
    },
    {
      "c99name" : "NWWebSocket",
      "module_type" : "SwiftTarget",
      "name" : "NWWebSocket",
      "path" : "Sources/NWWebSocket",
      "product_memberships" : [
        "NWWebSocket"
      ],
      "sources" : [
        "Extension/NWConnection+Extension.swift",
        "Model/Client/NWWebSocket.swift",
        "Protocol/WebSocketConnection.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.1"
}
Done.