The Swift Package Index logo.Swift Package Index

Build Information

Successful build of NanoHTTP, reference 2.1.2 (a8cb61), with Swift 6.1 for macOS (SPM) on 17 Oct 2026 23:10:51 UTC.

Swift 6 data race errors: 6

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: 5.1.3
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/objecthub/swift-nanohttp.git
Reference: 2.1.2
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/objecthub/swift-nanohttp
 * tag               2.1.2      -> FETCH_HEAD
HEAD is now at a8cb617 Make all errors LocalizedErrors. Finalize release 2.1.2.
Cloned https://github.com/objecthub/swift-nanohttp.git
Revision (git rev-parse @):
a8cb617fcc333e1aa3ca31d5bf794a9c6db73c74
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/objecthub/swift-nanohttp.git at 2.1.2
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/objecthub/swift-nanohttp.git
https://github.com/objecthub/swift-nanohttp.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "NanoHTTP",
  "name" : "NanoHTTP",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    },
    {
      "name" : "ios",
      "version" : "15.0"
    },
    {
      "name" : "tvos",
      "version" : "15.0"
    }
  ],
  "products" : [
    {
      "name" : "NanoHTTP",
      "targets" : [
        "NanoHTTP"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NanoHTML",
      "targets" : [
        "NanoHTML"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NanoHTTPDemo",
      "targets" : [
        "NanoHTTPDemo"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "DemoServer",
      "targets" : [
        "DemoServer"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleUpload",
      "targets" : [
        "ExampleUpload"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleTodoAPI",
      "targets" : [
        "ExampleTodoAPI"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleStatus",
      "targets" : [
        "ExampleStatus"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleHello",
      "targets" : [
        "ExampleHello"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleFileServer",
      "targets" : [
        "ExampleFileServer"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleChat",
      "targets" : [
        "ExampleChat"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "NanoHTTPTests",
      "module_type" : "SwiftTarget",
      "name" : "NanoHTTPTests",
      "path" : "Tests/NanoHTTPTests",
      "sources" : [
        "BufferedReadingTests.swift",
        "CORSTests.swift",
        "ConfigurationTests.swift",
        "ConnectionSemanticsTests.swift",
        "CookieTests.swift",
        "DeferredResponseTests.swift",
        "FileServingTests.swift",
        "HTMLDSLTests.swift",
        "HTTPParserTests.swift",
        "HTTPProtocolTests.swift",
        "HTTPRouterTests.swift",
        "HandlerErrorTests.swift",
        "HeadAndOptionsTests.swift",
        "HostAndOriginTests.swift",
        "IOSafetyTests.swift",
        "LocalizedErrorTests.swift",
        "LoggerTests.swift",
        "MiddlewareTests.swift",
        "MimeTypeTests.swift",
        "MultipartParserTests.swift",
        "NanoProcessTests.swift",
        "PingServer.swift",
        "RequestParsingTests.swift",
        "RequestSemanticsTests.swift",
        "ResponseHelperTests.swift",
        "ResponseSerializerTests.swift",
        "RobustnessTests.swift",
        "RouterBehaviorTests.swift",
        "SecurityTests.swift",
        "ServerThreadingTests.swift",
        "SingleThreadTests.swift",
        "SocketSessionTests.swift",
        "StringExtensionsTests.swift",
        "Support/KnownIssue.swift",
        "Support/RawClient.swift",
        "Support/TestServer.swift",
        "ThreadPoolTests.swift",
        "TimeoutTests.swift",
        "WebSocketHubTests.swift",
        "WebSocketIntegrationTests.swift",
        "WebSocketTests.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "test"
    },
    {
      "c99name" : "NanoHTTPDemo",
      "module_type" : "SwiftTarget",
      "name" : "NanoHTTPDemo",
      "path" : "Sources/NanoHTTPDemo",
      "product_memberships" : [
        "NanoHTTPDemo",
        "DemoServer"
      ],
      "sources" : [
        "NanoHTTPDemo.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NanoHTTP",
      "module_type" : "SwiftTarget",
      "name" : "NanoHTTP",
      "path" : "Sources/NanoHTTP",
      "product_memberships" : [
        "NanoHTTP",
        "NanoHTML",
        "NanoHTTPDemo",
        "DemoServer",
        "ExampleUpload",
        "ExampleTodoAPI",
        "ExampleStatus",
        "ExampleHello",
        "ExampleFileServer",
        "ExampleChat"
      ],
      "sources" : [
        "NanoFile.swift",
        "NanoFiles.swift",
        "NanoHTTPBodyWriters.swift",
        "NanoHTTPConnection.swift",
        "NanoHTTPCookie.swift",
        "NanoHTTPDeferredResponse.swift",
        "NanoHTTPError.swift",
        "NanoHTTPMultipart.swift",
        "NanoHTTPParser.swift",
        "NanoHTTPRequest.swift",
        "NanoHTTPResponse.swift",
        "NanoHTTPResponseBodyWriter.swift",
        "NanoHTTPResponseSerializer.swift",
        "NanoHTTPRouter.swift",
        "NanoHTTPSegmentRouter.swift",
        "NanoHTTPServer.swift",
        "NanoHTTPServerIO.swift",
        "NanoLogger.swift",
        "NanoMiddleware.swift",
        "NanoNetworkInterface.swift",
        "NanoProcess.swift",
        "NanoRequestPolicy.swift",
        "NanoSocket.swift",
        "NanoSocketError.swift",
        "NanoSocketSession.swift",
        "NanoThreadPool.swift",
        "NanoWebSocketHub.swift",
        "NanoWebSockets.swift",
        "Renamed.swift",
        "String+Extensions.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NanoHTML",
      "module_type" : "SwiftTarget",
      "name" : "NanoHTML",
      "path" : "Sources/NanoHTML",
      "product_memberships" : [
        "NanoHTML",
        "NanoHTTPDemo",
        "DemoServer",
        "ExampleUpload",
        "ExampleStatus",
        "ExampleChat"
      ],
      "sources" : [
        "HTMLAttributes.swift",
        "HTMLElement.swift",
        "HTMLElements.swift",
        "HTMLNode.swift",
        "HTMLResponse.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ExampleUpload",
      "module_type" : "SwiftTarget",
      "name" : "ExampleUpload",
      "path" : "Examples/Upload",
      "product_memberships" : [
        "ExampleUpload"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleTodoAPI",
      "module_type" : "SwiftTarget",
      "name" : "ExampleTodoAPI",
      "path" : "Examples/TodoAPI",
      "product_memberships" : [
        "ExampleTodoAPI"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleStatus",
      "module_type" : "SwiftTarget",
      "name" : "ExampleStatus",
      "path" : "Examples/Status",
      "product_memberships" : [
        "ExampleStatus"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleHello",
      "module_type" : "SwiftTarget",
      "name" : "ExampleHello",
      "path" : "Examples/Hello",
      "product_memberships" : [
        "ExampleHello"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleFileServer",
      "module_type" : "SwiftTarget",
      "name" : "ExampleFileServer",
      "path" : "Examples/FileServer",
      "product_memberships" : [
        "ExampleFileServer"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleChat",
      "module_type" : "SwiftTarget",
      "name" : "ExampleChat",
      "path" : "Examples/Chat",
      "product_memberships" : [
        "ExampleChat"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "DemoServer",
      "module_type" : "SwiftTarget",
      "name" : "DemoServer",
      "path" : "Sources/DemoServer",
      "product_memberships" : [
        "DemoServer"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTTPDemo"
      ],
      "type" : "executable"
    }
  ],
  "tools_version" : "5.7"
}
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/39] Write ExampleStatus-entitlement.plist
[1/39] Write ExampleUpload-entitlement.plist
[2/39] Write sources
[3/39] Write ExampleFileServer-entitlement.plist
[3/39] Write sources
[3/39] Write ExampleHello-entitlement.plist
[6/39] Write ExampleTodoAPI-entitlement.plist
[6/39] Write ExampleChat-entitlement.plist
[6/39] Write sources
[16/39] Write DemoServer-entitlement.plist
[17/39] Write swift-version-2F0A5646E1D333AE.txt
[19/67] Emitting module NanoHTTP
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:247:22: warning: static property 'lock' is not concurrency-safe because non-'Sendable' type 'UnfairLock' may have shared mutable state; this is an error in the Swift 6 language mode
245 |   }
246 |
247 |   private static let lock = UnfairLock()
    |                      |- warning: static property 'lock' is not concurrency-safe because non-'Sendable' type 'UnfairLock' may have shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: add '@MainActor' to make static property 'lock' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
248 |   private static var cachedSecond = Int.min
249 |   private static var cachedText = ""
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:43:13: note: class 'UnfairLock' does not conform to the 'Sendable' protocol
  41 | /// A lock that costs next to nothing when nobody else holds it. The state of a server is
  42 | /// read several times for every request, by all connection threads.
  43 | final class UnfairLock {
     |             `- note: class 'UnfairLock' does not conform to the 'Sendable' protocol
  44 |   private let storage: UnsafeMutablePointer<os_unfair_lock>
  45 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:248:22: warning: static property 'cachedSecond' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
246 |
247 |   private static let lock = UnfairLock()
248 |   private static var cachedSecond = Int.min
    |                      |- warning: static property 'cachedSecond' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'cachedSecond' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'cachedSecond' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
249 |   private static var cachedText = ""
250 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:249:22: warning: static property 'cachedText' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
247 |   private static let lock = UnfairLock()
248 |   private static var cachedSecond = Int.min
249 |   private static var cachedText = ""
    |                      |- warning: static property 'cachedText' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'cachedText' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'cachedText' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
250 |
251 |   private static func format(_ second: Int) -> String {
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:77:22: warning: static property 'registrations' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 75 |   /// Guards the following variables.
 76 |   private static let lock = NSLock()
 77 |   private static var registrations = [Registration]()
    |                      |- warning: static property 'registrations' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'registrations' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'registrations' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 78 |   private static var watched = [Int32: Watched]()
 79 |   private static var lastID = 0
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:78:22: warning: static property 'watched' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 76 |   private static let lock = NSLock()
 77 |   private static var registrations = [Registration]()
 78 |   private static var watched = [Int32: Watched]()
    |                      |- warning: static property 'watched' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'watched' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'watched' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 79 |   private static var lastID = 0
 80 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:79:22: warning: static property 'lastID' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 77 |   private static var registrations = [Registration]()
 78 |   private static var watched = [Int32: Watched]()
 79 |   private static var lastID = 0
    |                      |- warning: static property 'lastID' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'lastID' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'lastID' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 80 |
 81 |   /// The queue that the callbacks run on, one at a time.
[20/70] Compiling NanoHTTP NanoHTTPError.swift
[21/70] Compiling NanoHTTP NanoHTTPMultipart.swift
[22/70] Compiling NanoHTTP NanoHTTPParser.swift
[23/70] Compiling NanoHTTP NanoWebSockets.swift
[24/70] Compiling NanoHTTP Renamed.swift
[25/70] Compiling NanoHTTP String+Extensions.swift
[26/70] Compiling NanoHTTP NanoHTTPConnection.swift
[27/70] Compiling NanoHTTP NanoHTTPCookie.swift
[28/70] Compiling NanoHTTP NanoHTTPDeferredResponse.swift
[29/70] Compiling NanoHTTP NanoMiddleware.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:77:22: warning: static property 'registrations' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 75 |   /// Guards the following variables.
 76 |   private static let lock = NSLock()
 77 |   private static var registrations = [Registration]()
    |                      |- warning: static property 'registrations' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'registrations' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'registrations' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 78 |   private static var watched = [Int32: Watched]()
 79 |   private static var lastID = 0
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:78:22: warning: static property 'watched' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 76 |   private static let lock = NSLock()
 77 |   private static var registrations = [Registration]()
 78 |   private static var watched = [Int32: Watched]()
    |                      |- warning: static property 'watched' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'watched' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'watched' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 79 |   private static var lastID = 0
 80 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:79:22: warning: static property 'lastID' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 77 |   private static var registrations = [Registration]()
 78 |   private static var watched = [Int32: Watched]()
 79 |   private static var lastID = 0
    |                      |- warning: static property 'lastID' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'lastID' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'lastID' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 80 |
 81 |   /// The queue that the callbacks run on, one at a time.
[30/70] Compiling NanoHTTP NanoNetworkInterface.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:77:22: warning: static property 'registrations' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 75 |   /// Guards the following variables.
 76 |   private static let lock = NSLock()
 77 |   private static var registrations = [Registration]()
    |                      |- warning: static property 'registrations' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'registrations' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'registrations' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 78 |   private static var watched = [Int32: Watched]()
 79 |   private static var lastID = 0
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:78:22: warning: static property 'watched' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 76 |   private static let lock = NSLock()
 77 |   private static var registrations = [Registration]()
 78 |   private static var watched = [Int32: Watched]()
    |                      |- warning: static property 'watched' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'watched' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'watched' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 79 |   private static var lastID = 0
 80 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:79:22: warning: static property 'lastID' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 77 |   private static var registrations = [Registration]()
 78 |   private static var watched = [Int32: Watched]()
 79 |   private static var lastID = 0
    |                      |- warning: static property 'lastID' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'lastID' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'lastID' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 80 |
 81 |   /// The queue that the callbacks run on, one at a time.
[31/70] Compiling NanoHTTP NanoProcess.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:77:22: warning: static property 'registrations' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 75 |   /// Guards the following variables.
 76 |   private static let lock = NSLock()
 77 |   private static var registrations = [Registration]()
    |                      |- warning: static property 'registrations' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'registrations' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'registrations' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 78 |   private static var watched = [Int32: Watched]()
 79 |   private static var lastID = 0
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:78:22: warning: static property 'watched' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 76 |   private static let lock = NSLock()
 77 |   private static var registrations = [Registration]()
 78 |   private static var watched = [Int32: Watched]()
    |                      |- warning: static property 'watched' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'watched' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'watched' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 79 |   private static var lastID = 0
 80 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoProcess.swift:79:22: warning: static property 'lastID' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 77 |   private static var registrations = [Registration]()
 78 |   private static var watched = [Int32: Watched]()
 79 |   private static var lastID = 0
    |                      |- warning: static property 'lastID' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'lastID' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'lastID' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 80 |
 81 |   /// The queue that the callbacks run on, one at a time.
[32/70] Compiling NanoHTTP NanoRequestPolicy.swift
[33/70] Compiling NanoHTTP NanoSocket.swift
[34/70] Compiling NanoHTTP NanoSocketError.swift
[35/70] Compiling NanoHTTP NanoHTTPResponseSerializer.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:247:22: warning: static property 'lock' is not concurrency-safe because non-'Sendable' type 'UnfairLock' may have shared mutable state; this is an error in the Swift 6 language mode
245 |   }
246 |
247 |   private static let lock = UnfairLock()
    |                      |- warning: static property 'lock' is not concurrency-safe because non-'Sendable' type 'UnfairLock' may have shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: add '@MainActor' to make static property 'lock' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
248 |   private static var cachedSecond = Int.min
249 |   private static var cachedText = ""
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:43:13: note: class 'UnfairLock' does not conform to the 'Sendable' protocol
  41 | /// A lock that costs next to nothing when nobody else holds it. The state of a server is
  42 | /// read several times for every request, by all connection threads.
  43 | final class UnfairLock {
     |             `- note: class 'UnfairLock' does not conform to the 'Sendable' protocol
  44 |   private let storage: UnsafeMutablePointer<os_unfair_lock>
  45 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:248:22: warning: static property 'cachedSecond' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
246 |
247 |   private static let lock = UnfairLock()
248 |   private static var cachedSecond = Int.min
    |                      |- warning: static property 'cachedSecond' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'cachedSecond' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'cachedSecond' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
249 |   private static var cachedText = ""
250 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:249:22: warning: static property 'cachedText' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
247 |   private static let lock = UnfairLock()
248 |   private static var cachedSecond = Int.min
249 |   private static var cachedText = ""
    |                      |- warning: static property 'cachedText' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'cachedText' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'cachedText' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
250 |
251 |   private static func format(_ second: Int) -> String {
[36/70] Compiling NanoHTTP NanoHTTPRouter.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:247:22: warning: static property 'lock' is not concurrency-safe because non-'Sendable' type 'UnfairLock' may have shared mutable state; this is an error in the Swift 6 language mode
245 |   }
246 |
247 |   private static let lock = UnfairLock()
    |                      |- warning: static property 'lock' is not concurrency-safe because non-'Sendable' type 'UnfairLock' may have shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: add '@MainActor' to make static property 'lock' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
248 |   private static var cachedSecond = Int.min
249 |   private static var cachedText = ""
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:43:13: note: class 'UnfairLock' does not conform to the 'Sendable' protocol
  41 | /// A lock that costs next to nothing when nobody else holds it. The state of a server is
  42 | /// read several times for every request, by all connection threads.
  43 | final class UnfairLock {
     |             `- note: class 'UnfairLock' does not conform to the 'Sendable' protocol
  44 |   private let storage: UnsafeMutablePointer<os_unfair_lock>
  45 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:248:22: warning: static property 'cachedSecond' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
246 |
247 |   private static let lock = UnfairLock()
248 |   private static var cachedSecond = Int.min
    |                      |- warning: static property 'cachedSecond' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'cachedSecond' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'cachedSecond' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
249 |   private static var cachedText = ""
250 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:249:22: warning: static property 'cachedText' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
247 |   private static let lock = UnfairLock()
248 |   private static var cachedSecond = Int.min
249 |   private static var cachedText = ""
    |                      |- warning: static property 'cachedText' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'cachedText' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'cachedText' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
250 |
251 |   private static func format(_ second: Int) -> String {
[37/70] Compiling NanoHTTP NanoHTTPSegmentRouter.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:247:22: warning: static property 'lock' is not concurrency-safe because non-'Sendable' type 'UnfairLock' may have shared mutable state; this is an error in the Swift 6 language mode
245 |   }
246 |
247 |   private static let lock = UnfairLock()
    |                      |- warning: static property 'lock' is not concurrency-safe because non-'Sendable' type 'UnfairLock' may have shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: add '@MainActor' to make static property 'lock' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
248 |   private static var cachedSecond = Int.min
249 |   private static var cachedText = ""
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:43:13: note: class 'UnfairLock' does not conform to the 'Sendable' protocol
  41 | /// A lock that costs next to nothing when nobody else holds it. The state of a server is
  42 | /// read several times for every request, by all connection threads.
  43 | final class UnfairLock {
     |             `- note: class 'UnfairLock' does not conform to the 'Sendable' protocol
  44 |   private let storage: UnsafeMutablePointer<os_unfair_lock>
  45 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:248:22: warning: static property 'cachedSecond' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
246 |
247 |   private static let lock = UnfairLock()
248 |   private static var cachedSecond = Int.min
    |                      |- warning: static property 'cachedSecond' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'cachedSecond' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'cachedSecond' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
249 |   private static var cachedText = ""
250 |
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPResponseSerializer.swift:249:22: warning: static property 'cachedText' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
247 |   private static let lock = UnfairLock()
248 |   private static var cachedSecond = Int.min
249 |   private static var cachedText = ""
    |                      |- warning: static property 'cachedText' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                      |- note: convert 'cachedText' to a 'let' constant to make 'Sendable' shared state immutable
    |                      |- note: add '@MainActor' to make static property 'cachedText' part of global actor 'MainActor'
    |                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
250 |
251 |   private static func format(_ second: Int) -> String {
[38/70] Compiling NanoHTTP NanoHTTPRequest.swift
[39/70] Compiling NanoHTTP NanoHTTPResponse.swift
[40/70] Compiling NanoHTTP NanoHTTPResponseBodyWriter.swift
[41/70] Compiling NanoHTTP NanoSocketSession.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoThreadPool.swift:120:9: warning: capture of 'self' with non-sendable type 'NanoThreadPool' in a '@Sendable' closure
 43 | /// the number of threads, unlike the dispatch queues, which stop starting work when too
 44 | /// many of their threads are blocked.
 45 | final class NanoThreadPool {
    |             `- note: class 'NanoThreadPool' does not conform to the 'Sendable' protocol
 46 |   private let name: String
 47 |   private let qos: QualityOfService
    :
118 |     if needsThread {
119 |       let thread = Thread { [self] in
120 |         self.serve()
    |         `- warning: capture of 'self' with non-sendable type 'NanoThreadPool' in a '@Sendable' closure
121 |       }
122 |       thread.name = self.name
[42/70] Compiling NanoHTTP NanoThreadPool.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoThreadPool.swift:120:9: warning: capture of 'self' with non-sendable type 'NanoThreadPool' in a '@Sendable' closure
 43 | /// the number of threads, unlike the dispatch queues, which stop starting work when too
 44 | /// many of their threads are blocked.
 45 | final class NanoThreadPool {
    |             `- note: class 'NanoThreadPool' does not conform to the 'Sendable' protocol
 46 |   private let name: String
 47 |   private let qos: QualityOfService
    :
118 |     if needsThread {
119 |       let thread = Thread { [self] in
120 |         self.serve()
    |         `- warning: capture of 'self' with non-sendable type 'NanoThreadPool' in a '@Sendable' closure
121 |       }
122 |       thread.name = self.name
[43/70] Compiling NanoHTTP NanoWebSocketHub.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoThreadPool.swift:120:9: warning: capture of 'self' with non-sendable type 'NanoThreadPool' in a '@Sendable' closure
 43 | /// the number of threads, unlike the dispatch queues, which stop starting work when too
 44 | /// many of their threads are blocked.
 45 | final class NanoThreadPool {
    |             `- note: class 'NanoThreadPool' does not conform to the 'Sendable' protocol
 46 |   private let name: String
 47 |   private let qos: QualityOfService
    :
118 |     if needsThread {
119 |       let thread = Thread { [self] in
120 |         self.serve()
    |         `- warning: capture of 'self' with non-sendable type 'NanoThreadPool' in a '@Sendable' closure
121 |       }
122 |       thread.name = self.name
[44/70] Compiling NanoHTTP NanoFile.swift
[45/70] Compiling NanoHTTP NanoFiles.swift
[46/70] Compiling NanoHTTP NanoHTTPBodyWriters.swift
[47/70] Compiling NanoHTTP NanoHTTPServer.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:457:32: warning: passing non-sendable parameter 'body' to function expecting a @Sendable closure
 454 |
 455 |   /// Runs `body` on a new thread.
 456 |   private static func spawn(named name: String, qos: QualityOfService, _ body: @escaping () -> Void) {
     |                                                                          `- note: parameter 'body' is implicitly non-sendable
 457 |     let thread = Thread(block: body)
     |                                `- warning: passing non-sendable parameter 'body' to function expecting a @Sendable closure
 458 |     thread.name = name
 459 |     thread.qualityOfService = qos
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:641:58: warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
 639 |       // Telling the client takes a while (it may still be sending); not on the accepting
 640 |       // thread.
 641 |       DispatchQueue.global(qos: .utility).async(execute: refuse)
     |                                                          `- warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
 642 |     }
 643 |     return false
[48/70] Compiling NanoHTTP NanoHTTPServerIO.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:457:32: warning: passing non-sendable parameter 'body' to function expecting a @Sendable closure
 454 |
 455 |   /// Runs `body` on a new thread.
 456 |   private static func spawn(named name: String, qos: QualityOfService, _ body: @escaping () -> Void) {
     |                                                                          `- note: parameter 'body' is implicitly non-sendable
 457 |     let thread = Thread(block: body)
     |                                `- warning: passing non-sendable parameter 'body' to function expecting a @Sendable closure
 458 |     thread.name = name
 459 |     thread.qualityOfService = qos
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:641:58: warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
 639 |       // Telling the client takes a while (it may still be sending); not on the accepting
 640 |       // thread.
 641 |       DispatchQueue.global(qos: .utility).async(execute: refuse)
     |                                                          `- warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
 642 |     }
 643 |     return false
[49/70] Compiling NanoHTTP NanoLogger.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:457:32: warning: passing non-sendable parameter 'body' to function expecting a @Sendable closure
 454 |
 455 |   /// Runs `body` on a new thread.
 456 |   private static func spawn(named name: String, qos: QualityOfService, _ body: @escaping () -> Void) {
     |                                                                          `- note: parameter 'body' is implicitly non-sendable
 457 |     let thread = Thread(block: body)
     |                                `- warning: passing non-sendable parameter 'body' to function expecting a @Sendable closure
 458 |     thread.name = name
 459 |     thread.qualityOfService = qos
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServerIO.swift:641:58: warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
 639 |       // Telling the client takes a while (it may still be sending); not on the accepting
 640 |       // thread.
 641 |       DispatchQueue.global(qos: .utility).async(execute: refuse)
     |                                                          `- warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
 642 |     }
 643 |     return false
[50/82] Compiling ExampleFileServer main.swift
[51/82] Emitting module ExampleFileServer
[51/82] Write Objects.LinkFileList
[53/82] Compiling NanoHTML HTMLResponse.swift
[54/82] Compiling ExampleHello main.swift
[55/82] Emitting module ExampleHello
[55/82] Write Objects.LinkFileList
[57/82] Compiling NanoHTML HTMLElements.swift
[58/82] Compiling NanoHTML HTMLElement.swift
[59/82] Compiling NanoHTML HTMLNode.swift
[60/82] Emitting module NanoHTML
[61/82] Compiling NanoHTML HTMLAttributes.swift
[62/82] Emitting module ExampleTodoAPI
[63/82] Compiling ExampleTodoAPI main.swift
[63/82] Write Objects.LinkFileList
[64/90] Linking ExampleHello
[65/90] Linking ExampleFileServer
[66/90] Applying ExampleHello
[66/90] Applying ExampleFileServer
[68/90] Linking ExampleTodoAPI
[69/90] Applying ExampleTodoAPI
[71/90] Emitting module ExampleChat
[72/90] Compiling ExampleChat main.swift
[72/90] Write Objects.LinkFileList
[74/90] Compiling ExampleStatus main.swift
[75/90] Emitting module ExampleStatus
[75/90] Write Objects.LinkFileList
[77/90] Emitting module ExampleUpload
[78/90] Compiling ExampleUpload main.swift
[78/90] Write Objects.LinkFileList
[80/90] Emitting module NanoHTTPDemo
[81/90] Compiling NanoHTTPDemo NanoHTTPDemo.swift
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTPDemo/NanoHTTPDemo.swift:172:7: warning: capture of 'server' with non-sendable type 'NanoHTTPServer' in a '@Sendable' closure
170 |   server["/close"] = { _ in
171 |     DispatchQueue.global().asyncAfter(deadline: .now().advanced(by: .seconds(1))) {
172 |       server.closeAndforgetAllConnections()
    |       `- warning: capture of 'server' with non-sendable type 'NanoHTTPServer' in a '@Sendable' closure
173 |     }
174 |     return .ok(.htmlBody("Open connections: \(server.openConnections)"))
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTP/NanoHTTPServer.swift:61:12: note: class 'NanoHTTPServer' does not conform to the 'Sendable' protocol
 59 | /// ``NanoHTTPServerIO/stop()``); this class adds routing, middleware and a handler for
 60 | /// unknown paths.
 61 | open class NanoHTTPServer: NanoHTTPServerIO {
    |            `- note: class 'NanoHTTPServer' does not conform to the 'Sendable' protocol
 62 |
 63 |   /// Registers handlers for one HTTP method: `server.get["/a", "/b"] = handler` registers
/Users/admin/builder/spi-builder-workspace/Sources/NanoHTTPDemo/NanoHTTPDemo.swift:38:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NanoHTTP'
 36 |
 37 | import Foundation
 38 | import NanoHTTP
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NanoHTTP'
 39 | import NanoHTML
 40 |
[81/92] Linking ExampleChat
[82/92] Applying ExampleChat
[83/92] Linking ExampleStatus
[84/92] Applying ExampleStatus
[86/92] Emitting module DemoServer
[87/92] Compiling DemoServer main.swift
[87/92] Linking ExampleUpload
[88/92] Write Objects.LinkFileList
[89/92] Applying ExampleUpload
[90/92] Linking DemoServer
[91/92] Applying DemoServer
Build complete! (9.02s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "NanoHTTP",
  "name" : "NanoHTTP",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    },
    {
      "name" : "ios",
      "version" : "15.0"
    },
    {
      "name" : "tvos",
      "version" : "15.0"
    }
  ],
  "products" : [
    {
      "name" : "NanoHTTP",
      "targets" : [
        "NanoHTTP"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NanoHTML",
      "targets" : [
        "NanoHTML"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NanoHTTPDemo",
      "targets" : [
        "NanoHTTPDemo"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "DemoServer",
      "targets" : [
        "DemoServer"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleUpload",
      "targets" : [
        "ExampleUpload"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleTodoAPI",
      "targets" : [
        "ExampleTodoAPI"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleStatus",
      "targets" : [
        "ExampleStatus"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleHello",
      "targets" : [
        "ExampleHello"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleFileServer",
      "targets" : [
        "ExampleFileServer"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "ExampleChat",
      "targets" : [
        "ExampleChat"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "NanoHTTPTests",
      "module_type" : "SwiftTarget",
      "name" : "NanoHTTPTests",
      "path" : "Tests/NanoHTTPTests",
      "sources" : [
        "BufferedReadingTests.swift",
        "CORSTests.swift",
        "ConfigurationTests.swift",
        "ConnectionSemanticsTests.swift",
        "CookieTests.swift",
        "DeferredResponseTests.swift",
        "FileServingTests.swift",
        "HTMLDSLTests.swift",
        "HTTPParserTests.swift",
        "HTTPProtocolTests.swift",
        "HTTPRouterTests.swift",
        "HandlerErrorTests.swift",
        "HeadAndOptionsTests.swift",
        "HostAndOriginTests.swift",
        "IOSafetyTests.swift",
        "LocalizedErrorTests.swift",
        "LoggerTests.swift",
        "MiddlewareTests.swift",
        "MimeTypeTests.swift",
        "MultipartParserTests.swift",
        "NanoProcessTests.swift",
        "PingServer.swift",
        "RequestParsingTests.swift",
        "RequestSemanticsTests.swift",
        "ResponseHelperTests.swift",
        "ResponseSerializerTests.swift",
        "RobustnessTests.swift",
        "RouterBehaviorTests.swift",
        "SecurityTests.swift",
        "ServerThreadingTests.swift",
        "SingleThreadTests.swift",
        "SocketSessionTests.swift",
        "StringExtensionsTests.swift",
        "Support/KnownIssue.swift",
        "Support/RawClient.swift",
        "Support/TestServer.swift",
        "ThreadPoolTests.swift",
        "TimeoutTests.swift",
        "WebSocketHubTests.swift",
        "WebSocketIntegrationTests.swift",
        "WebSocketTests.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "test"
    },
    {
      "c99name" : "NanoHTTPDemo",
      "module_type" : "SwiftTarget",
      "name" : "NanoHTTPDemo",
      "path" : "Sources/NanoHTTPDemo",
      "product_memberships" : [
        "NanoHTTPDemo",
        "DemoServer"
      ],
      "sources" : [
        "NanoHTTPDemo.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NanoHTTP",
      "module_type" : "SwiftTarget",
      "name" : "NanoHTTP",
      "path" : "Sources/NanoHTTP",
      "product_memberships" : [
        "NanoHTTP",
        "NanoHTML",
        "NanoHTTPDemo",
        "DemoServer",
        "ExampleUpload",
        "ExampleTodoAPI",
        "ExampleStatus",
        "ExampleHello",
        "ExampleFileServer",
        "ExampleChat"
      ],
      "sources" : [
        "NanoFile.swift",
        "NanoFiles.swift",
        "NanoHTTPBodyWriters.swift",
        "NanoHTTPConnection.swift",
        "NanoHTTPCookie.swift",
        "NanoHTTPDeferredResponse.swift",
        "NanoHTTPError.swift",
        "NanoHTTPMultipart.swift",
        "NanoHTTPParser.swift",
        "NanoHTTPRequest.swift",
        "NanoHTTPResponse.swift",
        "NanoHTTPResponseBodyWriter.swift",
        "NanoHTTPResponseSerializer.swift",
        "NanoHTTPRouter.swift",
        "NanoHTTPSegmentRouter.swift",
        "NanoHTTPServer.swift",
        "NanoHTTPServerIO.swift",
        "NanoLogger.swift",
        "NanoMiddleware.swift",
        "NanoNetworkInterface.swift",
        "NanoProcess.swift",
        "NanoRequestPolicy.swift",
        "NanoSocket.swift",
        "NanoSocketError.swift",
        "NanoSocketSession.swift",
        "NanoThreadPool.swift",
        "NanoWebSocketHub.swift",
        "NanoWebSockets.swift",
        "Renamed.swift",
        "String+Extensions.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NanoHTML",
      "module_type" : "SwiftTarget",
      "name" : "NanoHTML",
      "path" : "Sources/NanoHTML",
      "product_memberships" : [
        "NanoHTML",
        "NanoHTTPDemo",
        "DemoServer",
        "ExampleUpload",
        "ExampleStatus",
        "ExampleChat"
      ],
      "sources" : [
        "HTMLAttributes.swift",
        "HTMLElement.swift",
        "HTMLElements.swift",
        "HTMLNode.swift",
        "HTMLResponse.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ExampleUpload",
      "module_type" : "SwiftTarget",
      "name" : "ExampleUpload",
      "path" : "Examples/Upload",
      "product_memberships" : [
        "ExampleUpload"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleTodoAPI",
      "module_type" : "SwiftTarget",
      "name" : "ExampleTodoAPI",
      "path" : "Examples/TodoAPI",
      "product_memberships" : [
        "ExampleTodoAPI"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleStatus",
      "module_type" : "SwiftTarget",
      "name" : "ExampleStatus",
      "path" : "Examples/Status",
      "product_memberships" : [
        "ExampleStatus"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleHello",
      "module_type" : "SwiftTarget",
      "name" : "ExampleHello",
      "path" : "Examples/Hello",
      "product_memberships" : [
        "ExampleHello"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleFileServer",
      "module_type" : "SwiftTarget",
      "name" : "ExampleFileServer",
      "path" : "Examples/FileServer",
      "product_memberships" : [
        "ExampleFileServer"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ExampleChat",
      "module_type" : "SwiftTarget",
      "name" : "ExampleChat",
      "path" : "Examples/Chat",
      "product_memberships" : [
        "ExampleChat"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTML"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "DemoServer",
      "module_type" : "SwiftTarget",
      "name" : "DemoServer",
      "path" : "Sources/DemoServer",
      "product_memberships" : [
        "DemoServer"
      ],
      "sources" : [
        "main.swift"
      ],
      "target_dependencies" : [
        "NanoHTTP",
        "NanoHTTPDemo"
      ],
      "type" : "executable"
    }
  ],
  "tools_version" : "5.7"
}
Done.