The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of CircuitBreaker, reference 5.1.0 (bd4255), with Swift 6.1 for macOS (SPM) on 27 Apr 2025 01:19:41 UTC.

Swift 6 data race errors: 3

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Kitura/CircuitBreaker.git
Reference: 5.1.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Kitura/CircuitBreaker
 * tag               5.1.0      -> FETCH_HEAD
HEAD is now at bd42557 Swift 5.2 is now the minimum supported version.  Update github org to Kitura (#57)
Cloned https://github.com/Kitura/CircuitBreaker.git
Revision (git rev-parse @):
bd4255762e48cc3748a448d197f1297a4ba705f7
SUCCESS checkout https://github.com/Kitura/CircuitBreaker.git at 5.1.0
Fetching https://github.com/Kitura/LoggerAPI.git
[1/771] Fetching loggerapi
Fetched https://github.com/Kitura/LoggerAPI.git from cache (0.89s)
Computing version for https://github.com/Kitura/LoggerAPI.git
Computed https://github.com/Kitura/LoggerAPI.git at 1.9.200 (1.52s)
Fetching https://github.com/apple/swift-log.git from cache
Fetched https://github.com/apple/swift-log.git from cache (0.65s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.3 (1.14s)
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.3
Creating working copy for https://github.com/Kitura/LoggerAPI.git
Working copy of https://github.com/Kitura/LoggerAPI.git resolved at 1.9.200
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "circuitbreaker",
      "name": "CircuitBreaker",
      "url": "https://github.com/Kitura/CircuitBreaker.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/CircuitBreaker",
      "dependencies": [
        {
          "identity": "loggerapi",
          "name": "LoggerAPI",
          "url": "https://github.com/Kitura/LoggerAPI.git",
          "version": "1.9.200",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/LoggerAPI",
          "dependencies": [
            {
              "identity": "swift-log",
              "name": "swift-log",
              "url": "https://github.com/apple/swift-log.git",
              "version": "1.6.3",
              "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-log",
              "dependencies": [
              ]
            }
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/Kitura/CircuitBreaker.git
[1/1733] Fetching circuitbreaker
Fetched https://github.com/Kitura/CircuitBreaker.git from cache (1.00s)
Fetching https://github.com/Kitura/LoggerAPI.git from cache
Fetched https://github.com/Kitura/LoggerAPI.git from cache (0.43s)
Computing version for https://github.com/Kitura/LoggerAPI.git
Computed https://github.com/Kitura/LoggerAPI.git at 1.9.200 (0.49s)
Fetching https://github.com/apple/swift-log.git from cache
Fetched https://github.com/apple/swift-log.git from cache (0.50s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.3 (0.56s)
Creating working copy for https://github.com/Kitura/CircuitBreaker.git
Working copy of https://github.com/Kitura/CircuitBreaker.git resolved at 5.1.0 (bd42557)
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.3
Creating working copy for https://github.com/Kitura/LoggerAPI.git
Working copy of https://github.com/Kitura/LoggerAPI.git resolved at 1.9.200
warning: '.resolve-product-dependencies': dependency 'circuitbreaker' is not used by any target
Found 1 product dependencies
  - LoggerAPI
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/Kitura/CircuitBreaker.git
https://github.com/Kitura/CircuitBreaker.git
{
  "dependencies" : [
    {
      "identity" : "loggerapi",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.9.200",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kitura/LoggerAPI.git"
    }
  ],
  "manifest_display_name" : "CircuitBreaker",
  "name" : "CircuitBreaker",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "CircuitBreaker",
      "targets" : [
        "CircuitBreaker"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CircuitBreakerTests",
      "module_type" : "SwiftTarget",
      "name" : "CircuitBreakerTests",
      "path" : "Tests/CircuitBreakerTests",
      "sources" : [
        "CircuitBreakerTests.swift",
        "StatsTests.swift"
      ],
      "target_dependencies" : [
        "CircuitBreaker"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CircuitBreaker",
      "module_type" : "SwiftTarget",
      "name" : "CircuitBreaker",
      "path" : "Sources/CircuitBreaker",
      "product_dependencies" : [
        "LoggerAPI"
      ],
      "product_memberships" : [
        "CircuitBreaker"
      ],
      "sources" : [
        "BreakerError.swift",
        "Bulkhead.swift",
        "CircuitBreaker.swift",
        "Collection.swift",
        "Invocation.swift",
        "Monitor.swift",
        "MonitorCollection.swift",
        "Snapshot.swift",
        "Stats.swift",
        "Utils.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.1"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/4] Write sources
[3/4] Write swift-version-2F0A5646E1D333AE.txt
[5/9] Compiling Logging LogHandler.swift
[6/9] Compiling Logging MetadataProvider.swift
[7/9] Compiling Logging Locks.swift
[8/9] Emitting module Logging
[9/9] Compiling Logging Logging.swift
[10/11] Compiling LoggerAPI Logger.swift
[11/11] Emitting module LoggerAPI
[12/21] Compiling CircuitBreaker MonitorCollection.swift
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/MonitorCollection.swift:21:23: warning: static property 'sharedInstance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |   internal var values: [StatsMonitor] = []
20 |
21 |   internal static var sharedInstance = MonitorCollection()
   |                       |- warning: static property 'sharedInstance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'sharedInstance' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'sharedInstance' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 |
23 |   private init() {}
[13/22] Compiling CircuitBreaker Invocation.swift
[14/22] Compiling CircuitBreaker Monitor.swift
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Monitor.swift:34:32: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
32 |
33 | /// Protocol identifying a statistics provider.
34 | public protocol StatsProvider: class {
   |                                `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
35 |
36 |   /// Registers a monitor for a referenced CircuitBreaker.
[15/22] Compiling CircuitBreaker Stats.swift
[16/22] Compiling CircuitBreaker Snapshot.swift
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:69:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 67 |
 68 |   /// Type of data object
 69 |   let type: String = "HystrixCommand"
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'type' case to silence this warning
    |       `- note: make the property mutable instead
 70 |
 71 |   // Untracked Stats
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:72:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 70 |
 71 |   // Untracked Stats
 72 |   let rollingCountBadRequests: Int = 0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'rollingCountBadRequests' case to silence this warning
    |       `- note: make the property mutable instead
 73 |   let rollingCountCollapsedRequests: Int = 0
 74 |   let rollingCountExceptionsThrown: Int =  0
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:73:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 71 |   // Untracked Stats
 72 |   let rollingCountBadRequests: Int = 0
 73 |   let rollingCountCollapsedRequests: Int = 0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'rollingCountCollapsedRequests' case to silence this warning
    |       `- note: make the property mutable instead
 74 |   let rollingCountExceptionsThrown: Int =  0
 75 |   let rollingCountFallbackFailure: Int = 0
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:74:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 72 |   let rollingCountBadRequests: Int = 0
 73 |   let rollingCountCollapsedRequests: Int = 0
 74 |   let rollingCountExceptionsThrown: Int =  0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'rollingCountExceptionsThrown' case to silence this warning
    |       `- note: make the property mutable instead
 75 |   let rollingCountFallbackFailure: Int = 0
 76 |   let rollingCountFallbackRejection: Int = 0
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:75:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 73 |   let rollingCountCollapsedRequests: Int = 0
 74 |   let rollingCountExceptionsThrown: Int =  0
 75 |   let rollingCountFallbackFailure: Int = 0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'rollingCountFallbackFailure' case to silence this warning
    |       `- note: make the property mutable instead
 76 |   let rollingCountFallbackRejection: Int = 0
 77 |   let rollingCountFallbackSuccess: Int = 0
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:76:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 74 |   let rollingCountExceptionsThrown: Int =  0
 75 |   let rollingCountFallbackFailure: Int = 0
 76 |   let rollingCountFallbackRejection: Int = 0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'rollingCountFallbackRejection' case to silence this warning
    |       `- note: make the property mutable instead
 77 |   let rollingCountFallbackSuccess: Int = 0
 78 |   let rollingCountResponsesFromCache: Int = 0
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:77:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 75 |   let rollingCountFallbackFailure: Int = 0
 76 |   let rollingCountFallbackRejection: Int = 0
 77 |   let rollingCountFallbackSuccess: Int = 0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'rollingCountFallbackSuccess' case to silence this warning
    |       `- note: make the property mutable instead
 78 |   let rollingCountResponsesFromCache: Int = 0
 79 |   let rollingCountSemaphoreRejected: Int = 0
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:78:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 76 |   let rollingCountFallbackRejection: Int = 0
 77 |   let rollingCountFallbackSuccess: Int = 0
 78 |   let rollingCountResponsesFromCache: Int = 0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'rollingCountResponsesFromCache' case to silence this warning
    |       `- note: make the property mutable instead
 79 |   let rollingCountSemaphoreRejected: Int = 0
 80 |   let rollingCountThreadPoolRejected: Int = 0
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:79:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 77 |   let rollingCountFallbackSuccess: Int = 0
 78 |   let rollingCountResponsesFromCache: Int = 0
 79 |   let rollingCountSemaphoreRejected: Int = 0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'rollingCountSemaphoreRejected' case to silence this warning
    |       `- note: make the property mutable instead
 80 |   let rollingCountThreadPoolRejected: Int = 0
 81 |   let currentConcurrentExecutionCount: Int = 0
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:80:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 78 |   let rollingCountResponsesFromCache: Int = 0
 79 |   let rollingCountSemaphoreRejected: Int = 0
 80 |   let rollingCountThreadPoolRejected: Int = 0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'rollingCountThreadPoolRejected' case to silence this warning
    |       `- note: make the property mutable instead
 81 |   let currentConcurrentExecutionCount: Int = 0
 82 |   let propertyValue_circuitBreakerRequestVolumeThreshold: Int = 0 //json.waitThreshold
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:81:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 79 |   let rollingCountSemaphoreRejected: Int = 0
 80 |   let rollingCountThreadPoolRejected: Int = 0
 81 |   let currentConcurrentExecutionCount: Int = 0
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'currentConcurrentExecutionCount' case to silence this warning
    |       `- note: make the property mutable instead
 82 |   let propertyValue_circuitBreakerRequestVolumeThreshold: Int = 0 //json.waitThreshold
 83 |   let propertyValue_circuitBreakerSleepWindowInMilliseconds: Int = 0 //json.circuitDuration
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:82:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 80 |   let rollingCountThreadPoolRejected: Int = 0
 81 |   let currentConcurrentExecutionCount: Int = 0
 82 |   let propertyValue_circuitBreakerRequestVolumeThreshold: Int = 0 //json.waitThreshold
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_circuitBreakerRequestVolumeThreshold' case to silence this warning
    |       `- note: make the property mutable instead
 83 |   let propertyValue_circuitBreakerSleepWindowInMilliseconds: Int = 0 //json.circuitDuration
 84 |   let propertyValue_circuitBreakerErrorThresholdPercentage: Int = 0 //json.threshold
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:83:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 81 |   let currentConcurrentExecutionCount: Int = 0
 82 |   let propertyValue_circuitBreakerRequestVolumeThreshold: Int = 0 //json.waitThreshold
 83 |   let propertyValue_circuitBreakerSleepWindowInMilliseconds: Int = 0 //json.circuitDuration
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_circuitBreakerSleepWindowInMilliseconds' case to silence this warning
    |       `- note: make the property mutable instead
 84 |   let propertyValue_circuitBreakerErrorThresholdPercentage: Int = 0 //json.threshold
 85 |   let propertyValue_circuitBreakerForceOpen: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:84:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 82 |   let propertyValue_circuitBreakerRequestVolumeThreshold: Int = 0 //json.waitThreshold
 83 |   let propertyValue_circuitBreakerSleepWindowInMilliseconds: Int = 0 //json.circuitDuration
 84 |   let propertyValue_circuitBreakerErrorThresholdPercentage: Int = 0 //json.threshold
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_circuitBreakerErrorThresholdPercentage' case to silence this warning
    |       `- note: make the property mutable instead
 85 |   let propertyValue_circuitBreakerForceOpen: Bool = false
 86 |   let propertyValue_circuitBreakerForceClosed: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:85:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 83 |   let propertyValue_circuitBreakerSleepWindowInMilliseconds: Int = 0 //json.circuitDuration
 84 |   let propertyValue_circuitBreakerErrorThresholdPercentage: Int = 0 //json.threshold
 85 |   let propertyValue_circuitBreakerForceOpen: Bool = false
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_circuitBreakerForceOpen' case to silence this warning
    |       `- note: make the property mutable instead
 86 |   let propertyValue_circuitBreakerForceClosed: Bool = false
 87 |   let propertyValue_circuitBreakerEnabled: Bool = true
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:86:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 84 |   let propertyValue_circuitBreakerErrorThresholdPercentage: Int = 0 //json.threshold
 85 |   let propertyValue_circuitBreakerForceOpen: Bool = false
 86 |   let propertyValue_circuitBreakerForceClosed: Bool = false
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_circuitBreakerForceClosed' case to silence this warning
    |       `- note: make the property mutable instead
 87 |   let propertyValue_circuitBreakerEnabled: Bool = true
 88 |   let propertyValue_executionIsolationStrategy: String = "THREAD"
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:87:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 85 |   let propertyValue_circuitBreakerForceOpen: Bool = false
 86 |   let propertyValue_circuitBreakerForceClosed: Bool = false
 87 |   let propertyValue_circuitBreakerEnabled: Bool = true
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_circuitBreakerEnabled' case to silence this warning
    |       `- note: make the property mutable instead
 88 |   let propertyValue_executionIsolationStrategy: String = "THREAD"
 89 |   let propertyValue_executionIsolationThreadTimeoutInMilliseconds: Int = 800
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:88:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 86 |   let propertyValue_circuitBreakerForceClosed: Bool = false
 87 |   let propertyValue_circuitBreakerEnabled: Bool = true
 88 |   let propertyValue_executionIsolationStrategy: String = "THREAD"
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_executionIsolationStrategy' case to silence this warning
    |       `- note: make the property mutable instead
 89 |   let propertyValue_executionIsolationThreadTimeoutInMilliseconds: Int = 800
 90 |   let propertyValue_executionIsolationThreadInterruptOnTimeout: Bool = true
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:89:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 87 |   let propertyValue_circuitBreakerEnabled: Bool = true
 88 |   let propertyValue_executionIsolationStrategy: String = "THREAD"
 89 |   let propertyValue_executionIsolationThreadTimeoutInMilliseconds: Int = 800
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_executionIsolationThreadTimeoutInMilliseconds' case to silence this warning
    |       `- note: make the property mutable instead
 90 |   let propertyValue_executionIsolationThreadInterruptOnTimeout: Bool = true
 91 |   let propertyValue_executionIsolationThreadPoolKeyOverride: String? = nil
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:90:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 88 |   let propertyValue_executionIsolationStrategy: String = "THREAD"
 89 |   let propertyValue_executionIsolationThreadTimeoutInMilliseconds: Int = 800
 90 |   let propertyValue_executionIsolationThreadInterruptOnTimeout: Bool = true
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_executionIsolationThreadInterruptOnTimeout' case to silence this warning
    |       `- note: make the property mutable instead
 91 |   let propertyValue_executionIsolationThreadPoolKeyOverride: String? = nil
 92 |   let propertyValue_executionIsolationSemaphoreMaxConcurrentRequests: Int = 20 //
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:91:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 89 |   let propertyValue_executionIsolationThreadTimeoutInMilliseconds: Int = 800
 90 |   let propertyValue_executionIsolationThreadInterruptOnTimeout: Bool = true
 91 |   let propertyValue_executionIsolationThreadPoolKeyOverride: String? = nil
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_executionIsolationThreadPoolKeyOverride' case to silence this warning
    |       `- note: make the property mutable instead
 92 |   let propertyValue_executionIsolationSemaphoreMaxConcurrentRequests: Int = 20 //
 93 |   let propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests: Int = 10 //
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:92:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 90 |   let propertyValue_executionIsolationThreadInterruptOnTimeout: Bool = true
 91 |   let propertyValue_executionIsolationThreadPoolKeyOverride: String? = nil
 92 |   let propertyValue_executionIsolationSemaphoreMaxConcurrentRequests: Int = 20 //
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_executionIsolationSemaphoreMaxConcurrentRequests' case to silence this warning
    |       `- note: make the property mutable instead
 93 |   let propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests: Int = 10 //
 94 |   let propertyValue_metricsRollingStatisticalWindowInMilliseconds: Int = 10000 //
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:93:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 91 |   let propertyValue_executionIsolationThreadPoolKeyOverride: String? = nil
 92 |   let propertyValue_executionIsolationSemaphoreMaxConcurrentRequests: Int = 20 //
 93 |   let propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests: Int = 10 //
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests' case to silence this warning
    |       `- note: make the property mutable instead
 94 |   let propertyValue_metricsRollingStatisticalWindowInMilliseconds: Int = 10000 //
 95 |   let propertyValue_requestCacheEnabled: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:94:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 92 |   let propertyValue_executionIsolationSemaphoreMaxConcurrentRequests: Int = 20 //
 93 |   let propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests: Int = 10 //
 94 |   let propertyValue_metricsRollingStatisticalWindowInMilliseconds: Int = 10000 //
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_metricsRollingStatisticalWindowInMilliseconds' case to silence this warning
    |       `- note: make the property mutable instead
 95 |   let propertyValue_requestCacheEnabled: Bool = false
 96 |   let propertyValue_requestLogEnabled: Bool = false
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:95:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 93 |   let propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests: Int = 10 //
 94 |   let propertyValue_metricsRollingStatisticalWindowInMilliseconds: Int = 10000 //
 95 |   let propertyValue_requestCacheEnabled: Bool = false
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_requestCacheEnabled' case to silence this warning
    |       `- note: make the property mutable instead
 96 |   let propertyValue_requestLogEnabled: Bool = false
 97 |   let reportingHosts: Int = 1
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:96:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 94 |   let propertyValue_metricsRollingStatisticalWindowInMilliseconds: Int = 10000 //
 95 |   let propertyValue_requestCacheEnabled: Bool = false
 96 |   let propertyValue_requestLogEnabled: Bool = false
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'propertyValue_requestLogEnabled' case to silence this warning
    |       `- note: make the property mutable instead
 97 |   let reportingHosts: Int = 1
 98 |
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Snapshot.swift:97:7: warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
 95 |   let propertyValue_requestCacheEnabled: Bool = false
 96 |   let propertyValue_requestLogEnabled: Bool = false
 97 |   let reportingHosts: Int = 1
    |       |- warning: immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
    |       |- note: set the initial value via the initializer or explicitly define a CodingKeys enum including a 'reportingHosts' case to silence this warning
    |       `- note: make the property mutable instead
 98 |
 99 |   /// Initialize a snapshot of the current statistics.
[17/22] Compiling CircuitBreaker Bulkhead.swift
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Bulkhead.swift:34:13: warning: capture of 'self' with non-sendable type 'Bulkhead?' in a '@Sendable' closure
19 |
20 | /// Bulkhead
21 | class Bulkhead {
   |       `- note: class 'Bulkhead' does not conform to the 'Sendable' protocol
22 |     private let serialQueue: DispatchQueue
23 |     private let concurrentQueue: DispatchQueue
   :
32 |     func enqueue(task: @escaping () -> Void ) {
33 |         serialQueue.async { [weak self] in
34 |             self?.semaphore.wait()
   |             `- warning: capture of 'self' with non-sendable type 'Bulkhead?' in a '@Sendable' closure
35 |             self?.concurrentQueue.async {
36 |                 task()
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Bulkhead.swift:36:17: warning: capture of 'task' with non-sendable type '() -> Void' in a '@Sendable' closure
34 |             self?.semaphore.wait()
35 |             self?.concurrentQueue.async {
36 |                 task()
   |                 |- warning: capture of 'task' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
37 |                 self?.semaphore.signal()
38 |             }
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Bulkhead.swift:36:17: warning: capture of 'task' with non-sendable type '() -> Void' in a '@Sendable' closure
34 |             self?.semaphore.wait()
35 |             self?.concurrentQueue.async {
36 |                 task()
   |                 |- warning: capture of 'task' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
37 |                 self?.semaphore.signal()
38 |             }
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Bulkhead.swift:37:17: warning: capture of 'self' with non-sendable type 'Bulkhead?' in a '@Sendable' closure
19 |
20 | /// Bulkhead
21 | class Bulkhead {
   |       `- note: class 'Bulkhead' does not conform to the 'Sendable' protocol
22 |     private let serialQueue: DispatchQueue
23 |     private let concurrentQueue: DispatchQueue
   :
35 |             self?.concurrentQueue.async {
36 |                 task()
37 |                 self?.semaphore.signal()
   |                 `- warning: capture of 'self' with non-sendable type 'Bulkhead?' in a '@Sendable' closure
38 |             }
39 |         }
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Bulkhead.swift:37:17: warning: reference to captured var 'self' in concurrently-executing code
35 |             self?.concurrentQueue.async {
36 |                 task()
37 |                 self?.semaphore.signal()
   |                 `- warning: reference to captured var 'self' in concurrently-executing code
38 |             }
39 |         }
[18/22] Compiling CircuitBreaker Collection.swift
[19/22] Emitting module CircuitBreaker
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/CircuitBreaker.swift:43:39: warning: generic parameter 'A' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 36 | /// For a more complete example see the
 37 | /// [CircuitBreaker README](https://github.com/Kitura/CircuitBreaker).
 38 | public class CircuitBreaker<A, B> {
    |                             `- note: 'A' previously declared here
 39 |
 40 |   // MARK: Closure Aliases
 41 |
 42 |   /// The context function that runs using the given arguments of generic type A.
 43 |   public typealias AnyContextFunction<A> = (Invocation<A, B>) -> Void
    |                                       `- warning: generic parameter 'A' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 44 |
 45 |   /// The fallback function that runs when the invocation fails.
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/CircuitBreaker.swift:46:32: warning: generic parameter 'B' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 36 | /// For a more complete example see the
 37 | /// [CircuitBreaker README](https://github.com/Kitura/CircuitBreaker).
 38 | public class CircuitBreaker<A, B> {
    |                                `- note: 'B' previously declared here
 39 |
 40 |   // MARK: Closure Aliases
    :
 44 |
 45 |   /// The fallback function that runs when the invocation fails.
 46 |   public typealias AnyFallback<B> = (BreakerError, B) -> Void
    |                                `- warning: generic parameter 'B' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 47 |
 48 |   // MARK: Public Fields
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/Monitor.swift:34:32: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
32 |
33 | /// Protocol identifying a statistics provider.
34 | public protocol StatsProvider: class {
   |                                `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
35 |
36 |   /// Registers a monitor for a referenced CircuitBreaker.
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/MonitorCollection.swift:21:23: warning: static property 'sharedInstance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
19 |   internal var values: [StatsMonitor] = []
20 |
21 |   internal static var sharedInstance = MonitorCollection()
   |                       |- warning: static property 'sharedInstance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'sharedInstance' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'sharedInstance' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 |
23 |   private init() {}
[20/22] Compiling CircuitBreaker CircuitBreaker.swift
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/CircuitBreaker.swift:43:39: warning: generic parameter 'A' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 36 | /// For a more complete example see the
 37 | /// [CircuitBreaker README](https://github.com/Kitura/CircuitBreaker).
 38 | public class CircuitBreaker<A, B> {
    |                             `- note: 'A' previously declared here
 39 |
 40 |   // MARK: Closure Aliases
 41 |
 42 |   /// The context function that runs using the given arguments of generic type A.
 43 |   public typealias AnyContextFunction<A> = (Invocation<A, B>) -> Void
    |                                       `- warning: generic parameter 'A' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 44 |
 45 |   /// The fallback function that runs when the invocation fails.
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/CircuitBreaker.swift:46:32: warning: generic parameter 'B' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 36 | /// For a more complete example see the
 37 | /// [CircuitBreaker README](https://github.com/Kitura/CircuitBreaker).
 38 | public class CircuitBreaker<A, B> {
    |                                `- note: 'B' previously declared here
 39 |
 40 |   // MARK: Closure Aliases
    :
 44 |
 45 |   /// The fallback function that runs when the invocation fails.
 46 |   public typealias AnyFallback<B> = (BreakerError, B) -> Void
    |                                `- warning: generic parameter 'B' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 47 |
 48 |   // MARK: Public Fields
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/CircuitBreaker.swift:253:7: warning: capture of 'self' with non-sendable type 'CircuitBreaker<A, B>?' in a '@Sendable' closure
 36 | /// For a more complete example see the
 37 | /// [CircuitBreaker README](https://github.com/Kitura/CircuitBreaker).
 38 | public class CircuitBreaker<A, B> {
    |              `- note: generic class 'CircuitBreaker' does not conform to the 'Sendable' protocol
 39 |
 40 |   // MARK: Closure Aliases
    :
251 |   private func setTimeout(closure: @escaping () -> Void) {
252 |     queue.asyncAfter(deadline: .now() + .milliseconds(self.timeout)) { [weak self] in
253 |       self?.breakerStats.trackTimeouts()
    |       `- warning: capture of 'self' with non-sendable type 'CircuitBreaker<A, B>?' in a '@Sendable' closure
254 |       closure()
255 |     }
/Users/admin/builder/spi-builder-workspace/Sources/CircuitBreaker/CircuitBreaker.swift:254:7: warning: capture of 'closure' with non-sendable type '() -> Void' in a '@Sendable' closure
252 |     queue.asyncAfter(deadline: .now() + .milliseconds(self.timeout)) { [weak self] in
253 |       self?.breakerStats.trackTimeouts()
254 |       closure()
    |       |- warning: capture of 'closure' with non-sendable type '() -> Void' in a '@Sendable' closure
    |       `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
255 |     }
256 |   }
[21/22] Compiling CircuitBreaker BreakerError.swift
[22/22] Compiling CircuitBreaker Utils.swift
Build complete! (6.42s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "loggerapi",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.9.200",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kitura/LoggerAPI.git"
    }
  ],
  "manifest_display_name" : "CircuitBreaker",
  "name" : "CircuitBreaker",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "CircuitBreaker",
      "targets" : [
        "CircuitBreaker"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CircuitBreakerTests",
      "module_type" : "SwiftTarget",
      "name" : "CircuitBreakerTests",
      "path" : "Tests/CircuitBreakerTests",
      "sources" : [
        "CircuitBreakerTests.swift",
        "StatsTests.swift"
      ],
      "target_dependencies" : [
        "CircuitBreaker"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CircuitBreaker",
      "module_type" : "SwiftTarget",
      "name" : "CircuitBreaker",
      "path" : "Sources/CircuitBreaker",
      "product_dependencies" : [
        "LoggerAPI"
      ],
      "product_memberships" : [
        "CircuitBreaker"
      ],
      "sources" : [
        "BreakerError.swift",
        "Bulkhead.swift",
        "CircuitBreaker.swift",
        "Collection.swift",
        "Invocation.swift",
        "Monitor.swift",
        "MonitorCollection.swift",
        "Snapshot.swift",
        "Stats.swift",
        "Utils.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.1"
}
Done.