The Swift Package Index logo.Swift Package Index

Build Information

Successful build of lcl-speedtest, reference main (1b5a79), with Swift 6.4 for macOS (SPM) on 21 Sep 2026 22:16:37 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Local-Connectivity-Lab/lcl-speedtest.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Local-Connectivity-Lab/lcl-speedtest
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 1b5a795 Update lcl-websocket to 1.1.1 (#11)
Cloned https://github.com/Local-Connectivity-Lab/lcl-speedtest.git
Revision (git rev-parse @):
1b5a79555025c0646cf88a8290c42d9c26e616b4
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/Local-Connectivity-Lab/lcl-speedtest.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.4
Building package at path:  $PWD
https://github.com/Local-Connectivity-Lab/lcl-speedtest.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 1167]
[Planning deferred tasks]
[Constructing 2529 / 2916]
[174 / 846] CNIOLinux
[221 / 846]
[234 / 852] NIOConcurrencyHelpers
[237 / 852] Atomics
[240 / 865]
[244 / 876] InternalCollectionsUtilities
[252 / 909] CNIOOpenBSD
[255 / 909] _NIOBase64
[262 / 909]
[274 / 946]
[280 / 946] CNIOBoringSSL
[284 / 946]
[285 / 946]
[291 / 946] CNIOBoringSSL
[294 / 946]
[297 / 946]
[303 / 946] Atomics
[309 / 946] CNIOBoringSSL
[314 / 946] CNIOBoringSSL
[316 / 946] CNIOBoringSSL
[317 / 946] CNIOBoringSSL
[320 / 946] CNIOBoringSSL
[323 / 946] Logging
[325 / 946] CNIOBoringSSL
[328 / 946] _NIODataStructures
[341 / 946] NIOConcurrencyHelpers
[358 / 946] CNIOBoringSSL
[362 / 946] CNIOBoringSSL
[368 / 946] CNIOBoringSSL
[372 / 946] CNIOBoringSSL
[375 / 946] CNIOBoringSSL
[376 / 946] CNIOBoringSSL
[381 / 946] CNIOBoringSSL
[384 / 946] CNIOBoringSSL
[385 / 946] CNIOBoringSSL
[386 / 946] CNIOBoringSSL
[392 / 946] CNIOBoringSSL
[393 / 946] CNIOBoringSSL
[395 / 946] CNIOBoringSSL
[399 / 946] CNIOBoringSSL
[404 / 946] CNIOBoringSSL
[407 / 946] CNIOBoringSSL
[410 / 946] CNIOBoringSSL
[411 / 946] CNIOBoringSSL
[414 / 946] CNIOBoringSSL
[417 / 946] CNIOBoringSSL
[418 / 946] CNIOBoringSSL
[422 / 946] CNIOBoringSSL
[423 / 946] CNIOBoringSSL
[426 / 946] CNIOBoringSSL
[428 / 946] CNIOBoringSSL
[431 / 946] CNIOBoringSSL
[433 / 946] CNIOBoringSSL
[438 / 946] CNIOBoringSSL
[446 / 946] CNIOBoringSSL
[454 / 946] CNIOBoringSSL
[465 / 946] CNIOBoringSSL
[473 / 946] CNIOBoringSSL
[474 / 946] CNIOBoringSSL
[475 / 946] CNIOBoringSSL
[480 / 946] CNIOBoringSSL
[482 / 946] CNIOBoringSSL
[485 / 946] CNIOBoringSSL
[492 / 946] CNIOBoringSSL
[495 / 946] CNIOBoringSSL
[498 / 946] CNIOBoringSSL
[502 / 946] CNIOBoringSSL
[504 / 946] CNIOBoringSSL
[506 / 946] CNIOBoringSSL
[508 / 946] CNIOBoringSSL
[510 / 946] CNIOBoringSSL
[516 / 946] CNIOBoringSSL
[518 / 946] CNIOBoringSSL
[521 / 946] CNIOBoringSSL
[528 / 946] CNIOBoringSSL
[538 / 946] CNIOBoringSSL
[542 / 946] CNIOBoringSSL
[547 / 946] CNIOBoringSSL
[551 / 946] CNIOBoringSSL
[552 / 946] CNIOBoringSSL
[555 / 946] CNIOBoringSSL
[562 / 946] CNIOBoringSSL
[572 / 946] CNIOBoringSSL
[577 / 946] CNIOBoringSSL
[579 / 946] CNIOBoringSSL
[587 / 946] CNIOBoringSSL
[588 / 946] CNIOBoringSSL
[589 / 946] CNIOBoringSSL
[593 / 946] CNIOBoringSSL
[597 / 946] CNIOBoringSSL
[598 / 946] CNIOBoringSSL
[602 / 946] CNIOBoringSSL
[607 / 946] CNIOBoringSSL
[609 / 946] CNIOBoringSSL
[614 / 946] CNIOBoringSSL
[616 / 946] CNIOBoringSSL
[620 / 946] CNIOBoringSSL
[623 / 946] CNIOBoringSSL
[627 / 946] CNIOBoringSSL
[631 / 946] CNIOBoringSSL
[636 / 946] CNIOBoringSSL
[645 / 946] CNIOBoringSSL
[654 / 946] CNIOBoringSSL
[660 / 946] CNIOBoringSSL
[664 / 946] CNIOBoringSSL
[667 / 946] CNIOBoringSSL
[672 / 946] CNIOBoringSSL
[676 / 946] CNIOBoringSSL
[684 / 946] CNIOBoringSSL
[693 / 946] CNIOBoringSSL
[703 / 946] CNIOBoringSSL
[704 / 946] CNIOBoringSSL
[705 / 946] CNIOBoringSSL
[711 / 946] CNIOBoringSSL
[713 / 946] CNIOBoringSSL
[715 / 946]
[725 / 946] _NIODataStructures
[733 / 946]
[735 / 946] NIOConcurrencyHelpers
[742 / 946]
[746 / 946] NIOConcurrencyHelpers-product
[749 / 946] CNIOPosix
[755 / 946] Logging
[759 / 946] Logging
[768 / 946] InternalCollectionsUtilities
[775 / 946] CNIOLinux
[787 / 956] CNIODarwin
[802 / 958]
[812 / 974]
[824 / 974] Atomics
[827 / 974]
[835 / 975]
[845 / 986] ContainersPreview
[849 / 986] ContainersPreview
[857 / 987] ContainersPreview
[867 / 998] CNIOBoringSSLShims
[871 / 998] CNIODarwin
[873 / 998] DequeModule
[876 / 998]
[876 / 998] DequeModule
[883 / 999] DequeModule
[885 / 999] NIOCore
[888 / 1016]
[890 / 1016]
[900 / 1016] NIOCore
[902 / 1016] NIOCore
[902 / 1016] CNIOAtomics
[902 / 1016] NIOCore
[902 / 1016] CNIOAtomics
[904 / 1016] NIOCore
[915 / 1019] NIOEmbedded
[919 / 1023] NIOEmbedded
[925 / 1023] NIOFoundationEssentialsCompat
[939 / 1055]
[942 / 1055]
[944 / 1055]
[945 / 1055]
[956 / 1055] NIOPosix
[957 / 1055] NIOFoundationEssentialsCompat
[959 / 1055] NIOFoundationEssentialsCompat
[965 / 1055]
[965 / 1055] NIOPosix
[972 / 1056] NIO
[976 / 1058] NIO
[986 / 1061] NIOTLS
[993 / 1079]
[999 / 1083] NIOTLS
[1007 / 1083] NIOTLS-product
[1016 / 1083] NIOSSL
[1019 / 1083] NIOFoundationCompat
[1027 / 1083] NIOHTTP1
[1030 / 1086] NIOFoundationCompat
[1031 / 1086] NIOHTTP1
[1033 / 1098]
[1041 / 1098] NIOWebSocket
[1046 / 1126] NIOWebSocket
[1049 / 1126] NIOWebSocket
[1062 / 1126] NIOTransportServices
[1065 / 1126] NIOWebSocket
[1067 / 1126] NIOTransportServices
[1078 / 1126] NIOTransportServices
[1080 / 1126] NIOTransportServices-product
[1082 / 1126] NIOSSL
[1091 / 1126] NIOSSL
[1094 / 1126] NIOSSL-product
[1095 / 1127]
[1100 / 1127] NIOWebSocket
[1109 / 1175]
[1116 / 1175]
[1121 / 1175]
[1126 / 1175]
[1128 / 1175]
[1132 / 1175]
[1136 / 1175]
[1138 / 1175]
[1139 / 1175]
[1151 / 1175] LCLWebSocket
[1158 / 1176] LCLWebSocket
[1160 / 1176] LCLSpeedtest
[1171 / 1187] LCLSpeedtest
[1172 / 1187] LCLSpeedtest
[1182 / 1188] LCLSpeedtest
[1183 / 1188] Demo-product
[1185 / 1190] Demo-product
[1188 / 1190] Demo-product
Build complete! (40.07 sec)
Fetching https://github.com/apple/swift-nio.git
Fetching https://github.com/Local-Connectivity-Lab/lcl-websocket.git
Fetching https://github.com/apple/swift-log.git
[1/637] Fetching lcl-websocket
[8/8769] Fetching lcl-websocket, swift-log
[8770/94834] Fetching lcl-websocket, swift-log, swift-nio
Fetched https://github.com/apple/swift-log.git (9.41s)
Fetched https://github.com/apple/swift-nio.git (9.41s)
Fetched https://github.com/Local-Connectivity-Lab/lcl-websocket.git (9.41s)
Computing version for https://github.com/Local-Connectivity-Lab/lcl-websocket.git
warning: 'lcl-websocket': /Package.swift:9:48: warning: 'v4' is deprecated: watchOS 9.0 is the oldest supported version [#DeprecatedDeclaration]
 7 |     name: "LCLWebSocket",
 8 |     platforms: [
 9 |         .macOS(.v10_15), .iOS(.v13), .watchOS(.v4), .tvOS(.v13), .visionOS(.v1),
   |                                                `- warning: 'v4' is deprecated: watchOS 9.0 is the oldest supported version [#DeprecatedDeclaration]
10 |     ],
11 |     products: [
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
Computed https://github.com/Local-Connectivity-Lab/lcl-websocket.git at 1.1.1 (10.00s)
Fetching https://github.com/apple/swift-nio-transport-services.git
Fetching https://github.com/apple/swift-nio-ssl.git
Fetching https://github.com/apple/swift-atomics.git
[1/1875] Fetching swift-atomics
[20/4738] Fetching swift-atomics, swift-nio-transport-services
[361/20803] Fetching swift-atomics, swift-nio-transport-services, swift-nio-ssl
Fetched https://github.com/apple/swift-nio-ssl.git (2.22s)
Fetched https://github.com/apple/swift-nio-transport-services.git (2.22s)
Fetched https://github.com/apple/swift-atomics.git (2.22s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.1 (2.81s)
Computing version for https://github.com/apple/swift-nio-transport-services.git
Computed https://github.com/apple/swift-nio-transport-services.git at 1.28.0 (0.57s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.15.1 (0.57s)
Computing version for https://github.com/apple/swift-nio-ssl.git
Computed https://github.com/apple/swift-nio-ssl.git at 2.37.5 (0.70s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.103.0 (0.65s)
Fetching https://github.com/apple/swift-system.git
Fetching https://github.com/apple/swift-collections.git
[1/6898] Fetching swift-system
[277/34552] Fetching swift-system, swift-collections
Fetched https://github.com/apple/swift-collections.git (3.39s)
Fetched https://github.com/apple/swift-system.git (3.39s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.6.0 (4.09s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.8.1 (0.59s)
Creating working copy for https://github.com/Local-Connectivity-Lab/lcl-websocket.git
Working copy of https://github.com/Local-Connectivity-Lab/lcl-websocket.git resolved at 1.1.1
Creating working copy for https://github.com/apple/swift-nio-ssl.git
Working copy of https://github.com/apple/swift-nio-ssl.git resolved at 2.37.5
Creating working copy for https://github.com/apple/swift-atomics.git
Working copy of https://github.com/apple/swift-atomics.git resolved at 1.3.1
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.15.1
Creating working copy for https://github.com/apple/swift-nio-transport-services.git
Working copy of https://github.com/apple/swift-nio-transport-services.git resolved at 1.28.0
Creating working copy for https://github.com/apple/swift-system.git
Working copy of https://github.com/apple/swift-system.git resolved at 1.8.1
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.6.0
Creating working copy for https://github.com/apple/swift-nio.git
Working copy of https://github.com/apple/swift-nio.git resolved at 2.103.0
warning: 'lcl-websocket': /Users/admin/builder/spi-builder-workspace/.build/checkouts/lcl-websocket/Package.swift:9:48: warning: 'v4' is deprecated: watchOS 9.0 is the oldest supported version [#DeprecatedDeclaration]
 7 |     name: "LCLWebSocket",
 8 |     platforms: [
 9 |         .macOS(.v10_15), .iOS(.v13), .watchOS(.v4), .tvOS(.v13), .visionOS(.v1),
   |                                                `- warning: 'v4' is deprecated: watchOS 9.0 is the oldest supported version [#DeprecatedDeclaration]
10 |     ],
11 |     products: [
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/UploadClient.swift:76:44: warning: capture of 'self' with non-Sendable type 'UploadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class UploadClient: SpeedTestable {
    |                      `- note: class 'UploadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
 74 |                         onFinish(
 75 |                             UploadClient.generateMeasurementProgress(
 76 |                                 startTime: self.startTime,
    |                                            `- warning: capture of 'self' with non-Sendable type 'UploadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 77 |                                 numBytes: self.totalBytes,
 78 |                                 direction: .upload
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/UploadClient.swift:89:44: warning: capture of 'self' with non-Sendable type 'UploadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class UploadClient: SpeedTestable {
    |                      `- note: class 'UploadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
 87 |                         onFinish(
 88 |                             UploadClient.generateMeasurementProgress(
 89 |                                 startTime: self.startTime,
    |                                            `- warning: capture of 'self' with non-Sendable type 'UploadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 90 |                                 numBytes: self.totalBytes,
 91 |                                 direction: .upload
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/UploadClient.swift:123:35: warning: capture of 'measurement' with non-Sendable type 'SpeedTestMeasurement' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
121 |             if let onMeasurement = self.onMeasurement {
122 |                 self.emitter.async {
123 |                     onMeasurement(measurement)
    |                                   `- warning: capture of 'measurement' with non-Sendable type 'SpeedTestMeasurement' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
124 |                 }
125 |             }
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/Models/Measurement.swift:91:15: note: consider making struct 'SpeedTestMeasurement' conform to the 'Sendable' protocol
 89 | }
 90 |
 91 | public struct SpeedTestMeasurement: Codable {
    |               `- note: consider making struct 'SpeedTestMeasurement' conform to the 'Sendable' protocol
 92 |     public var appInfo: AppInfo?
 93 |     public let bbrInfo: BBRInfo?
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/DownloadClient.swift:75:44: warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class DownloadClient: SpeedTestable {
    |                      `- note: class 'DownloadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
 73 |                         onFinish(
 74 |                             DownloadClient.generateMeasurementProgress(
 75 |                                 startTime: self.startTime,
    |                                            `- warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 76 |                                 numBytes: self.totalBytes,
 77 |                                 direction: .download
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/DownloadClient.swift:88:44: warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class DownloadClient: SpeedTestable {
    |                      `- note: class 'DownloadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
 86 |                         onFinish(
 87 |                             DownloadClient.generateMeasurementProgress(
 88 |                                 startTime: self.startTime,
    |                                            `- warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 89 |                                 numBytes: self.totalBytes,
 90 |                                 direction: .download
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/DownloadClient.swift:124:35: warning: capture of 'measurement' with non-Sendable type 'SpeedTestMeasurement' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
122 |             if let onMeasurement = self.onMeasurement {
123 |                 self.emitter.async {
124 |                     onMeasurement(measurement)
    |                                   `- warning: capture of 'measurement' with non-Sendable type 'SpeedTestMeasurement' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
125 |                 }
126 |             }
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/Models/Measurement.swift:91:15: note: consider making struct 'SpeedTestMeasurement' conform to the 'Sendable' protocol
 89 | }
 90 |
 91 | public struct SpeedTestMeasurement: Codable {
    |               `- note: consider making struct 'SpeedTestMeasurement' conform to the 'Sendable' protocol
 92 |     public var appInfo: AppInfo?
 93 |     public let bbrInfo: BBRInfo?
/Users/admin/builder/spi-builder-workspace/Sources/LCLSpeedtest/DownloadClient.swift:141:40: warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
 17 | import NIOWebSocket
 18 |
 19 | internal final class DownloadClient: SpeedTestable {
    |                      `- note: class 'DownloadClient' does not conform to the 'Sendable' protocol
 20 |     private let url: URL
 21 |     private let eventloopGroup: MultiThreadedEventLoopGroup
    :
139 |                     onProgress(
140 |                         DownloadClient.generateMeasurementProgress(
141 |                             startTime: self.startTime,
    |                                        `- warning: capture of 'self' with non-Sendable type 'DownloadClient' in a '@Sendable' closure [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures\SendableClosureCaptures]8;;\]
142 |                             numBytes: self.totalBytes,
143 |                             direction: .download
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-nio",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.81.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-nio.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "lcl-websocket",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.1.1",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Local-Connectivity-Lab/lcl-websocket.git"
    }
  ],
  "manifest_display_name" : "lcl-speedtest",
  "name" : "lcl-speedtest",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "ios",
      "version" : "14.0"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "LCLSpeedtest",
      "targets" : [
        "LCLSpeedtest"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Demo",
      "targets" : [
        "Demo"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "LCLSpeedtest",
      "module_type" : "SwiftTarget",
      "name" : "LCLSpeedtest",
      "path" : "Sources/LCLSpeedtest",
      "product_dependencies" : [
        "NIO",
        "NIOCore",
        "NIOPosix",
        "NIOConcurrencyHelpers",
        "Logging",
        "LCLWebSocket"
      ],
      "product_memberships" : [
        "LCLSpeedtest",
        "Demo"
      ],
      "sources" : [
        "Constants.swift",
        "DownloadClient.swift",
        "Errors.swift",
        "Models/Measurement.swift",
        "Models/TestServer.swift",
        "Models/TestType.swift",
        "Networking.swift",
        "SpeedTestClient.swift",
        "SpeedTestable.swift",
        "UploadClient.swift",
        "Utils/WebSocketClosCode+Extension.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Demo",
      "module_type" : "SwiftTarget",
      "name" : "Demo",
      "path" : "Sources/Demo",
      "product_memberships" : [
        "Demo"
      ],
      "sources" : [
        "Client.swift"
      ],
      "target_dependencies" : [
        "LCLSpeedtest"
      ],
      "type" : "executable"
    }
  ],
  "tools_version" : "5.9"
}
Done.