The Swift Package Index logo.Swift Package Index

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

Build Information

Successful build of ClassyFlux, reference 2.0.1 (cb9abf), with Swift 6.0 for Linux on 14 Sep 2024 04:22:48 UTC.

Swift 6 data race errors: 3

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.53.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Cozmonate/ClassyFlux.git
Reference: 2.0.1
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
From https://github.com/Cozmonate/ClassyFlux
 * tag               2.0.1      -> FETCH_HEAD
HEAD is now at cb9abff Include all .swift files in pod
Cloned https://github.com/Cozmonate/ClassyFlux.git
Revision (git rev-parse @):
cb9abff2adfdead4396d86090028b2974caf4f52
SUCCESS checkout https://github.com/Cozmonate/ClassyFlux.git at 2.0.1
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.0
Building package at path:  $PWD
https://github.com/Cozmonate/ClassyFlux.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:9d7dab235f2b0b46edadd73b1fb0c3b5323df02053420324a4a2f8ca89cb54a5
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Fetching https://github.com/kzlekk/ResolvingContainer.git
[1/133] Fetching resolvingcontainer
Fetched https://github.com/kzlekk/ResolvingContainer.git from cache (0.20s)
Computing version for https://github.com/kzlekk/ResolvingContainer.git
Computed https://github.com/kzlekk/ResolvingContainer.git at 1.0.12 (0.53s)
Creating working copy for https://github.com/kzlekk/ResolvingContainer.git
Working copy of https://github.com/kzlekk/ResolvingContainer.git resolved at 1.0.12
Building for debugging...
[0/3] Write sources
[2/3] Write swift-version-24593BA9C3E375BF.txt
[4/5] Emitting module ResolvingContainer
[5/5] Compiling ResolvingContainer ResolvingContainer.swift
[7/14] Compiling ClassyFlux FluxWorker.swift
[8/14] Compiling ClassyFlux FluxMiddleware.swift
[9/14] Compiling ClassyFlux FluxAggregator.swift
[10/14] Compiling ClassyFlux FluxAction.swift
/host/spi-builder-workspace/ClassyFlux/FluxDispatcher.swift:57:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'FluxDispatcher' may have shared mutable state; this is an error in the Swift 6 language mode
 52 |
 53 | /// An object that dispatches actions to registered workers synchronously on the same thread.
 54 | open class FluxDispatcher: FluxDispatching {
    |            `- note: class 'FluxDispatcher' does not conform to the 'Sendable' protocol
 55 |
 56 |     /// The default dispatcher instance
 57 |     public static let `default` = FluxDispatcher()
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'FluxDispatcher' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' 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
 58 |
 59 |     #if canImport(Combine)
/host/spi-builder-workspace/ClassyFlux/FluxAction.swift:93:14: warning: let 'FluxQueueIdentifierKey' is not concurrency-safe because non-'Sendable' type 'DispatchSpecificKey<UUID>' may have shared mutable state; this is an error in the Swift 6 language mode
 91 | // MARK: - Utility
 92 |
 93 | internal let FluxQueueIdentifierKey = DispatchSpecificKey<UUID>()
    |              `- warning: let 'FluxQueueIdentifierKey' is not concurrency-safe because non-'Sendable' type 'DispatchSpecificKey<UUID>' may have shared mutable state; this is an error in the Swift 6 language mode
 94 |
 95 | internal extension DispatchQueue {
Dispatch.DispatchSpecificKey:1:20: note: generic class 'DispatchSpecificKey' does not conform to the 'Sendable' protocol
1 | final public class DispatchSpecificKey<T> {
  |                    `- note: generic class 'DispatchSpecificKey' does not conform to the 'Sendable' protocol
2 |     public init()
3 |     deinit
/host/spi-builder-workspace/ClassyFlux/FluxAction.swift:32:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Dispatch'
 30 |  */
 31 |
 32 | import Foundation
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Dispatch'
 33 |
 34 | // MARK: - FluxAction
    :
 91 | // MARK: - Utility
 92 |
 93 | internal let FluxQueueIdentifierKey = DispatchSpecificKey<UUID>()
    |              |- note: annotate 'FluxQueueIdentifierKey' 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
 94 |
 95 | internal extension DispatchQueue {
/host/spi-builder-workspace/ClassyFlux/FluxAction.swift:49:17: warning: capture of 'dispatcher' with non-sendable type 'any FluxDispatching' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 47 |         } else {
 48 |             queue.async(flags: .barrier) {
 49 |                 dispatcher.dispatch(action: self)
    |                 `- warning: capture of 'dispatcher' with non-sendable type 'any FluxDispatching' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 50 |             }
 51 |         }
/host/spi-builder-workspace/ClassyFlux/FluxDispatcher.swift:40:17: note: protocol 'FluxDispatching' does not conform to the 'Sendable' protocol
 38 |
 39 | /// A protocol that defines how the action can be dispatched
 40 | public protocol FluxDispatching {
    |                 `- note: protocol 'FluxDispatching' does not conform to the 'Sendable' protocol
 41 |
 42 |     /// A flag indicating if dispatcher dispatches an action at the moment.
<unknown>:0: note: consider making generic parameter 'Self' conform to the 'Sendable' protocol
/host/spi-builder-workspace/ClassyFlux/FluxAction.swift:49:45: warning: capture of 'self' with non-sendable type 'Self' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 47 |         } else {
 48 |             queue.async(flags: .barrier) {
 49 |                 dispatcher.dispatch(action: self)
    |                                             `- warning: capture of 'self' with non-sendable type 'Self' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 50 |             }
 51 |         }
[11/14] Compiling ClassyFlux FluxDispatcher.swift
/host/spi-builder-workspace/ClassyFlux/FluxDispatcher.swift:57:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'FluxDispatcher' may have shared mutable state; this is an error in the Swift 6 language mode
 52 |
 53 | /// An object that dispatches actions to registered workers synchronously on the same thread.
 54 | open class FluxDispatcher: FluxDispatching {
    |            `- note: class 'FluxDispatcher' does not conform to the 'Sendable' protocol
 55 |
 56 |     /// The default dispatcher instance
 57 |     public static let `default` = FluxDispatcher()
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'FluxDispatcher' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' 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
 58 |
 59 |     #if canImport(Combine)
[12/14] Emitting module ClassyFlux
/host/spi-builder-workspace/ClassyFlux/FluxDispatcher.swift:57:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'FluxDispatcher' may have shared mutable state; this is an error in the Swift 6 language mode
 52 |
 53 | /// An object that dispatches actions to registered workers synchronously on the same thread.
 54 | open class FluxDispatcher: FluxDispatching {
    |            `- note: class 'FluxDispatcher' does not conform to the 'Sendable' protocol
 55 |
 56 |     /// The default dispatcher instance
 57 |     public static let `default` = FluxDispatcher()
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'FluxDispatcher' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' 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
 58 |
 59 |     #if canImport(Combine)
/host/spi-builder-workspace/ClassyFlux/FluxAction.swift:93:14: warning: let 'FluxQueueIdentifierKey' is not concurrency-safe because non-'Sendable' type 'DispatchSpecificKey<UUID>' may have shared mutable state; this is an error in the Swift 6 language mode
 91 | // MARK: - Utility
 92 |
 93 | internal let FluxQueueIdentifierKey = DispatchSpecificKey<UUID>()
    |              `- warning: let 'FluxQueueIdentifierKey' is not concurrency-safe because non-'Sendable' type 'DispatchSpecificKey<UUID>' may have shared mutable state; this is an error in the Swift 6 language mode
 94 |
 95 | internal extension DispatchQueue {
Dispatch.DispatchSpecificKey:1:20: note: generic class 'DispatchSpecificKey' does not conform to the 'Sendable' protocol
1 | final public class DispatchSpecificKey<T> {
  |                    `- note: generic class 'DispatchSpecificKey' does not conform to the 'Sendable' protocol
2 |     public init()
3 |     deinit
/host/spi-builder-workspace/ClassyFlux/FluxAction.swift:32:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Dispatch'
 30 |  */
 31 |
 32 | import Foundation
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Dispatch'
 33 |
 34 | // MARK: - FluxAction
    :
 91 | // MARK: - Utility
 92 |
 93 | internal let FluxQueueIdentifierKey = DispatchSpecificKey<UUID>()
    |              |- note: annotate 'FluxQueueIdentifierKey' 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
 94 |
 95 | internal extension DispatchQueue {
/host/spi-builder-workspace/ClassyFlux/FluxStore.swift:213:23: warning: generic parameter 'State' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 54 |
 55 | /// An object that stores the state and allows state mutation only by handling registered actions.
 56 | open class FluxStore<State>: FluxWorker {
    |                      `- note: 'State' previously declared here
 57 |     public typealias State = State
 58 |
    :
211 |         internal let observer: NSObjectProtocol
212 |
213 |         internal init<State>(for event: Event, from store: FluxStore<State>, queue: OperationQueue, handler: @escaping (State, Set<PartialKeyPath<State>>) -> Void) {
    |                       `- warning: generic parameter 'State' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
214 |             observer = NotificationCenter.default
215 |                 .addObserver(forName: event.notificationName, object: store, queue: queue) { notification in
[13/14] Compiling ClassyFlux FluxStore.swift
/host/spi-builder-workspace/ClassyFlux/FluxStore.swift:213:23: warning: generic parameter 'State' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 54 |
 55 | /// An object that stores the state and allows state mutation only by handling registered actions.
 56 | open class FluxStore<State>: FluxWorker {
    |                      `- note: 'State' previously declared here
 57 |     public typealias State = State
 58 |
    :
211 |         internal let observer: NSObjectProtocol
212 |
213 |         internal init<State>(for event: Event, from store: FluxStore<State>, queue: OperationQueue, handler: @escaping (State, Set<PartialKeyPath<State>>) -> Void) {
    |                       `- warning: generic parameter 'State' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
214 |             observer = NotificationCenter.default
215 |                 .addObserver(forName: event.notificationName, object: store, queue: queue) { notification in
/host/spi-builder-workspace/ClassyFlux/FluxStore.swift:218:21: warning: capture of 'handler' with non-sendable type '(State, Set<PartialKeyPath<State>>) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
216 |                     guard let store = notification.object as? FluxStore<State> else { return }
217 |                     guard let keyPaths = notification.userInfo?[FluxStoreNotificationKeyPathsKey] as? Set<PartialKeyPath<State>> else { return }
218 |                     handler(store.state, keyPaths)
    |                     |- warning: capture of 'handler' with non-sendable type '(State, Set<PartialKeyPath<State>>) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
219 |                 }
220 |         }
[14/14] Compiling ClassyFlux FluxRepository.swift
/host/spi-builder-workspace/ClassyFlux/FluxRepository.swift:137:21: warning: capture of 'handler' with non-sendable type '(Repository, Set<PartialKeyPath<Repository>>) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
135 |                     guard let repository = notification.object as? Repository else { return }
136 |                     guard let keyPaths = notification.userInfo?[FluxRepositoryChangedKeyPathsKey] as? Set<PartialKeyPath<Repository>> else { return }
137 |                     handler(repository, keyPaths)
    |                     |- warning: capture of 'handler' with non-sendable type '(Repository, Set<PartialKeyPath<Repository>>) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
138 |             }
139 |         }
Build complete! (14.71s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "resolvingcontainer",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/kzlekk/ResolvingContainer.git"
    }
  ],
  "manifest_display_name" : "ClassyFlux",
  "name" : "ClassyFlux",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.13"
    },
    {
      "name" : "ios",
      "version" : "11.0"
    },
    {
      "name" : "watchos",
      "version" : "4.0"
    },
    {
      "name" : "tvos",
      "version" : "11.0"
    }
  ],
  "products" : [
    {
      "name" : "ClassyFlux",
      "targets" : [
        "ClassyFlux"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "ClassyFlux",
      "module_type" : "SwiftTarget",
      "name" : "ClassyFlux",
      "path" : "ClassyFlux",
      "product_dependencies" : [
        "ResolvingContainer"
      ],
      "product_memberships" : [
        "ClassyFlux"
      ],
      "sources" : [
        "FluxAction.swift",
        "FluxAggregator.swift",
        "FluxDispatcher.swift",
        "FluxMiddleware.swift",
        "FluxRepository.swift",
        "FluxStore.swift",
        "FluxWorker.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.1"
}
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:9d7dab235f2b0b46edadd73b1fb0c3b5323df02053420324a4a2f8ca89cb54a5
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Done.