The Swift Package Index logo.Swift Package Index

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

Build Information

Successful build of Mobius, reference 0.6.0 (f1d568), with Swift 6.0 for macOS (SPM) on 25 Feb 2025 21:30:33 UTC.

Swift 6 data race errors: 3

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.2.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.60.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/spotify/Mobius.swift.git
Reference: 0.6.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/spotify/Mobius.swift
 * tag               0.6.0      -> FETCH_HEAD
HEAD is now at f1d5683 Update SwiftLint file_header configuration (#213)
Cloned https://github.com/spotify/Mobius.swift.git
Revision (git rev-parse @):
f1d5683e1d05615b88eb767252555bdb74c6b3e8
SUCCESS checkout https://github.com/spotify/Mobius.swift.git at 0.6.0
Fetching https://github.com/mattgallagher/CwlPreconditionTesting.git
Fetching https://github.com/Quick/Nimble
Fetching https://github.com/Quick/Quick
Fetching https://github.com/mattgallagher/CwlCatchException.git
Fetching https://github.com/pointfreeco/swift-case-paths
[1/1257] Fetching cwlpreconditiontesting
[39/1712] Fetching cwlpreconditiontesting, cwlcatchexception
[194/6070] Fetching cwlpreconditiontesting, cwlcatchexception, swift-case-paths
[1944/20813] Fetching cwlpreconditiontesting, cwlcatchexception, swift-case-paths, quick
[2294/40364] Fetching cwlpreconditiontesting, cwlcatchexception, swift-case-paths, quick, nimble
Fetched https://github.com/mattgallagher/CwlPreconditionTesting.git from cache (1.48s)
Fetched https://github.com/Quick/Quick from cache (1.48s)
[20063/24364] Fetching cwlcatchexception, swift-case-paths, nimble
Fetched https://github.com/mattgallagher/CwlCatchException.git from cache (1.80s)
Fetched https://github.com/Quick/Nimble from cache (1.80s)
Fetched https://github.com/pointfreeco/swift-case-paths from cache (1.80s)
Computing version for https://github.com/Quick/Quick
Computed https://github.com/Quick/Quick at 5.0.1 (0.57s)
Computing version for https://github.com/Quick/Nimble
Computed https://github.com/Quick/Nimble at 10.0.0 (0.56s)
Computing version for https://github.com/pointfreeco/swift-case-paths
Computed https://github.com/pointfreeco/swift-case-paths at 0.10.1 (0.57s)
Computing version for https://github.com/mattgallagher/CwlPreconditionTesting.git
Computed https://github.com/mattgallagher/CwlPreconditionTesting.git at 2.1.0 (0.55s)
Computing version for https://github.com/mattgallagher/CwlCatchException.git
Computed https://github.com/mattgallagher/CwlCatchException.git at 2.0.0 (0.56s)
Creating working copy for https://github.com/pointfreeco/swift-case-paths
Working copy of https://github.com/pointfreeco/swift-case-paths resolved at 0.10.1
Creating working copy for https://github.com/Quick/Quick
Working copy of https://github.com/Quick/Quick resolved at 5.0.1
Creating working copy for https://github.com/mattgallagher/CwlPreconditionTesting.git
Working copy of https://github.com/mattgallagher/CwlPreconditionTesting.git resolved at 2.1.0
Creating working copy for https://github.com/Quick/Nimble
Working copy of https://github.com/Quick/Nimble resolved at 10.0.0
Creating working copy for https://github.com/mattgallagher/CwlCatchException.git
Working copy of https://github.com/mattgallagher/CwlCatchException.git resolved at 2.0.0
========================================
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": "mobius.swift",
      "name": "Mobius",
      "url": "https://github.com/spotify/Mobius.swift.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Mobius.swift",
      "dependencies": [
        {
          "identity": "swift-case-paths",
          "name": "swift-case-paths",
          "url": "https://github.com/pointfreeco/swift-case-paths",
          "version": "0.10.1",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-case-paths",
          "dependencies": [
          ]
        },
        {
          "identity": "nimble",
          "name": "Nimble",
          "url": "https://github.com/Quick/Nimble",
          "version": "10.0.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Nimble",
          "dependencies": [
            {
              "identity": "cwlpreconditiontesting",
              "name": "CwlPreconditionTesting",
              "url": "https://github.com/mattgallagher/CwlPreconditionTesting.git",
              "version": "2.2.2",
              "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/CwlPreconditionTesting",
              "dependencies": [
                {
                  "identity": "cwlcatchexception",
                  "name": "CwlCatchException",
                  "url": "https://github.com/mattgallagher/CwlCatchException.git",
                  "version": "2.2.1",
                  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/CwlCatchException",
                  "dependencies": [
                  ]
                }
              ]
            }
          ]
        },
        {
          "identity": "quick",
          "name": "Quick",
          "url": "https://github.com/Quick/Quick",
          "version": "5.0.1",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Quick",
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/spotify/Mobius.swift.git
[1/5044] Fetching mobius.swift
Fetched https://github.com/spotify/Mobius.swift.git from cache (1.03s)
Fetching https://github.com/Quick/Quick from cache
Fetching https://github.com/Quick/Nimble from cache
Fetching https://github.com/pointfreeco/swift-case-paths from cache
Fetched https://github.com/Quick/Quick from cache (0.67s)
Fetched https://github.com/pointfreeco/swift-case-paths from cache (0.67s)
Fetched https://github.com/Quick/Nimble from cache (0.67s)
Computing version for https://github.com/Quick/Quick
Computed https://github.com/Quick/Quick at 5.0.1 (0.02s)
Computing version for https://github.com/Quick/Nimble
Computed https://github.com/Quick/Nimble at 10.0.0 (0.02s)
Fetching https://github.com/mattgallagher/CwlPreconditionTesting.git from cache
Fetched https://github.com/mattgallagher/CwlPreconditionTesting.git from cache (0.45s)
Computing version for https://github.com/pointfreeco/swift-case-paths
Computed https://github.com/pointfreeco/swift-case-paths at 0.10.1 (0.03s)
Computing version for https://github.com/mattgallagher/CwlPreconditionTesting.git
Computed https://github.com/mattgallagher/CwlPreconditionTesting.git at 2.2.2 (0.55s)
Fetching https://github.com/mattgallagher/CwlCatchException.git from cache
Fetched https://github.com/mattgallagher/CwlCatchException.git from cache (0.46s)
Computing version for https://github.com/mattgallagher/CwlCatchException.git
Computed https://github.com/mattgallagher/CwlCatchException.git at 2.2.1 (0.55s)
Creating working copy for https://github.com/mattgallagher/CwlPreconditionTesting.git
Working copy of https://github.com/mattgallagher/CwlPreconditionTesting.git resolved at 2.2.2
Creating working copy for https://github.com/Quick/Nimble
Working copy of https://github.com/Quick/Nimble resolved at 10.0.0
Creating working copy for https://github.com/mattgallagher/CwlCatchException.git
Working copy of https://github.com/mattgallagher/CwlCatchException.git resolved at 2.2.1
Creating working copy for https://github.com/Quick/Quick
Working copy of https://github.com/Quick/Quick resolved at 5.0.1
Creating working copy for https://github.com/pointfreeco/swift-case-paths
Working copy of https://github.com/pointfreeco/swift-case-paths resolved at 0.10.1
Creating working copy for https://github.com/spotify/Mobius.swift.git
Working copy of https://github.com/spotify/Mobius.swift.git resolved at 0.6.0 (f1d5683)
warning: '.resolve-product-dependencies': dependency 'mobius.swift' is not used by any target
Found 3 product dependencies
  - swift-case-paths
  - Nimble
  - Quick
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/spotify/Mobius.swift.git
https://github.com/spotify/Mobius.swift.git
{
  "dependencies" : [
    {
      "identity" : "swift-case-paths",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.10.1",
            "upper_bound" : "0.11.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/pointfreeco/swift-case-paths"
    },
    {
      "identity" : "nimble",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "10.0.0",
            "upper_bound" : "11.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Quick/Nimble"
    },
    {
      "identity" : "quick",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "5.0.1",
            "upper_bound" : "6.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Quick/Quick"
    }
  ],
  "manifest_display_name" : "Mobius",
  "name" : "Mobius",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "10.0"
    },
    {
      "name" : "macos",
      "version" : "10.12"
    },
    {
      "name" : "tvos",
      "version" : "10.0"
    },
    {
      "name" : "watchos",
      "version" : "3.0"
    }
  ],
  "products" : [
    {
      "name" : "MobiusCore",
      "targets" : [
        "MobiusCore"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MobiusExtras",
      "targets" : [
        "MobiusExtras"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MobiusNimble",
      "targets" : [
        "MobiusNimble"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MobiusTest",
      "targets" : [
        "MobiusTest"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "MobiusThrowableAssertion",
      "module_type" : "ClangTarget",
      "name" : "MobiusThrowableAssertion",
      "path" : "MobiusThrowableAssertion/Source",
      "sources" : [
        "MobiusThrowableAssertion.m"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MobiusTestTests",
      "module_type" : "SwiftTarget",
      "name" : "MobiusTestTests",
      "path" : "MobiusTest/Test",
      "product_dependencies" : [
        "Quick",
        "Nimble"
      ],
      "sources" : [
        "DebugDiffTests.swift",
        "FirstMatchersTests.swift",
        "InitSpecTests.swift",
        "NextMatchersTests.swift",
        "TestUtil.swift",
        "UpdateSpecTests.swift"
      ],
      "target_dependencies" : [
        "MobiusTest"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MobiusTest",
      "module_type" : "SwiftTarget",
      "name" : "MobiusTest",
      "path" : "MobiusTest/Source",
      "product_memberships" : [
        "MobiusNimble",
        "MobiusTest"
      ],
      "sources" : [
        "DebugDiff.swift",
        "FirstMatchers.swift",
        "InitSpec.swift",
        "MatcherUtils.swift",
        "NextMatchers.swift",
        "SimpleDiff.swift",
        "UpdateSpec.swift"
      ],
      "target_dependencies" : [
        "MobiusCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MobiusNimbleTests",
      "module_type" : "SwiftTarget",
      "name" : "MobiusNimbleTests",
      "path" : "MobiusNimble/Test",
      "product_dependencies" : [
        "Quick"
      ],
      "sources" : [
        "NimbleFirstMatchersTests.swift",
        "NimbleNextMatchersTests.swift",
        "TestUtil.swift"
      ],
      "target_dependencies" : [
        "MobiusNimble"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MobiusNimble",
      "module_type" : "SwiftTarget",
      "name" : "MobiusNimble",
      "path" : "MobiusNimble/Source",
      "product_dependencies" : [
        "Nimble"
      ],
      "product_memberships" : [
        "MobiusNimble"
      ],
      "sources" : [
        "NimbleFirstMatchers.swift",
        "NimbleNextMatchers.swift"
      ],
      "target_dependencies" : [
        "MobiusCore",
        "MobiusTest"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MobiusExtrasTests",
      "module_type" : "SwiftTarget",
      "name" : "MobiusExtrasTests",
      "path" : "MobiusExtras/Test",
      "product_dependencies" : [
        "Nimble",
        "Quick"
      ],
      "sources" : [
        "ConnectableClassTests.swift",
        "ConnectableContramapTests.swift",
        "ConnectableMapTests.swift",
        "CopyableTests.swift",
        "EventSource+ExtensionsTests.swift",
        "WikiTutorialTest.swift"
      ],
      "target_dependencies" : [
        "MobiusCore",
        "MobiusExtras",
        "MobiusThrowableAssertion"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MobiusExtras",
      "module_type" : "SwiftTarget",
      "name" : "MobiusExtras",
      "path" : "MobiusExtras/Source",
      "product_memberships" : [
        "MobiusExtras"
      ],
      "sources" : [
        "BeginnerLoop.swift",
        "ConnectableClass.swift",
        "ConnectableContramap.swift",
        "ConnectableMap.swift",
        "Copyable.swift",
        "EventSourceMap.swift",
        "SimpleLogger.swift"
      ],
      "target_dependencies" : [
        "MobiusCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MobiusCoreTests",
      "module_type" : "SwiftTarget",
      "name" : "MobiusCoreTests",
      "path" : "MobiusCore/Test",
      "product_dependencies" : [
        "Nimble",
        "Quick"
      ],
      "sources" : [
        "AnonymousDisposableTests.swift",
        "AnyConnectionTests.swift",
        "AnyMobiusLoggerTests.swift",
        "AsyncDispatchQueueConnectableTests.swift",
        "CompositeDisposableTests.swift",
        "ConnectablePublisherTests.swift",
        "EffectHandlers/AnyEffectHandlerTests.swift",
        "EffectHandlers/CallbackTests.swift",
        "EffectHandlers/EffectHandlerTests.swift",
        "EffectHandlers/EffectRouterDSLTests.swift",
        "EffectHandlers/EffectRouterTests.swift",
        "EffectHandlers/EnumRouteTests.swift",
        "EventRouterDisposalLogicalRaceRegressionTest.swift",
        "EventSources/AnyEventSourceTests.swift",
        "EventSources/CompositeEventSourceBuilderTests.swift",
        "FirstTests.swift",
        "InitializationTests.swift",
        "LoggingInitiateTests.swift",
        "LoggingUpdateTests.swift",
        "MobiusControllerTests.swift",
        "MobiusHooksTests.swift",
        "MobiusIntegrationTests.swift",
        "MobiusLoopTests.swift",
        "NextTests.swift",
        "NonReentrancyTests.swift",
        "Task+DisposableTests.swift",
        "TestingErrorHandler.swift",
        "TestingUtil.swift",
        "WorkBagTests.swift"
      ],
      "target_dependencies" : [
        "MobiusCore",
        "MobiusThrowableAssertion"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MobiusCore",
      "module_type" : "SwiftTarget",
      "name" : "MobiusCore",
      "path" : "MobiusCore/Source",
      "product_dependencies" : [
        "CasePaths"
      ],
      "product_memberships" : [
        "MobiusCore",
        "MobiusExtras",
        "MobiusNimble",
        "MobiusTest"
      ],
      "sources" : [
        "AsyncDispatchQueueConnectable.swift",
        "AsyncStartStopStateMachine.swift",
        "ConcurrentAccessDetector.swift",
        "Connectable.swift",
        "ConnectablePublisher.swift",
        "Connection.swift",
        "Consumer.swift",
        "Disposables/AnonymousDisposable.swift",
        "Disposables/CompositeDisposable.swift",
        "Disposables/Disposable.swift",
        "Disposables/Task+Disposable.swift",
        "EffectHandlers/EffectCallback.swift",
        "EffectHandlers/EffectExecutor.swift",
        "EffectHandlers/EffectHandler.swift",
        "EffectHandlers/EffectRouter.swift",
        "EffectHandlers/EffectRouterDSL.swift",
        "EffectHandlers/EnumRoute.swift",
        "EffectHandlers/ThreadSafeConnectable.swift",
        "EventSources/AnyEventSource.swift",
        "EventSources/CompositeEventSourceBuilder.swift",
        "EventSources/EventSource.swift",
        "First.swift",
        "Lock.swift",
        "LoggingAdaptors.swift",
        "Mobius.swift",
        "MobiusController.swift",
        "MobiusHooks.swift",
        "MobiusLogger.swift",
        "MobiusLoop.swift",
        "Next.swift",
        "WorkBag.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.0"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.2.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/13] Write sources
[8/13] Write swift-version-5BDAB9E9C0126B9D.txt
[9/18] Compiling CwlMachBadInstructionHandler mach_excServer.c
[10/18] Compiling MobiusThrowableAssertion MobiusThrowableAssertion.m
[11/18] Compiling CwlMachBadInstructionHandler CwlMachBadInstructionHandler.m
[12/18] Compiling CwlCatchExceptionSupport CwlCatchException.m
[14/20] Compiling CasePaths Operators.swift
[15/20] Compiling CasePaths EnumReflection.swift
[16/20] Compiling CasePaths CasePaths.swift
[17/20] Emitting module CasePaths
[18/20] Compiling CasePaths CasePath.swift
[19/20] Emitting module CwlCatchException
[20/20] Compiling CwlCatchException CwlCatchException.swift
[21/53] Compiling MobiusCore ConnectablePublisher.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[22/53] Compiling MobiusCore Connection.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[23/53] Compiling MobiusCore Consumer.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[24/56] Compiling MobiusCore CompositeEventSourceBuilder.swift
[25/56] Compiling MobiusCore EventSource.swift
[26/56] Compiling MobiusCore First.swift
[27/56] Compiling CwlPreconditionTesting CwlDarwinDefinitions.swift
[28/56] Compiling MobiusCore Task+Disposable.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[29/56] Compiling MobiusCore EffectCallback.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[30/56] Compiling MobiusCore EffectExecutor.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[31/56] Emitting module MobiusCore
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[32/56] Compiling CwlPreconditionTesting CwlBadInstructionException.swift
[33/56] Emitting module CwlPreconditionTesting
[34/56] Compiling CwlPreconditionTesting CwlCatchBadInstruction.swift
[35/56] Compiling MobiusCore AsyncDispatchQueueConnectable.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:50:21: warning: capture of 'disposalStatus' with non-sendable type 'Synchronized<Bool>' in a `@Sendable` closure
48 |                 acceptQueue.async {
49 |                     // Prevents forwarding if the connection has since been disposed.
50 |                     disposalStatus.read { disposed in
   |                     `- warning: capture of 'disposalStatus' with non-sendable type 'Synchronized<Bool>' in a `@Sendable` closure
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Lock.swift:19:13: note: generic class 'Synchronized' does not conform to the 'Sendable' protocol
17 | }
18 |
19 | final class Synchronized<Value> {
   |             `- note: generic class 'Synchronized' does not conform to the 'Sendable' protocol
20 |     private let lock = DispatchQueue(label: "Mobius synchronized storage")
21 |     private var storage: Value
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:25: warning: capture of 'connection' with non-sendable type 'Connection<Input>' in a `@Sendable` closure
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                         `- warning: capture of 'connection' with non-sendable type 'Connection<Input>' in a `@Sendable` closure
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:43: warning: capture of 'input' with non-sendable type 'Input' in a `@Sendable` closure
 9 | /// first switching to the provided `acceptQueue`. In other words, the real `accept` method will always be executed
10 | /// asynchronously on the provided queue.
11 | final class AsyncDispatchQueueConnectable<Input, Output>: Connectable {
   |                                           `- note: consider making generic parameter 'Input' conform to the 'Sendable' protocol
12 |     private let underlyingConnectable: AnyConnectable<Input, Output>
13 |     private let acceptQueue: DispatchQueue
   :
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                                           `- warning: capture of 'input' with non-sendable type 'Input' in a `@Sendable` closure
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:25: warning: capture of 'connection' with non-sendable type 'Connection<Input>' in an isolated closure; this is an error in the Swift 6 language mode
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                         `- warning: capture of 'connection' with non-sendable type 'Connection<Input>' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:43: warning: capture of 'input' with non-sendable type 'Input' in an isolated closure; this is an error in the Swift 6 language mode
 9 | /// first switching to the provided `acceptQueue`. In other words, the real `accept` method will always be executed
10 | /// asynchronously on the provided queue.
11 | final class AsyncDispatchQueueConnectable<Input, Output>: Connectable {
   |                                           `- note: consider making generic parameter 'Input' conform to the 'Sendable' protocol
12 |     private let underlyingConnectable: AnyConnectable<Input, Output>
13 |     private let acceptQueue: DispatchQueue
   :
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                                           `- warning: capture of 'input' with non-sendable type 'Input' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     }
54 |                 }
[36/56] Compiling MobiusCore AsyncStartStopStateMachine.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:50:21: warning: capture of 'disposalStatus' with non-sendable type 'Synchronized<Bool>' in a `@Sendable` closure
48 |                 acceptQueue.async {
49 |                     // Prevents forwarding if the connection has since been disposed.
50 |                     disposalStatus.read { disposed in
   |                     `- warning: capture of 'disposalStatus' with non-sendable type 'Synchronized<Bool>' in a `@Sendable` closure
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Lock.swift:19:13: note: generic class 'Synchronized' does not conform to the 'Sendable' protocol
17 | }
18 |
19 | final class Synchronized<Value> {
   |             `- note: generic class 'Synchronized' does not conform to the 'Sendable' protocol
20 |     private let lock = DispatchQueue(label: "Mobius synchronized storage")
21 |     private var storage: Value
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:25: warning: capture of 'connection' with non-sendable type 'Connection<Input>' in a `@Sendable` closure
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                         `- warning: capture of 'connection' with non-sendable type 'Connection<Input>' in a `@Sendable` closure
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:43: warning: capture of 'input' with non-sendable type 'Input' in a `@Sendable` closure
 9 | /// first switching to the provided `acceptQueue`. In other words, the real `accept` method will always be executed
10 | /// asynchronously on the provided queue.
11 | final class AsyncDispatchQueueConnectable<Input, Output>: Connectable {
   |                                           `- note: consider making generic parameter 'Input' conform to the 'Sendable' protocol
12 |     private let underlyingConnectable: AnyConnectable<Input, Output>
13 |     private let acceptQueue: DispatchQueue
   :
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                                           `- warning: capture of 'input' with non-sendable type 'Input' in a `@Sendable` closure
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:25: warning: capture of 'connection' with non-sendable type 'Connection<Input>' in an isolated closure; this is an error in the Swift 6 language mode
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                         `- warning: capture of 'connection' with non-sendable type 'Connection<Input>' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:43: warning: capture of 'input' with non-sendable type 'Input' in an isolated closure; this is an error in the Swift 6 language mode
 9 | /// first switching to the provided `acceptQueue`. In other words, the real `accept` method will always be executed
10 | /// asynchronously on the provided queue.
11 | final class AsyncDispatchQueueConnectable<Input, Output>: Connectable {
   |                                           `- note: consider making generic parameter 'Input' conform to the 'Sendable' protocol
12 |     private let underlyingConnectable: AnyConnectable<Input, Output>
13 |     private let acceptQueue: DispatchQueue
   :
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                                           `- warning: capture of 'input' with non-sendable type 'Input' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     }
54 |                 }
[37/56] Compiling MobiusCore ConcurrentAccessDetector.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:50:21: warning: capture of 'disposalStatus' with non-sendable type 'Synchronized<Bool>' in a `@Sendable` closure
48 |                 acceptQueue.async {
49 |                     // Prevents forwarding if the connection has since been disposed.
50 |                     disposalStatus.read { disposed in
   |                     `- warning: capture of 'disposalStatus' with non-sendable type 'Synchronized<Bool>' in a `@Sendable` closure
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Lock.swift:19:13: note: generic class 'Synchronized' does not conform to the 'Sendable' protocol
17 | }
18 |
19 | final class Synchronized<Value> {
   |             `- note: generic class 'Synchronized' does not conform to the 'Sendable' protocol
20 |     private let lock = DispatchQueue(label: "Mobius synchronized storage")
21 |     private var storage: Value
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:25: warning: capture of 'connection' with non-sendable type 'Connection<Input>' in a `@Sendable` closure
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                         `- warning: capture of 'connection' with non-sendable type 'Connection<Input>' in a `@Sendable` closure
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:43: warning: capture of 'input' with non-sendable type 'Input' in a `@Sendable` closure
 9 | /// first switching to the provided `acceptQueue`. In other words, the real `accept` method will always be executed
10 | /// asynchronously on the provided queue.
11 | final class AsyncDispatchQueueConnectable<Input, Output>: Connectable {
   |                                           `- note: consider making generic parameter 'Input' conform to the 'Sendable' protocol
12 |     private let underlyingConnectable: AnyConnectable<Input, Output>
13 |     private let acceptQueue: DispatchQueue
   :
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                                           `- warning: capture of 'input' with non-sendable type 'Input' in a `@Sendable` closure
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:25: warning: capture of 'connection' with non-sendable type 'Connection<Input>' in an isolated closure; this is an error in the Swift 6 language mode
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                         `- warning: capture of 'connection' with non-sendable type 'Connection<Input>' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:43: warning: capture of 'input' with non-sendable type 'Input' in an isolated closure; this is an error in the Swift 6 language mode
 9 | /// first switching to the provided `acceptQueue`. In other words, the real `accept` method will always be executed
10 | /// asynchronously on the provided queue.
11 | final class AsyncDispatchQueueConnectable<Input, Output>: Connectable {
   |                                           `- note: consider making generic parameter 'Input' conform to the 'Sendable' protocol
12 |     private let underlyingConnectable: AnyConnectable<Input, Output>
13 |     private let acceptQueue: DispatchQueue
   :
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                                           `- warning: capture of 'input' with non-sendable type 'Input' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     }
54 |                 }
[38/56] Compiling MobiusCore Connectable.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:50:21: warning: capture of 'disposalStatus' with non-sendable type 'Synchronized<Bool>' in a `@Sendable` closure
48 |                 acceptQueue.async {
49 |                     // Prevents forwarding if the connection has since been disposed.
50 |                     disposalStatus.read { disposed in
   |                     `- warning: capture of 'disposalStatus' with non-sendable type 'Synchronized<Bool>' in a `@Sendable` closure
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Lock.swift:19:13: note: generic class 'Synchronized' does not conform to the 'Sendable' protocol
17 | }
18 |
19 | final class Synchronized<Value> {
   |             `- note: generic class 'Synchronized' does not conform to the 'Sendable' protocol
20 |     private let lock = DispatchQueue(label: "Mobius synchronized storage")
21 |     private var storage: Value
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:25: warning: capture of 'connection' with non-sendable type 'Connection<Input>' in a `@Sendable` closure
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                         `- warning: capture of 'connection' with non-sendable type 'Connection<Input>' in a `@Sendable` closure
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:43: warning: capture of 'input' with non-sendable type 'Input' in a `@Sendable` closure
 9 | /// first switching to the provided `acceptQueue`. In other words, the real `accept` method will always be executed
10 | /// asynchronously on the provided queue.
11 | final class AsyncDispatchQueueConnectable<Input, Output>: Connectable {
   |                                           `- note: consider making generic parameter 'Input' conform to the 'Sendable' protocol
12 |     private let underlyingConnectable: AnyConnectable<Input, Output>
13 |     private let acceptQueue: DispatchQueue
   :
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                                           `- warning: capture of 'input' with non-sendable type 'Input' in a `@Sendable` closure
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:25: warning: capture of 'connection' with non-sendable type 'Connection<Input>' in an isolated closure; this is an error in the Swift 6 language mode
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                         `- warning: capture of 'connection' with non-sendable type 'Connection<Input>' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     }
54 |                 }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncDispatchQueueConnectable.swift:52:43: warning: capture of 'input' with non-sendable type 'Input' in an isolated closure; this is an error in the Swift 6 language mode
 9 | /// first switching to the provided `acceptQueue`. In other words, the real `accept` method will always be executed
10 | /// asynchronously on the provided queue.
11 | final class AsyncDispatchQueueConnectable<Input, Output>: Connectable {
   |                                           `- note: consider making generic parameter 'Input' conform to the 'Sendable' protocol
12 |     private let underlyingConnectable: AnyConnectable<Input, Output>
13 |     private let acceptQueue: DispatchQueue
   :
50 |                     disposalStatus.read { disposed in
51 |                         guard !disposed else { return }
52 |                         connection.accept(input)
   |                                           `- warning: capture of 'input' with non-sendable type 'Input' in an isolated closure; this is an error in the Swift 6 language mode
53 |                     }
54 |                 }
[39/56] Compiling MobiusCore EnumRoute.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[40/56] Compiling MobiusCore ThreadSafeConnectable.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[41/56] Compiling MobiusCore AnyEventSource.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[42/56] Compiling MobiusCore EffectHandler.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/EffectHandlers/EffectRouter.swift:121:37: warning: capture of 'connection' with non-sendable type 'Connection<EffectParameters>' in a `@Sendable` closure
119 |                             if let queue = queue {
120 |                                 queue.async {
121 |                                     connection.accept(parameters)
    |                                     `- warning: capture of 'connection' with non-sendable type 'Connection<EffectParameters>' in a `@Sendable` closure
122 |                                 }
123 |                             } else {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/EffectHandlers/EffectRouter.swift:121:55: warning: capture of 'parameters' with non-sendable type 'EffectParameters' in a `@Sendable` closure
106 |     let connect: (@escaping Consumer<Output>) -> ConnectedRoute<Input>
107 |
108 |     init<EffectParameters, Conn: Connectable>(
    |          `- note: consider making generic parameter 'EffectParameters' conform to the 'Sendable' protocol
109 |         extractParameters: @escaping (Input) -> EffectParameters?,
110 |         connectable: Conn,
    :
119 |                             if let queue = queue {
120 |                                 queue.async {
121 |                                     connection.accept(parameters)
    |                                                       `- warning: capture of 'parameters' with non-sendable type 'EffectParameters' in a `@Sendable` closure
122 |                                 }
123 |                             } else {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[43/56] Compiling MobiusCore EffectRouter.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/EffectHandlers/EffectRouter.swift:121:37: warning: capture of 'connection' with non-sendable type 'Connection<EffectParameters>' in a `@Sendable` closure
119 |                             if let queue = queue {
120 |                                 queue.async {
121 |                                     connection.accept(parameters)
    |                                     `- warning: capture of 'connection' with non-sendable type 'Connection<EffectParameters>' in a `@Sendable` closure
122 |                                 }
123 |                             } else {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/EffectHandlers/EffectRouter.swift:121:55: warning: capture of 'parameters' with non-sendable type 'EffectParameters' in a `@Sendable` closure
106 |     let connect: (@escaping Consumer<Output>) -> ConnectedRoute<Input>
107 |
108 |     init<EffectParameters, Conn: Connectable>(
    |          `- note: consider making generic parameter 'EffectParameters' conform to the 'Sendable' protocol
109 |         extractParameters: @escaping (Input) -> EffectParameters?,
110 |         connectable: Conn,
    :
119 |                             if let queue = queue {
120 |                                 queue.async {
121 |                                     connection.accept(parameters)
    |                                                       `- warning: capture of 'parameters' with non-sendable type 'EffectParameters' in a `@Sendable` closure
122 |                                 }
123 |                             } else {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[44/56] Compiling MobiusCore EffectRouterDSL.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/EffectHandlers/EffectRouter.swift:121:37: warning: capture of 'connection' with non-sendable type 'Connection<EffectParameters>' in a `@Sendable` closure
119 |                             if let queue = queue {
120 |                                 queue.async {
121 |                                     connection.accept(parameters)
    |                                     `- warning: capture of 'connection' with non-sendable type 'Connection<EffectParameters>' in a `@Sendable` closure
122 |                                 }
123 |                             } else {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/Connection.swift:9:20: note: generic class 'Connection' does not conform to the 'Sendable' protocol
 7 | ///
 8 | /// Used for sending values to the connection and to dispose of it and all resources associated with it.
 9 | public final class Connection<Value>: Disposable {
   |                    `- note: generic class 'Connection' does not conform to the 'Sendable' protocol
10 |     private let acceptClosure: (Value) -> Void
11 |     private let disposeClosure: () -> Void
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/EffectHandlers/EffectRouter.swift:121:55: warning: capture of 'parameters' with non-sendable type 'EffectParameters' in a `@Sendable` closure
106 |     let connect: (@escaping Consumer<Output>) -> ConnectedRoute<Input>
107 |
108 |     init<EffectParameters, Conn: Connectable>(
    |          `- note: consider making generic parameter 'EffectParameters' conform to the 'Sendable' protocol
109 |         extractParameters: @escaping (Input) -> EffectParameters?,
110 |         connectable: Conn,
    :
119 |                             if let queue = queue {
120 |                                 queue.async {
121 |                                     connection.accept(parameters)
    |                                                       `- warning: capture of 'parameters' with non-sendable type 'EffectParameters' in a `@Sendable` closure
122 |                                 }
123 |                             } else {
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[45/56] Compiling MobiusCore MobiusController.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusController.swift:92:27: warning: capture of 'state' with non-sendable type 'MobiusController<Model, Event, Effect>.State' (aka 'AsyncStartStopStateMachine<MobiusController<Model, Event, Effect>.StoppedState, MobiusController<Model, Event, Effect>.RunningState>') in a `@Sendable` closure
 90 |             return { event in
 91 |                 loopQueue.async {
 92 |                     guard state.running else {
    |                           `- warning: capture of 'state' with non-sendable type 'MobiusController<Model, Event, Effect>.State' (aka 'AsyncStartStopStateMachine<MobiusController<Model, Event, Effect>.StoppedState, MobiusController<Model, Event, Effect>.RunningState>') in a `@Sendable` closure
 93 |                         // If we got here, the controller was stopped while this async block was queued. Callers can’t
 94 |                         // possibly avoid this except through complete external serialization of all access to the
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncStartStopStateMachine.swift:12:13: note: generic class 'AsyncStartStopStateMachine' does not conform to the 'Sendable' protocol
 10 | /// tools to easily make it thread safe. In particular, we need to be able to query whether we’re currently running or
 11 | /// not from any queue, including the designated mutating queue.
 12 | final class AsyncStartStopStateMachine<StoppedState, RunningState> {
    |             `- note: generic class 'AsyncStartStopStateMachine' does not conform to the 'Sendable' protocol
 13 |     // Intermediate states are required to handle the case where `running` is queried during a state transition.
 14 |     //
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusController.swift:101:21: warning: capture of 'consumer' with non-sendable type 'Consumer<Event>' (aka '(Event) -> ()') in a `@Sendable` closure
 99 |                         return
100 |                     }
101 |                     consumer(event)
    |                     |- warning: capture of 'consumer' with non-sendable type 'Consumer<Event>' (aka '(Event) -> ()') in a `@Sendable` closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
102 |                 }
103 |             }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusController.swift:101:30: warning: capture of 'event' with non-sendable type 'Event' in a `@Sendable` closure
  8 | /// If a loop is stopped and then started again via the controller, the new loop will continue from where the last one
  9 | /// left off.
 10 | public final class MobiusController<Model, Event, Effect> {
    |                                            `- note: consider making generic parameter 'Event' conform to the 'Sendable' protocol
 11 |     typealias Loop = MobiusLoop<Model, Event, Effect>
 12 |     typealias ViewConnectable = AsyncDispatchQueueConnectable<Model, Event>
    :
 99 |                         return
100 |                     }
101 |                     consumer(event)
    |                              `- warning: capture of 'event' with non-sendable type 'Event' in a `@Sendable` closure
102 |                 }
103 |             }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[46/56] Compiling MobiusCore MobiusHooks.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusController.swift:92:27: warning: capture of 'state' with non-sendable type 'MobiusController<Model, Event, Effect>.State' (aka 'AsyncStartStopStateMachine<MobiusController<Model, Event, Effect>.StoppedState, MobiusController<Model, Event, Effect>.RunningState>') in a `@Sendable` closure
 90 |             return { event in
 91 |                 loopQueue.async {
 92 |                     guard state.running else {
    |                           `- warning: capture of 'state' with non-sendable type 'MobiusController<Model, Event, Effect>.State' (aka 'AsyncStartStopStateMachine<MobiusController<Model, Event, Effect>.StoppedState, MobiusController<Model, Event, Effect>.RunningState>') in a `@Sendable` closure
 93 |                         // If we got here, the controller was stopped while this async block was queued. Callers can’t
 94 |                         // possibly avoid this except through complete external serialization of all access to the
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncStartStopStateMachine.swift:12:13: note: generic class 'AsyncStartStopStateMachine' does not conform to the 'Sendable' protocol
 10 | /// tools to easily make it thread safe. In particular, we need to be able to query whether we’re currently running or
 11 | /// not from any queue, including the designated mutating queue.
 12 | final class AsyncStartStopStateMachine<StoppedState, RunningState> {
    |             `- note: generic class 'AsyncStartStopStateMachine' does not conform to the 'Sendable' protocol
 13 |     // Intermediate states are required to handle the case where `running` is queried during a state transition.
 14 |     //
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusController.swift:101:21: warning: capture of 'consumer' with non-sendable type 'Consumer<Event>' (aka '(Event) -> ()') in a `@Sendable` closure
 99 |                         return
100 |                     }
101 |                     consumer(event)
    |                     |- warning: capture of 'consumer' with non-sendable type 'Consumer<Event>' (aka '(Event) -> ()') in a `@Sendable` closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
102 |                 }
103 |             }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusController.swift:101:30: warning: capture of 'event' with non-sendable type 'Event' in a `@Sendable` closure
  8 | /// If a loop is stopped and then started again via the controller, the new loop will continue from where the last one
  9 | /// left off.
 10 | public final class MobiusController<Model, Event, Effect> {
    |                                            `- note: consider making generic parameter 'Event' conform to the 'Sendable' protocol
 11 |     typealias Loop = MobiusLoop<Model, Event, Effect>
 12 |     typealias ViewConnectable = AsyncDispatchQueueConnectable<Model, Event>
    :
 99 |                         return
100 |                     }
101 |                     consumer(event)
    |                              `- warning: capture of 'event' with non-sendable type 'Event' in a `@Sendable` closure
102 |                 }
103 |             }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[47/56] Compiling MobiusCore MobiusLogger.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusController.swift:92:27: warning: capture of 'state' with non-sendable type 'MobiusController<Model, Event, Effect>.State' (aka 'AsyncStartStopStateMachine<MobiusController<Model, Event, Effect>.StoppedState, MobiusController<Model, Event, Effect>.RunningState>') in a `@Sendable` closure
 90 |             return { event in
 91 |                 loopQueue.async {
 92 |                     guard state.running else {
    |                           `- warning: capture of 'state' with non-sendable type 'MobiusController<Model, Event, Effect>.State' (aka 'AsyncStartStopStateMachine<MobiusController<Model, Event, Effect>.StoppedState, MobiusController<Model, Event, Effect>.RunningState>') in a `@Sendable` closure
 93 |                         // If we got here, the controller was stopped while this async block was queued. Callers can’t
 94 |                         // possibly avoid this except through complete external serialization of all access to the
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/AsyncStartStopStateMachine.swift:12:13: note: generic class 'AsyncStartStopStateMachine' does not conform to the 'Sendable' protocol
 10 | /// tools to easily make it thread safe. In particular, we need to be able to query whether we’re currently running or
 11 | /// not from any queue, including the designated mutating queue.
 12 | final class AsyncStartStopStateMachine<StoppedState, RunningState> {
    |             `- note: generic class 'AsyncStartStopStateMachine' does not conform to the 'Sendable' protocol
 13 |     // Intermediate states are required to handle the case where `running` is queried during a state transition.
 14 |     //
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusController.swift:101:21: warning: capture of 'consumer' with non-sendable type 'Consumer<Event>' (aka '(Event) -> ()') in a `@Sendable` closure
 99 |                         return
100 |                     }
101 |                     consumer(event)
    |                     |- warning: capture of 'consumer' with non-sendable type 'Consumer<Event>' (aka '(Event) -> ()') in a `@Sendable` closure
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
102 |                 }
103 |             }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusController.swift:101:30: warning: capture of 'event' with non-sendable type 'Event' in a `@Sendable` closure
  8 | /// If a loop is stopped and then started again via the controller, the new loop will continue from where the last one
  9 | /// left off.
 10 | public final class MobiusController<Model, Event, Effect> {
    |                                            `- note: consider making generic parameter 'Event' conform to the 'Sendable' protocol
 11 |     typealias Loop = MobiusLoop<Model, Event, Effect>
 12 |     typealias ViewConnectable = AsyncDispatchQueueConnectable<Model, Event>
    :
 99 |                         return
100 |                     }
101 |                     consumer(event)
    |                              `- warning: capture of 'event' with non-sendable type 'Event' in a `@Sendable` closure
102 |                 }
103 |             }
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[48/56] Compiling MobiusCore AnonymousDisposable.swift
[49/56] Compiling MobiusCore CompositeDisposable.swift
[50/56] Compiling MobiusCore Disposable.swift
[51/56] Compiling MobiusCore Lock.swift
[52/56] Compiling MobiusCore LoggingAdaptors.swift
[53/56] Compiling MobiusCore Mobius.swift
[54/104] Compiling Nimble SatisfyAllOf.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[55/104] Compiling Nimble SatisfyAnyOf.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[56/104] Compiling Nimble ThrowAssertion.swift
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    |- warning: static property 'errorHandler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                                    |- note: convert 'errorHandler' to a 'let' constant to make 'Sendable' shared state immutable
   |                                    |- note: annotate 'errorHandler' with '@MainActor' if property should only be accessed from the main actor
   |                                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[57/122] Compiling MobiusExtras EventSourceMap.swift
[58/122] Compiling MobiusExtras Copyable.swift
[59/122] Compiling MobiusExtras SimpleLogger.swift
[60/122] Compiling MobiusExtras ConnectableMap.swift
[61/122] Compiling MobiusExtras BeginnerLoop.swift
[62/122] Compiling MobiusExtras ConnectableContramap.swift
[63/122] Emitting module MobiusExtras
[64/122] Compiling MobiusExtras ConnectableClass.swift
/Users/admin/builder/spi-builder-workspace/MobiusExtras/Source/ConnectableClass.swift:63:25: warning: reference to static property 'errorHandler' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
 61 |
 62 |         guard self.consumer == nil else {
 63 |             MobiusHooks.errorHandler(
    |                         `- warning: reference to static property 'errorHandler' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
 64 |                 "Connection limit exceeded: The Connectable \(type(of: self)) is already connected. " +
 65 |                 "Unable to connect more than once",
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: note: static property declared here
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    `- note: static property declared here
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
/Users/admin/builder/spi-builder-workspace/MobiusExtras/Source/ConnectableClass.swift:84:25: warning: reference to static property 'errorHandler' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
 82 |         lock.unlock()
 83 |         guard consumerSet else {
 84 |             MobiusHooks.errorHandler(
    |                         `- warning: reference to static property 'errorHandler' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
 85 |                 "\(type(of: self)) is unable to handle \(type(of: input)) before any consumer has been set",
 86 |                 #file,
/Users/admin/builder/spi-builder-workspace/MobiusCore/Source/MobiusHooks.swift:16:36: note: static property declared here
14 |     /// Internal: we prefer to call `errorHandler` directly, without abstractions, to minimize the depth of crash
15 |     /// stack traces. This requires that `#file` and `#line` are passed explicitly.
16 |     public private(set) static var errorHandler: ErrorHandler = MobiusHooks.defaultErrorHandler
   |                                    `- note: static property declared here
17 |
18 |     public static func setErrorHandler(_ newErrorHandler: @escaping ErrorHandler) {
[65/122] Compiling MobiusTest UpdateSpec.swift
[66/122] Compiling MobiusTest SimpleDiff.swift
[67/122] Compiling MobiusTest MatcherUtils.swift
[68/122] Compiling MobiusTest NextMatchers.swift
[69/122] Compiling MobiusTest DebugDiff.swift
[70/122] Compiling MobiusTest InitSpec.swift
[71/122] Emitting module MobiusTest
[72/122] Compiling MobiusTest FirstMatchers.swift
[73/122] Compiling Nimble BeEmpty.swift
[74/122] Compiling Nimble BeGreaterThan.swift
[75/122] Compiling Nimble BeGreaterThanOrEqualTo.swift
[76/122] Compiling Nimble BeIdenticalTo.swift
[77/122] Compiling Nimble BeLessThan.swift
[78/122] Compiling Nimble BeLessThanOrEqual.swift
[79/127] Compiling Nimble ExceptionCapture.swift
[80/127] Compiling Nimble DSL+Wait.swift
[81/127] Compiling Nimble DSL.swift
[82/127] Compiling Nimble Expectation.swift
[83/127] Compiling Nimble ExpectationMessage.swift
[84/127] Compiling Nimble Expression.swift
[85/127] Compiling Nimble EndWith.swift
[86/127] Compiling Nimble Equal+Tuple.swift
[87/127] Compiling Nimble Equal.swift
[88/127] Compiling Nimble HaveCount.swift
[89/127] Compiling Nimble Match.swift
[90/127] Compiling Nimble AdapterProtocols.swift
[91/127] Compiling Nimble AssertionDispatcher.swift
[92/127] Compiling Nimble AssertionRecorder.swift
[93/127] Compiling Nimble NMBExpectation.swift
[94/127] Compiling Nimble NimbleEnvironment.swift
[95/127] Compiling Nimble NimbleXCTestHandler.swift
[96/127] Emitting module Nimble
[97/127] Compiling Nimble BeLogical.swift
[98/127] Compiling Nimble BeNil.swift
[99/127] Compiling Nimble BeResult.swift
[100/127] Compiling Nimble BeVoid.swift
[101/127] Compiling Nimble BeWithin.swift
[102/127] Compiling Nimble BeginWith.swift
[103/127] Compiling Nimble BeginWithPrefix.swift
[104/127] Compiling Nimble Contain.swift
[105/127] Compiling Nimble ContainElementSatisfying.swift
[106/127] Compiling Nimble ElementsEqual.swift
[107/127] Compiling Nimble MatchError.swift
[108/127] Compiling Nimble MatcherProtocols.swift
[109/127] Compiling Nimble PostNotification.swift
[110/127] Compiling Nimble Predicate.swift
[111/127] Compiling Nimble RaisesException.swift
[115/127] Compiling Nimble ThrowError.swift
[116/127] Compiling Nimble ToSucceed.swift
[117/127] Compiling Nimble FailureMessage.swift
[118/127] Compiling Nimble AllPass.swift
[119/127] Compiling Nimble Async.swift
[120/127] Compiling Nimble BeAKindOf.swift
[121/127] Compiling Nimble BeAnInstanceOf.swift
[122/127] Compiling Nimble BeCloseTo.swift
[123/127] Compiling Nimble Await.swift
[124/127] Compiling Nimble DispatchTimeInterval.swift
[125/127] Compiling Nimble Errors.swift
[126/127] Compiling Nimble SourceLocation.swift
[127/127] Compiling Nimble Stringers.swift
[128/130] Compiling MobiusNimble NimbleFirstMatchers.swift
/Users/admin/builder/spi-builder-workspace/MobiusNimble/Source/NimbleFirstMatchers.swift:24:5: warning: let 'unexpectedNilParameterPredicateResult' is not concurrency-safe because non-'Sendable' type 'PredicateResult' may have shared mutable state; this is an error in the Swift 6 language mode
 22 |
 23 | let nextBeingNilNotAllowed = "have a non-nil First. Got <nil>"
 24 | let unexpectedNilParameterPredicateResult = PredicateResult(bool: false, message: .expectedTo(nextBeingNilNotAllowed))
    |     `- warning: let 'unexpectedNilParameterPredicateResult' is not concurrency-safe because non-'Sendable' type 'PredicateResult' may have shared mutable state; this is an error in the Swift 6 language mode
 25 |
 26 | /// Returns a `Predicate` that matches `First` instances with a model that is equal to the supplied one.
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Nimble/Sources/Nimble/Matchers/Predicate.swift:91:15: note: struct 'PredicateResult' does not conform to the 'Sendable' protocol
 89 | /// The value that a Predicates return to describe if the given (actual) value matches the
 90 | /// predicate.
 91 | public struct PredicateResult {
    |               `- note: struct 'PredicateResult' does not conform to the 'Sendable' protocol
 92 |     /// Status indicates if the predicate matches, does not match, or fails.
 93 |     public var status: PredicateStatus
/Users/admin/builder/spi-builder-workspace/MobiusNimble/Source/NimbleFirstMatchers.swift:7:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Nimble'
  5 | import MobiusCore
  6 | import MobiusTest
  7 | import Nimble
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Nimble'
  8 |
  9 | /// Function produces an `AssertFirst` function to be used with the `InitSpec`
    :
 22 |
 23 | let nextBeingNilNotAllowed = "have a non-nil First. Got <nil>"
 24 | let unexpectedNilParameterPredicateResult = PredicateResult(bool: false, message: .expectedTo(nextBeingNilNotAllowed))
    |     |- note: annotate 'unexpectedNilParameterPredicateResult' with '@MainActor' if property should only be accessed from the main actor
    |     `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 25 |
 26 | /// Returns a `Predicate` that matches `First` instances with a model that is equal to the supplied one.
[129/130] Emitting module MobiusNimble
/Users/admin/builder/spi-builder-workspace/MobiusNimble/Source/NimbleFirstMatchers.swift:24:5: warning: let 'unexpectedNilParameterPredicateResult' is not concurrency-safe because non-'Sendable' type 'PredicateResult' may have shared mutable state; this is an error in the Swift 6 language mode
 22 |
 23 | let nextBeingNilNotAllowed = "have a non-nil First. Got <nil>"
 24 | let unexpectedNilParameterPredicateResult = PredicateResult(bool: false, message: .expectedTo(nextBeingNilNotAllowed))
    |     `- warning: let 'unexpectedNilParameterPredicateResult' is not concurrency-safe because non-'Sendable' type 'PredicateResult' may have shared mutable state; this is an error in the Swift 6 language mode
 25 |
 26 | /// Returns a `Predicate` that matches `First` instances with a model that is equal to the supplied one.
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Nimble/Sources/Nimble/Matchers/Predicate.swift:91:15: note: struct 'PredicateResult' does not conform to the 'Sendable' protocol
 89 | /// The value that a Predicates return to describe if the given (actual) value matches the
 90 | /// predicate.
 91 | public struct PredicateResult {
    |               `- note: struct 'PredicateResult' does not conform to the 'Sendable' protocol
 92 |     /// Status indicates if the predicate matches, does not match, or fails.
 93 |     public var status: PredicateStatus
/Users/admin/builder/spi-builder-workspace/MobiusNimble/Source/NimbleFirstMatchers.swift:7:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Nimble'
  5 | import MobiusCore
  6 | import MobiusTest
  7 | import Nimble
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Nimble'
  8 |
  9 | /// Function produces an `AssertFirst` function to be used with the `InitSpec`
    :
 22 |
 23 | let nextBeingNilNotAllowed = "have a non-nil First. Got <nil>"
 24 | let unexpectedNilParameterPredicateResult = PredicateResult(bool: false, message: .expectedTo(nextBeingNilNotAllowed))
    |     |- note: annotate 'unexpectedNilParameterPredicateResult' with '@MainActor' if property should only be accessed from the main actor
    |     `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 25 |
 26 | /// Returns a `Predicate` that matches `First` instances with a model that is equal to the supplied one.
/Users/admin/builder/spi-builder-workspace/MobiusNimble/Source/NimbleNextMatchers.swift:24:5: warning: let 'unexpectedNilParameterPredicate' is not concurrency-safe because non-'Sendable' type 'PredicateResult' may have shared mutable state; this is an error in the Swift 6 language mode
 22 |
 23 | let haveNonNilNext = "have a non-nil Next. Got <nil>"
 24 | let unexpectedNilParameterPredicate = Nimble.PredicateResult(bool: false, message: .expectedTo(haveNonNilNext))
    |     `- warning: let 'unexpectedNilParameterPredicate' is not concurrency-safe because non-'Sendable' type 'PredicateResult' may have shared mutable state; this is an error in the Swift 6 language mode
 25 |
 26 | /// - Returns: a `Predicate` that matches `Next` instances with no model and no effects.
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Nimble/Sources/Nimble/Matchers/Predicate.swift:91:15: note: struct 'PredicateResult' does not conform to the 'Sendable' protocol
 89 | /// The value that a Predicates return to describe if the given (actual) value matches the
 90 | /// predicate.
 91 | public struct PredicateResult {
    |               `- note: struct 'PredicateResult' does not conform to the 'Sendable' protocol
 92 |     /// Status indicates if the predicate matches, does not match, or fails.
 93 |     public var status: PredicateStatus
/Users/admin/builder/spi-builder-workspace/MobiusNimble/Source/NimbleNextMatchers.swift:7:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Nimble'
  5 | import MobiusCore
  6 | import MobiusTest
  7 | import Nimble
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Nimble'
  8 |
  9 | /// Convenience function for creating assertions.
    :
 22 |
 23 | let haveNonNilNext = "have a non-nil Next. Got <nil>"
 24 | let unexpectedNilParameterPredicate = Nimble.PredicateResult(bool: false, message: .expectedTo(haveNonNilNext))
    |     |- note: annotate 'unexpectedNilParameterPredicate' with '@MainActor' if property should only be accessed from the main actor
    |     `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 25 |
 26 | /// - Returns: a `Predicate` that matches `Next` instances with no model and no effects.
[130/130] Compiling MobiusNimble NimbleNextMatchers.swift
/Users/admin/builder/spi-builder-workspace/MobiusNimble/Source/NimbleNextMatchers.swift:24:5: warning: let 'unexpectedNilParameterPredicate' is not concurrency-safe because non-'Sendable' type 'PredicateResult' may have shared mutable state; this is an error in the Swift 6 language mode
 22 |
 23 | let haveNonNilNext = "have a non-nil Next. Got <nil>"
 24 | let unexpectedNilParameterPredicate = Nimble.PredicateResult(bool: false, message: .expectedTo(haveNonNilNext))
    |     `- warning: let 'unexpectedNilParameterPredicate' is not concurrency-safe because non-'Sendable' type 'PredicateResult' may have shared mutable state; this is an error in the Swift 6 language mode
 25 |
 26 | /// - Returns: a `Predicate` that matches `Next` instances with no model and no effects.
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Nimble/Sources/Nimble/Matchers/Predicate.swift:91:15: note: struct 'PredicateResult' does not conform to the 'Sendable' protocol
 89 | /// The value that a Predicates return to describe if the given (actual) value matches the
 90 | /// predicate.
 91 | public struct PredicateResult {
    |               `- note: struct 'PredicateResult' does not conform to the 'Sendable' protocol
 92 |     /// Status indicates if the predicate matches, does not match, or fails.
 93 |     public var status: PredicateStatus
/Users/admin/builder/spi-builder-workspace/MobiusNimble/Source/NimbleNextMatchers.swift:7:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Nimble'
  5 | import MobiusCore
  6 | import MobiusTest
  7 | import Nimble
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Nimble'
  8 |
  9 | /// Convenience function for creating assertions.
    :
 22 |
 23 | let haveNonNilNext = "have a non-nil Next. Got <nil>"
 24 | let unexpectedNilParameterPredicate = Nimble.PredicateResult(bool: false, message: .expectedTo(haveNonNilNext))
    |     |- note: annotate 'unexpectedNilParameterPredicate' with '@MainActor' if property should only be accessed from the main actor
    |     `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 25 |
 26 | /// - Returns: a `Predicate` that matches `Next` instances with no model and no effects.
Build complete! (20.13s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-case-paths",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.10.1",
            "upper_bound" : "0.11.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/pointfreeco/swift-case-paths"
    },
    {
      "identity" : "nimble",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "10.0.0",
            "upper_bound" : "11.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Quick/Nimble"
    },
    {
      "identity" : "quick",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "5.0.1",
            "upper_bound" : "6.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Quick/Quick"
    }
  ],
  "manifest_display_name" : "Mobius",
  "name" : "Mobius",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "10.0"
    },
    {
      "name" : "macos",
      "version" : "10.12"
    },
    {
      "name" : "tvos",
      "version" : "10.0"
    },
    {
      "name" : "watchos",
      "version" : "3.0"
    }
  ],
  "products" : [
    {
      "name" : "MobiusCore",
      "targets" : [
        "MobiusCore"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MobiusExtras",
      "targets" : [
        "MobiusExtras"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MobiusNimble",
      "targets" : [
        "MobiusNimble"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MobiusTest",
      "targets" : [
        "MobiusTest"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "MobiusThrowableAssertion",
      "module_type" : "ClangTarget",
      "name" : "MobiusThrowableAssertion",
      "path" : "MobiusThrowableAssertion/Source",
      "sources" : [
        "MobiusThrowableAssertion.m"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MobiusTestTests",
      "module_type" : "SwiftTarget",
      "name" : "MobiusTestTests",
      "path" : "MobiusTest/Test",
      "product_dependencies" : [
        "Quick",
        "Nimble"
      ],
      "sources" : [
        "DebugDiffTests.swift",
        "FirstMatchersTests.swift",
        "InitSpecTests.swift",
        "NextMatchersTests.swift",
        "TestUtil.swift",
        "UpdateSpecTests.swift"
      ],
      "target_dependencies" : [
        "MobiusTest"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MobiusTest",
      "module_type" : "SwiftTarget",
      "name" : "MobiusTest",
      "path" : "MobiusTest/Source",
      "product_memberships" : [
        "MobiusNimble",
        "MobiusTest"
      ],
      "sources" : [
        "DebugDiff.swift",
        "FirstMatchers.swift",
        "InitSpec.swift",
        "MatcherUtils.swift",
        "NextMatchers.swift",
        "SimpleDiff.swift",
        "UpdateSpec.swift"
      ],
      "target_dependencies" : [
        "MobiusCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MobiusNimbleTests",
      "module_type" : "SwiftTarget",
      "name" : "MobiusNimbleTests",
      "path" : "MobiusNimble/Test",
      "product_dependencies" : [
        "Quick"
      ],
      "sources" : [
        "NimbleFirstMatchersTests.swift",
        "NimbleNextMatchersTests.swift",
        "TestUtil.swift"
      ],
      "target_dependencies" : [
        "MobiusNimble"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MobiusNimble",
      "module_type" : "SwiftTarget",
      "name" : "MobiusNimble",
      "path" : "MobiusNimble/Source",
      "product_dependencies" : [
        "Nimble"
      ],
      "product_memberships" : [
        "MobiusNimble"
      ],
      "sources" : [
        "NimbleFirstMatchers.swift",
        "NimbleNextMatchers.swift"
      ],
      "target_dependencies" : [
        "MobiusCore",
        "MobiusTest"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MobiusExtrasTests",
      "module_type" : "SwiftTarget",
      "name" : "MobiusExtrasTests",
      "path" : "MobiusExtras/Test",
      "product_dependencies" : [
        "Nimble",
        "Quick"
      ],
      "sources" : [
        "ConnectableClassTests.swift",
        "ConnectableContramapTests.swift",
        "ConnectableMapTests.swift",
        "CopyableTests.swift",
        "EventSource+ExtensionsTests.swift",
        "WikiTutorialTest.swift"
      ],
      "target_dependencies" : [
        "MobiusCore",
        "MobiusExtras",
        "MobiusThrowableAssertion"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MobiusExtras",
      "module_type" : "SwiftTarget",
      "name" : "MobiusExtras",
      "path" : "MobiusExtras/Source",
      "product_memberships" : [
        "MobiusExtras"
      ],
      "sources" : [
        "BeginnerLoop.swift",
        "ConnectableClass.swift",
        "ConnectableContramap.swift",
        "ConnectableMap.swift",
        "Copyable.swift",
        "EventSourceMap.swift",
        "SimpleLogger.swift"
      ],
      "target_dependencies" : [
        "MobiusCore"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MobiusCoreTests",
      "module_type" : "SwiftTarget",
      "name" : "MobiusCoreTests",
      "path" : "MobiusCore/Test",
      "product_dependencies" : [
        "Nimble",
        "Quick"
      ],
      "sources" : [
        "AnonymousDisposableTests.swift",
        "AnyConnectionTests.swift",
        "AnyMobiusLoggerTests.swift",
        "AsyncDispatchQueueConnectableTests.swift",
        "CompositeDisposableTests.swift",
        "ConnectablePublisherTests.swift",
        "EffectHandlers/AnyEffectHandlerTests.swift",
        "EffectHandlers/CallbackTests.swift",
        "EffectHandlers/EffectHandlerTests.swift",
        "EffectHandlers/EffectRouterDSLTests.swift",
        "EffectHandlers/EffectRouterTests.swift",
        "EffectHandlers/EnumRouteTests.swift",
        "EventRouterDisposalLogicalRaceRegressionTest.swift",
        "EventSources/AnyEventSourceTests.swift",
        "EventSources/CompositeEventSourceBuilderTests.swift",
        "FirstTests.swift",
        "InitializationTests.swift",
        "LoggingInitiateTests.swift",
        "LoggingUpdateTests.swift",
        "MobiusControllerTests.swift",
        "MobiusHooksTests.swift",
        "MobiusIntegrationTests.swift",
        "MobiusLoopTests.swift",
        "NextTests.swift",
        "NonReentrancyTests.swift",
        "Task+DisposableTests.swift",
        "TestingErrorHandler.swift",
        "TestingUtil.swift",
        "WorkBagTests.swift"
      ],
      "target_dependencies" : [
        "MobiusCore",
        "MobiusThrowableAssertion"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MobiusCore",
      "module_type" : "SwiftTarget",
      "name" : "MobiusCore",
      "path" : "MobiusCore/Source",
      "product_dependencies" : [
        "CasePaths"
      ],
      "product_memberships" : [
        "MobiusCore",
        "MobiusExtras",
        "MobiusNimble",
        "MobiusTest"
      ],
      "sources" : [
        "AsyncDispatchQueueConnectable.swift",
        "AsyncStartStopStateMachine.swift",
        "ConcurrentAccessDetector.swift",
        "Connectable.swift",
        "ConnectablePublisher.swift",
        "Connection.swift",
        "Consumer.swift",
        "Disposables/AnonymousDisposable.swift",
        "Disposables/CompositeDisposable.swift",
        "Disposables/Disposable.swift",
        "Disposables/Task+Disposable.swift",
        "EffectHandlers/EffectCallback.swift",
        "EffectHandlers/EffectExecutor.swift",
        "EffectHandlers/EffectHandler.swift",
        "EffectHandlers/EffectRouter.swift",
        "EffectHandlers/EffectRouterDSL.swift",
        "EffectHandlers/EnumRoute.swift",
        "EffectHandlers/ThreadSafeConnectable.swift",
        "EventSources/AnyEventSource.swift",
        "EventSources/CompositeEventSourceBuilder.swift",
        "EventSources/EventSource.swift",
        "First.swift",
        "Lock.swift",
        "LoggingAdaptors.swift",
        "Mobius.swift",
        "MobiusController.swift",
        "MobiusHooks.swift",
        "MobiusLogger.swift",
        "MobiusLoop.swift",
        "Next.swift",
        "WorkBag.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.0"
}
Done.