This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.

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 TimelaneCombine with Swift 6.0 for macOS (SPM).

Swift 6 data race errors: 3

Build Command

env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete

Build Log

========================================
RunAll
========================================
Builder version: 4.40.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/icanzilb/TimelaneCombine.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/icanzilb/TimelaneCombine
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 4a6accd Merge pull request #24 from iamrado/fix/timelane-logo-not-visible
Cloned https://github.com/icanzilb/TimelaneCombine.git
Revision (git rev-parse @):
4a6accd2397e1937af1b3dcf4ca4f9d400db9216
SUCCESS checkout https://github.com/icanzilb/TimelaneCombine.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $workDir
https://github.com/icanzilb/TimelaneCombine.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/3] Write sources
[2/3] Write swift-version-6F35C1178C84523A.txt
[4/5] Compiling TimelaneCore TimelaneCore.swift
[5/5] Emitting module TimelaneCore
[6/8] Emitting module TimelaneCombine
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:51:27: warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
 39 |
 40 |     /// An option set representing one or more lane types to log data to.
 41 |     public struct LaneTypeOptions: OptionSet {
    |                   `- note: consider making struct 'LaneTypeOptions' conform to the 'Sendable' protocol
 42 |         public let rawValue: Int
 43 |         public init(rawValue: Int) {
    :
 49 |         public static let event: LaneTypeOptions        = .init(rawValue: 1 << 1)
 50 |         /// Log to both subscriptions and events lanes.
 51 |         public static let all: LaneTypeOptions          = [.subscription, .event]
    |                           |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: annotate 'all' 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
 52 |     }
 53 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:57:23: warning: class property 'defaultLogger' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
 55 |     public typealias Logger = (_ type: OSSignpostType, _ dso: UnsafeRawPointer, _ log: OSLog, _ name: StaticString, _ signpostID: OSSignpostID, _ format: StaticString, _ arguments: CVarArg...) -> Void
 56 |     /// A logger to use when no logger is specified. By default it's the Timelane Instrument logger.
 57 |     public static var defaultLogger = Loggers.timelaneInstrument
    |                       |- warning: class property 'defaultLogger' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'defaultLogger' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: annotate 'defaultLogger' 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 |     /// Commonly used Timelane loggers.
/Users/admin/builder/spi-builder-workspace/Sources/TimelaneCombine/TimelaneCombine.swift:134:67: warning: reference to class property 'defaultLogger' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
132 |                      function: StaticString  = #function, line: UInt = #line,
133 |                      transformValue: ((Output) -> String)? = nil,
134 |                      logger: @escaping Timelane.Logger = Timelane.defaultLogger)
    |                                                                   `- warning: reference to class property 'defaultLogger' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
135 |         -> Publishers.TimelanePublisher<Self> {
136 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:57:23: note: class property declared here
 55 |     public typealias Logger = (_ type: OSSignpostType, _ dso: UnsafeRawPointer, _ log: OSLog, _ name: StaticString, _ signpostID: OSSignpostID, _ format: StaticString, _ arguments: CVarArg...) -> Void
 56 |     /// A logger to use when no logger is specified. By default it's the Timelane Instrument logger.
 57 |     public static var defaultLogger = Loggers.timelaneInstrument
    |                       `- note: class property declared here
 58 |
 59 |     /// Commonly used Timelane loggers.
[7/8] Compiling TimelaneCombine TimelaneCombine.swift
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:51:27: warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
 39 |
 40 |     /// An option set representing one or more lane types to log data to.
 41 |     public struct LaneTypeOptions: OptionSet {
    |                   `- note: consider making struct 'LaneTypeOptions' conform to the 'Sendable' protocol
 42 |         public let rawValue: Int
 43 |         public init(rawValue: Int) {
    :
 49 |         public static let event: LaneTypeOptions        = .init(rawValue: 1 << 1)
 50 |         /// Log to both subscriptions and events lanes.
 51 |         public static let all: LaneTypeOptions          = [.subscription, .event]
    |                           |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: annotate 'all' 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
 52 |     }
 53 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:57:23: warning: class property 'defaultLogger' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
 55 |     public typealias Logger = (_ type: OSSignpostType, _ dso: UnsafeRawPointer, _ log: OSLog, _ name: StaticString, _ signpostID: OSSignpostID, _ format: StaticString, _ arguments: CVarArg...) -> Void
 56 |     /// A logger to use when no logger is specified. By default it's the Timelane Instrument logger.
 57 |     public static var defaultLogger = Loggers.timelaneInstrument
    |                       |- warning: class property 'defaultLogger' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'defaultLogger' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: annotate 'defaultLogger' 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 |     /// Commonly used Timelane loggers.
/Users/admin/builder/spi-builder-workspace/Sources/TimelaneCombine/TimelaneCombine.swift:134:67: warning: reference to class property 'defaultLogger' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
132 |                      function: StaticString  = #function, line: UInt = #line,
133 |                      transformValue: ((Output) -> String)? = nil,
134 |                      logger: @escaping Timelane.Logger = Timelane.defaultLogger)
    |                                                                   `- warning: reference to class property 'defaultLogger' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
135 |         -> Publishers.TimelanePublisher<Self> {
136 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:57:23: note: class property declared here
 55 |     public typealias Logger = (_ type: OSSignpostType, _ dso: UnsafeRawPointer, _ log: OSLog, _ name: StaticString, _ signpostID: OSSignpostID, _ format: StaticString, _ arguments: CVarArg...) -> Void
 56 |     /// A logger to use when no logger is specified. By default it's the Timelane Instrument logger.
 57 |     public static var defaultLogger = Loggers.timelaneInstrument
    |                       `- note: class property declared here
 58 |
 59 |     /// Commonly used Timelane loggers.
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:47:27: warning: static property 'subscription' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
 39 |
 40 |     /// An option set representing one or more lane types to log data to.
 41 |     public struct LaneTypeOptions: OptionSet {
    |                   `- note: consider making struct 'LaneTypeOptions' conform to the 'Sendable' protocol
 42 |         public let rawValue: Int
 43 |         public init(rawValue: Int) {
    :
 45 |         }
 46 |         /// Log to a subscription lane.
 47 |         public static let subscription: LaneTypeOptions = .init(rawValue: 1 << 0)
    |                           |- warning: static property 'subscription' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: annotate 'subscription' 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
 48 |         /// Log to events lane.
 49 |         public static let event: LaneTypeOptions        = .init(rawValue: 1 << 1)
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:49:27: warning: static property 'event' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
 39 |
 40 |     /// An option set representing one or more lane types to log data to.
 41 |     public struct LaneTypeOptions: OptionSet {
    |                   `- note: consider making struct 'LaneTypeOptions' conform to the 'Sendable' protocol
 42 |         public let rawValue: Int
 43 |         public init(rawValue: Int) {
    :
 47 |         public static let subscription: LaneTypeOptions = .init(rawValue: 1 << 0)
 48 |         /// Log to events lane.
 49 |         public static let event: LaneTypeOptions        = .init(rawValue: 1 << 1)
    |                           |- warning: static property 'event' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: annotate 'event' 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
 50 |         /// Log to both subscriptions and events lanes.
 51 |         public static let all: LaneTypeOptions          = [.subscription, .event]
/Users/admin/builder/spi-builder-workspace/Sources/TimelaneCombine/TimelaneCombine.swift:97:28: warning: capture of 'filter' with non-sendable type 'Timelane.LaneTypeOptions' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 95 |                     DispatchQueue.main.async {
 96 |                         // Cancelling the subscription
 97 |                         if filter.contains(.subscription) {
    |                            `- warning: capture of 'filter' with non-sendable type 'Timelane.LaneTypeOptions' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 98 |                             subscription.end(state: .cancelled)
 99 |                         }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:41:19: note: struct 'LaneTypeOptions' does not conform to the 'Sendable' protocol
 39 |
 40 |     /// An option set representing one or more lane types to log data to.
 41 |     public struct LaneTypeOptions: OptionSet {
    |                   `- note: struct 'LaneTypeOptions' does not conform to the 'Sendable' protocol
 42 |         public let rawValue: Int
 43 |         public init(rawValue: Int) {
/Users/admin/builder/spi-builder-workspace/Sources/TimelaneCombine/TimelaneCombine.swift:8:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'TimelaneCore'
  6 | import Foundation
  7 | import Combine
  8 | import TimelaneCore
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'TimelaneCore'
  9 |
 10 | extension Publishers {
/Users/admin/builder/spi-builder-workspace/Sources/TimelaneCombine/TimelaneCombine.swift:98:29: warning: capture of 'subscription' with non-sendable type 'Timelane.Subscription' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 96 |                         // Cancelling the subscription
 97 |                         if filter.contains(.subscription) {
 98 |                             subscription.end(state: .cancelled)
    |                             `- warning: capture of 'subscription' with non-sendable type 'Timelane.Subscription' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 99 |                         }
100 |                         if filter.contains(.event) {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:77:18: note: class 'Subscription' does not conform to the 'Sendable' protocol
 75 |     ///  - completion event - successful completion or a failure containing an error (optionally plotten on events lanes)
 76 |     ///  - value event - one or more values can be emitted by the subscription (optionally plotten on events lanes)
 77 |     public class Subscription {
    |                  `- note: class 'Subscription' does not conform to the 'Sendable' protocol
 78 |         /// A counter to keep track of subscriptions.
 79 |         static var subscriptionCounter: UInt64 = 0
/Users/admin/builder/spi-builder-workspace/Sources/TimelaneCombine/TimelaneCombine.swift:97:28: warning: sending 'filter' risks causing data races; this is an error in the Swift 6 language mode
 95 |                     DispatchQueue.main.async {
 96 |                         // Cancelling the subscription
 97 |                         if filter.contains(.subscription) {
    |                            |- warning: sending 'filter' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'filter' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 98 |                             subscription.end(state: .cancelled)
 99 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/TimelaneCombine/TimelaneCombine.swift:98:29: warning: sending 'subscription' risks causing data races; this is an error in the Swift 6 language mode
 96 |                         // Cancelling the subscription
 97 |                         if filter.contains(.subscription) {
 98 |                             subscription.end(state: .cancelled)
    |                             |- warning: sending 'subscription' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'subscription' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 99 |                         }
100 |                         if filter.contains(.event) {
[8/8] Compiling TimelaneCombine PublishedOnLane.swift
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:51:27: warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
 39 |
 40 |     /// An option set representing one or more lane types to log data to.
 41 |     public struct LaneTypeOptions: OptionSet {
    |                   `- note: consider making struct 'LaneTypeOptions' conform to the 'Sendable' protocol
 42 |         public let rawValue: Int
 43 |         public init(rawValue: Int) {
    :
 49 |         public static let event: LaneTypeOptions        = .init(rawValue: 1 << 1)
 50 |         /// Log to both subscriptions and events lanes.
 51 |         public static let all: LaneTypeOptions          = [.subscription, .event]
    |                           |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'Timelane.LaneTypeOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: annotate 'all' 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
 52 |     }
 53 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:57:23: warning: class property 'defaultLogger' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
 55 |     public typealias Logger = (_ type: OSSignpostType, _ dso: UnsafeRawPointer, _ log: OSLog, _ name: StaticString, _ signpostID: OSSignpostID, _ format: StaticString, _ arguments: CVarArg...) -> Void
 56 |     /// A logger to use when no logger is specified. By default it's the Timelane Instrument logger.
 57 |     public static var defaultLogger = Loggers.timelaneInstrument
    |                       |- warning: class property 'defaultLogger' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'defaultLogger' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: annotate 'defaultLogger' 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 |     /// Commonly used Timelane loggers.
/Users/admin/builder/spi-builder-workspace/Sources/TimelaneCombine/TimelaneCombine.swift:134:67: warning: reference to class property 'defaultLogger' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
132 |                      function: StaticString  = #function, line: UInt = #line,
133 |                      transformValue: ((Output) -> String)? = nil,
134 |                      logger: @escaping Timelane.Logger = Timelane.defaultLogger)
    |                                                                   `- warning: reference to class property 'defaultLogger' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
135 |         -> Publishers.TimelanePublisher<Self> {
136 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/TimelaneCore/Sources/TimelaneCore/TimelaneCore.swift:57:23: note: class property declared here
 55 |     public typealias Logger = (_ type: OSSignpostType, _ dso: UnsafeRawPointer, _ log: OSLog, _ name: StaticString, _ signpostID: OSSignpostID, _ format: StaticString, _ arguments: CVarArg...) -> Void
 56 |     /// A logger to use when no logger is specified. By default it's the Timelane Instrument logger.
 57 |     public static var defaultLogger = Loggers.timelaneInstrument
    |                       `- note: class property declared here
 58 |
 59 |     /// Commonly used Timelane loggers.
Build complete! (21.91s)
Fetching https://github.com/icanzilb/TimelaneCore
[5/435] Fetching timelanecore
Fetched https://github.com/icanzilb/TimelaneCore from cache (0.81s)
Computing version for https://github.com/icanzilb/TimelaneCore
Computed https://github.com/icanzilb/TimelaneCore at 2.0.0 (0.68s)
Creating working copy for https://github.com/icanzilb/TimelaneCore
Working copy of https://github.com/icanzilb/TimelaneCore resolved at 2.0.0
Build complete.
{
  "dependencies" : [
    {
      "identity" : "timelanecore",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.0.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/icanzilb/TimelaneCore"
    }
  ],
  "manifest_display_name" : "TimelaneCombine",
  "name" : "TimelaneCombine",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "TimelaneCombine",
      "targets" : [
        "TimelaneCombine"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "TimelaneCombineTests",
      "module_type" : "SwiftTarget",
      "name" : "TimelaneCombineTests",
      "path" : "Tests/TimelaneCombineTests",
      "product_dependencies" : [
        "TimelaneCoreTestUtils"
      ],
      "sources" : [
        "TestPublisher.swift",
        "TimelaneCombineTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "TimelaneCombine"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TimelaneCombine",
      "module_type" : "SwiftTarget",
      "name" : "TimelaneCombine",
      "path" : "Sources/TimelaneCombine",
      "product_dependencies" : [
        "TimelaneCore"
      ],
      "product_memberships" : [
        "TimelaneCombine"
      ],
      "sources" : [
        "PublishedOnLane.swift",
        "TimelaneCombine.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.1"
}
Done.
This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.