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 InferSendableFromCapturesBuild 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.