Build Information
Successful build of blue-triangle, reference 3.14.1 (efd6ba
), with Swift 6.1 for macOS (SPM) on 6 Jun 2025 16:13:11 UTC.
Swift 6 data race errors: 37
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
| |- note: add '@MainActor' to make static property 'payloadCache' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
283 | PayloadCache.init(configuration.cacheMemoryLimit,
284 | expiry: configuration.cacheExpiryDuration)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportManager.swift:37:33: warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
8 | import Foundation
9 |
10 | final class CrashReportManager: CrashReportManaging {
| `- note: class 'CrashReportManager' does not conform to the 'Sendable' protocol
11 |
12 | private let crashReportPersistence: CrashReportPersisting.Type
:
35 | self.intervalProvider = intervalProvider
36 | self.startupTask = Task.delayed(byTimeInterval: Constants.startupDelay, priority: .utility) { [weak self] in
37 | guard let session = self?.session() else {
| `- warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
38 | return
39 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportPersistence.swift:18:24: warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
16 |
17 | struct CrashReportPersistence: CrashReportPersisting {
18 | private static let logger = BTLogger.live
| |- warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 | private static var persistence: Persistence? {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Protocols/Logging.swift:10:10: note: protocol 'Logging' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | protocol Logging {
| `- note: protocol 'Logging' does not conform to the 'Sendable' protocol
11 | var enableDebug: Bool { get set }
12 |
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/DisableModeSessionManager.swift:99:14: warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
28 | /// - Note: This session manager is used exclusively when `enableAllTracking` is false.
29 | ///
30 | class DisableModeSessionManager : SessionManagerProtocol {
| `- note: class 'DisableModeSessionManager' does not conform to the 'Sendable' protocol
31 |
32 | private var expirationDurationInMS: Millisecond = 30 * 60 * 1000
:
97 | private func updateRemoteConfig(){
98 | queue.async { [weak self] in
99 | self?.updater.update(true) {}
| `- warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
100 | }
101 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:930:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
928 | }
929 |
930 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| `- note: closure captures 'page' which is accessible to code in the current task
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:931:45: warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
929 |
930 | Task {
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| |- warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'page' to actor-isolated instance method 'start(page:startTime:)' risks causing data races between actor-isolated and task-isolated uses
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:953:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
951 |
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:954:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:959:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
957 |
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:960:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:969:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
967 | /// - tuple: The asynchronously-delivered tuple containing the request contents as a Data instance and a URLResponse.
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| `- note: closure captures 'timer' which is accessible to code in the current task
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:970:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:975:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
973 |
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| `- note: closure captures 'timer' which is accessible to code in the current task
977 | }
978 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:976:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:request:error:)' risks causing data races between actor-isolated and task-isolated uses
977 | }
978 | }
[121/124] Compiling BlueTriangle CrashReportManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTLogger.swift:118:16: warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
116 |
117 | extension BTLogger {
118 | static let live: Logging = {
| |- warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'live' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
119 | BTLogger()
120 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Protocols/Logging.swift:10:10: note: protocol 'Logging' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | protocol Logging {
| `- note: protocol 'Logging' does not conform to the 'Sendable' protocol
11 | var enableDebug: Bool { get set }
12 |
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:58:40: warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 |
25 |
26 | class BTSignalCrashReporter {
| `- note: class 'BTSignalCrashReporter' does not conform to the 'Sendable' protocol
27 |
28 | private let directory : String
:
56 | case .nsException:
57 | self.startupTask = Task.delayed(byTimeInterval: Constants.startupDelay, priority: .utility) { [weak self] in
58 | guard let strongSelf = self else {
| `- warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
59 | return
60 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:91:37: warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure
24 |
25 |
26 | class BTSignalCrashReporter {
| `- note: class 'BTSignalCrashReporter' does not conform to the 'Sendable' protocol
27 |
28 | private let directory : String
:
89 | DispatchQueue.global(qos: .utility).async { [weak self] in
90 | do {
91 | if let strongSelf = self, let session_id = crash.btt_session_id, session_id.count > 0, let sessionId = UInt64(session_id){
| `- warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure
92 | var sessionCopy = session
93 | sessionCopy.sessionID = sessionId
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:92:39: warning: capture of 'session' with non-sendable type 'Session' in a '@Sendable' closure
90 | do {
91 | if let strongSelf = self, let session_id = crash.btt_session_id, session_id.count > 0, let sessionId = UInt64(session_id){
92 | var sessionCopy = session
| `- warning: capture of 'session' with non-sendable type 'Session' in a '@Sendable' closure
93 | sessionCopy.sessionID = sessionId
94 | let pageName = (crash.btt_page_name ?? "").count > 0 ? crash.btt_page_name : Constants.crashID
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Models/Session.swift:10:8: note: consider making struct 'Session' conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | struct Session: Equatable {
| `- note: consider making struct 'Session' conform to the 'Sendable' protocol
11 | let wcd = 1
12 | let eventType = 9
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTTimer.swift:250:20: warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'BTTimer.Configuration' may have shared mutable state; this is an error in the Swift 6 language mode
230 | // MARK: - Supporting Types
231 | extension BTTimer {
232 | struct Configuration {
| `- note: consider making struct 'Configuration' conform to the 'Sendable' protocol
233 | let timeIntervalProvider: () -> TimeInterval
234 |
:
248 | }
249 |
250 | static let live = Self(
| |- warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'BTTimer.Configuration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'live' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
251 | timeIntervalProvider: { Date().timeIntervalSince1970 }
252 | )
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:22:25: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | final public class BlueTriangle: NSObject {
21 |
22 | internal static var configuration = BlueTriangleConfiguration()
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 |
24 | private static var _screenTracker: BTTScreenLifecycleTracker?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:24:24: warning: static property '_screenTracker' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
22 | internal static var configuration = BlueTriangleConfiguration()
23 |
24 | private static var _screenTracker: BTTScreenLifecycleTracker?
| |- warning: static property '_screenTracker' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_screenTracker' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_screenTracker' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 | internal static var screenTracker: BTTScreenLifecycleTracker?{
26 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:33:24: warning: static property '_networkStateMonitor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | }
32 | }
33 | private static var _networkStateMonitor: NetworkStateMonitorProtocol?
| |- warning: static property '_networkStateMonitor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_networkStateMonitor' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_networkStateMonitor' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 | internal static var networkStateMonitor: NetworkStateMonitorProtocol?{
35 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:43:24: warning: static property '_appEventObserver' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
41 | }
42 |
43 | private static var _appEventObserver: AppEventObserver?
| |- warning: static property '_appEventObserver' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_appEventObserver' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_appEventObserver' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | internal static var appEventObserver: AppEventObserver?{
45 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:53:24: warning: static property '_nsExeptionReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
51 | }
52 |
53 | private static var _nsExeptionReporter: CrashReportManaging?
| |- warning: static property '_nsExeptionReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_nsExeptionReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_nsExeptionReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 | private static var nsExeptionReporter: CrashReportManaging?{
55 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:63:24: warning: static property '_signalCrashReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
61 | }
62 |
63 | private static var _signalCrashReporter: BTSignalCrashReporter?
| |- warning: static property '_signalCrashReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_signalCrashReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_signalCrashReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
64 | internal static var signalCrashReporter: BTSignalCrashReporter?{
65 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:73:24: warning: static property '_launchTimeReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
71 | }
72 |
73 | private static var _launchTimeReporter : LaunchTimeReporter?
| |- warning: static property '_launchTimeReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_launchTimeReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_launchTimeReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
74 | internal static var launchTimeReporter : LaunchTimeReporter?{
75 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:83:24: warning: static property '_memoryWarningWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
81 | }
82 |
83 | private static var _memoryWarningWatchDog : MemoryWarningWatchDog?
| |- warning: static property '_memoryWarningWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_memoryWarningWatchDog' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_memoryWarningWatchDog' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | internal static var memoryWarningWatchDog : MemoryWarningWatchDog?{
85 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:93:24: warning: static property '_anrWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
91 | }
92 |
93 | private static var _anrWatchDog : ANRWatchDog?
| |- warning: static property '_anrWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_anrWatchDog' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_anrWatchDog' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
94 | internal static var anrWatchDog : ANRWatchDog?{
95 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:103:24: warning: static property '_sessionManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
101 | }
102 |
103 | private static var _sessionManager : SessionManagerProtocol?
| |- warning: static property '_sessionManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_sessionManager' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_sessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
104 | private static var sessionManager : SessionManagerProtocol?{
105 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:113:25: warning: static property 'clarityConnector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
111 | }
112 |
113 | internal static var clarityConnector = ClaritySessionConnector(logger: logger)
| |- warning: static property 'clarityConnector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'clarityConnector' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'clarityConnector' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
114 |
115 | internal static var enableAllTracking: Bool = {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:115:25: warning: static property 'enableAllTracking' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
113 | internal static var clarityConnector = ClaritySessionConnector(logger: logger)
114 |
115 | internal static var enableAllTracking: Bool = {
| |- warning: static property 'enableAllTracking' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableAllTracking' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enableAllTracking' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | let value = configRepo.isEnableAllTracking()
117 | return value
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:120:24: warning: static property 'configRepo' is not concurrency-safe because non-'Sendable' type 'BTTConfigurationRepo' may have shared mutable state; this is an error in the Swift 6 language mode
118 | }()
119 |
120 | private static let configRepo: BTTConfigurationRepo = {
| |- warning: static property 'configRepo' is not concurrency-safe because non-'Sendable' type 'BTTConfigurationRepo' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'configRepo' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 | let config = BTTConfigurationRepo(BTTRemoteConfig.defaultConfig)
122 | return config
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/DynamicConfig/BTTConfigurationRepo.swift:17:7: note: class 'BTTConfigurationRepo' does not conform to the 'Sendable' protocol
15 | }
16 |
17 | class BTTConfigurationRepo : ConfigurationRepo{
| `- note: class 'BTTConfigurationRepo' does not conform to the 'Sendable' protocol
18 |
19 | private let queue = DispatchQueue(label: "com.bluetriangle.configurationRepo", attributes: .concurrent)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:125:25: warning: static property 'disableModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
123 | }()
124 |
125 | internal static let disableModeSessionManager : SessionManagerProtocol = {
| |- warning: static property 'disableModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'disableModeSessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
126 | let configFetcher = BTTConfigurationFetcher()
127 | let configSyncer = BTTStoredConfigSyncer(configRepo: configRepo, logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/SessionManager.swift:18:10: note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
16 | #endif
17 |
18 | protocol SessionManagerProtocol {
| `- note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
19 | func start(with expiry : Millisecond)
20 | func getSessionData() -> SessionData?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:132:25: warning: static property 'enabledModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
130 | }()
131 |
132 | internal static let enabledModeSessionManager : SessionManagerProtocol = {
| |- warning: static property 'enabledModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'enabledModeSessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
133 | let configFetcher = BTTConfigurationFetcher()
134 | let configSyncer = BTTStoredConfigSyncer(configRepo: configRepo, logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/SessionManager.swift:18:10: note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
16 | #endif
17 |
18 | protocol SessionManagerProtocol {
| `- note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
19 | func start(with expiry : Millisecond)
20 | func getSessionData() -> SessionData?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:142:24: warning: static property 'activeTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
140 | private static let lock = NSLock()
141 | private static let trackingLock = NSRecursiveLock()
142 | private static var activeTimers = [BTTimer]()
| |- warning: static property 'activeTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeTimers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeTimers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
143 | #if os(iOS)
144 | private static let matricKitWatchDog = MetricKitWatchDog()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:210:24: warning: static property '_session' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
208 | }
209 |
210 | private static var _session: Session? = {
| |- warning: static property '_session' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_session' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_session' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
211 | configuration.makeSession()
212 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:239:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
237 | }
238 |
239 | private static var logger: Logging = {
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
240 | configuration.makeLogger()
241 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:244:24: warning: static property 'uploader' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
242 |
243 |
244 | private static var uploader: Uploading = {
| |- warning: static property 'uploader' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'uploader' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'uploader' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
245 | configuration.uploaderConfiguration.makeUploader(
246 | logger: logger,
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:252:24: warning: static property 'timerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
250 | }()
251 |
252 | private static var timerFactory: (Page, BTTimer.TimerType) -> BTTimer = {
| |- warning: static property 'timerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'timerFactory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'timerFactory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
253 | configuration.timerConfiguration.makeTimerFactory(
254 | logger: logger,
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:258:24: warning: static property 'internalTimerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
256 | }()
257 |
258 | private static var internalTimerFactory: () -> InternalTimer = {
| |- warning: static property 'internalTimerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'internalTimerFactory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'internalTimerFactory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
259 | configuration.internalTimerConfiguration.makeTimerFactory(logger: logger)
260 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:262:24: warning: static property 'shouldCaptureRequests' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
260 | }()
261 |
262 | private static var shouldCaptureRequests: Bool = {
| |- warning: static property 'shouldCaptureRequests' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shouldCaptureRequests' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'shouldCaptureRequests' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
263 | sessionData()?.shouldNetworkCapture ?? false
264 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:274:36: warning: static property 'initialized' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
272 | /// enable/disable state via the Remote Configuration Updater.
273 | ///
274 | public private(set) static var initialized = false
| |- warning: static property 'initialized' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'initialized' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'initialized' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
275 |
276 | private static var capturedRequestCollector: CapturedRequestCollecting? = {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:276:24: warning: static property 'capturedRequestCollector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
274 | public private(set) static var initialized = false
275 |
276 | private static var capturedRequestCollector: CapturedRequestCollecting? = {
| |- warning: static property 'capturedRequestCollector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'capturedRequestCollector' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'capturedRequestCollector' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
277 | return makeCapturedRequestCollector()
278 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:282:25: warning: static property 'payloadCache' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
280 |
281 | //Cache components
282 | internal static var payloadCache : PayloadCacheProtocol = {
| |- warning: static property 'payloadCache' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'payloadCache' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'payloadCache' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
283 | PayloadCache.init(configuration.cacheMemoryLimit,
284 | expiry: configuration.cacheExpiryDuration)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportManager.swift:37:33: warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
8 | import Foundation
9 |
10 | final class CrashReportManager: CrashReportManaging {
| `- note: class 'CrashReportManager' does not conform to the 'Sendable' protocol
11 |
12 | private let crashReportPersistence: CrashReportPersisting.Type
:
35 | self.intervalProvider = intervalProvider
36 | self.startupTask = Task.delayed(byTimeInterval: Constants.startupDelay, priority: .utility) { [weak self] in
37 | guard let session = self?.session() else {
| `- warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
38 | return
39 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportPersistence.swift:18:24: warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
16 |
17 | struct CrashReportPersistence: CrashReportPersisting {
18 | private static let logger = BTLogger.live
| |- warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 | private static var persistence: Persistence? {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Protocols/Logging.swift:10:10: note: protocol 'Logging' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | protocol Logging {
| `- note: protocol 'Logging' does not conform to the 'Sendable' protocol
11 | var enableDebug: Bool { get set }
12 |
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/DisableModeSessionManager.swift:99:14: warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
28 | /// - Note: This session manager is used exclusively when `enableAllTracking` is false.
29 | ///
30 | class DisableModeSessionManager : SessionManagerProtocol {
| `- note: class 'DisableModeSessionManager' does not conform to the 'Sendable' protocol
31 |
32 | private var expirationDurationInMS: Millisecond = 30 * 60 * 1000
:
97 | private func updateRemoteConfig(){
98 | queue.async { [weak self] in
99 | self?.updater.update(true) {}
| `- warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
100 | }
101 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:930:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
928 | }
929 |
930 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| `- note: closure captures 'page' which is accessible to code in the current task
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:931:45: warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
929 |
930 | Task {
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| |- warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'page' to actor-isolated instance method 'start(page:startTime:)' risks causing data races between actor-isolated and task-isolated uses
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:953:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
951 |
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:954:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:959:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
957 |
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:960:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:969:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
967 | /// - tuple: The asynchronously-delivered tuple containing the request contents as a Data instance and a URLResponse.
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| `- note: closure captures 'timer' which is accessible to code in the current task
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:970:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:975:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
973 |
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| `- note: closure captures 'timer' which is accessible to code in the current task
977 | }
978 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:976:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:request:error:)' risks causing data races between actor-isolated and task-isolated uses
977 | }
978 | }
[122/124] Compiling BlueTriangle CrashReportPersistence.swift
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTLogger.swift:118:16: warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
116 |
117 | extension BTLogger {
118 | static let live: Logging = {
| |- warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'live' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
119 | BTLogger()
120 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Protocols/Logging.swift:10:10: note: protocol 'Logging' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | protocol Logging {
| `- note: protocol 'Logging' does not conform to the 'Sendable' protocol
11 | var enableDebug: Bool { get set }
12 |
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:58:40: warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 |
25 |
26 | class BTSignalCrashReporter {
| `- note: class 'BTSignalCrashReporter' does not conform to the 'Sendable' protocol
27 |
28 | private let directory : String
:
56 | case .nsException:
57 | self.startupTask = Task.delayed(byTimeInterval: Constants.startupDelay, priority: .utility) { [weak self] in
58 | guard let strongSelf = self else {
| `- warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
59 | return
60 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:91:37: warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure
24 |
25 |
26 | class BTSignalCrashReporter {
| `- note: class 'BTSignalCrashReporter' does not conform to the 'Sendable' protocol
27 |
28 | private let directory : String
:
89 | DispatchQueue.global(qos: .utility).async { [weak self] in
90 | do {
91 | if let strongSelf = self, let session_id = crash.btt_session_id, session_id.count > 0, let sessionId = UInt64(session_id){
| `- warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure
92 | var sessionCopy = session
93 | sessionCopy.sessionID = sessionId
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:92:39: warning: capture of 'session' with non-sendable type 'Session' in a '@Sendable' closure
90 | do {
91 | if let strongSelf = self, let session_id = crash.btt_session_id, session_id.count > 0, let sessionId = UInt64(session_id){
92 | var sessionCopy = session
| `- warning: capture of 'session' with non-sendable type 'Session' in a '@Sendable' closure
93 | sessionCopy.sessionID = sessionId
94 | let pageName = (crash.btt_page_name ?? "").count > 0 ? crash.btt_page_name : Constants.crashID
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Models/Session.swift:10:8: note: consider making struct 'Session' conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | struct Session: Equatable {
| `- note: consider making struct 'Session' conform to the 'Sendable' protocol
11 | let wcd = 1
12 | let eventType = 9
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTTimer.swift:250:20: warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'BTTimer.Configuration' may have shared mutable state; this is an error in the Swift 6 language mode
230 | // MARK: - Supporting Types
231 | extension BTTimer {
232 | struct Configuration {
| `- note: consider making struct 'Configuration' conform to the 'Sendable' protocol
233 | let timeIntervalProvider: () -> TimeInterval
234 |
:
248 | }
249 |
250 | static let live = Self(
| |- warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'BTTimer.Configuration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'live' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
251 | timeIntervalProvider: { Date().timeIntervalSince1970 }
252 | )
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:22:25: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | final public class BlueTriangle: NSObject {
21 |
22 | internal static var configuration = BlueTriangleConfiguration()
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 |
24 | private static var _screenTracker: BTTScreenLifecycleTracker?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:24:24: warning: static property '_screenTracker' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
22 | internal static var configuration = BlueTriangleConfiguration()
23 |
24 | private static var _screenTracker: BTTScreenLifecycleTracker?
| |- warning: static property '_screenTracker' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_screenTracker' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_screenTracker' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 | internal static var screenTracker: BTTScreenLifecycleTracker?{
26 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:33:24: warning: static property '_networkStateMonitor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | }
32 | }
33 | private static var _networkStateMonitor: NetworkStateMonitorProtocol?
| |- warning: static property '_networkStateMonitor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_networkStateMonitor' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_networkStateMonitor' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 | internal static var networkStateMonitor: NetworkStateMonitorProtocol?{
35 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:43:24: warning: static property '_appEventObserver' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
41 | }
42 |
43 | private static var _appEventObserver: AppEventObserver?
| |- warning: static property '_appEventObserver' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_appEventObserver' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_appEventObserver' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | internal static var appEventObserver: AppEventObserver?{
45 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:53:24: warning: static property '_nsExeptionReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
51 | }
52 |
53 | private static var _nsExeptionReporter: CrashReportManaging?
| |- warning: static property '_nsExeptionReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_nsExeptionReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_nsExeptionReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 | private static var nsExeptionReporter: CrashReportManaging?{
55 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:63:24: warning: static property '_signalCrashReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
61 | }
62 |
63 | private static var _signalCrashReporter: BTSignalCrashReporter?
| |- warning: static property '_signalCrashReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_signalCrashReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_signalCrashReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
64 | internal static var signalCrashReporter: BTSignalCrashReporter?{
65 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:73:24: warning: static property '_launchTimeReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
71 | }
72 |
73 | private static var _launchTimeReporter : LaunchTimeReporter?
| |- warning: static property '_launchTimeReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_launchTimeReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_launchTimeReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
74 | internal static var launchTimeReporter : LaunchTimeReporter?{
75 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:83:24: warning: static property '_memoryWarningWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
81 | }
82 |
83 | private static var _memoryWarningWatchDog : MemoryWarningWatchDog?
| |- warning: static property '_memoryWarningWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_memoryWarningWatchDog' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_memoryWarningWatchDog' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | internal static var memoryWarningWatchDog : MemoryWarningWatchDog?{
85 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:93:24: warning: static property '_anrWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
91 | }
92 |
93 | private static var _anrWatchDog : ANRWatchDog?
| |- warning: static property '_anrWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_anrWatchDog' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_anrWatchDog' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
94 | internal static var anrWatchDog : ANRWatchDog?{
95 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:103:24: warning: static property '_sessionManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
101 | }
102 |
103 | private static var _sessionManager : SessionManagerProtocol?
| |- warning: static property '_sessionManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_sessionManager' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_sessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
104 | private static var sessionManager : SessionManagerProtocol?{
105 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:113:25: warning: static property 'clarityConnector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
111 | }
112 |
113 | internal static var clarityConnector = ClaritySessionConnector(logger: logger)
| |- warning: static property 'clarityConnector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'clarityConnector' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'clarityConnector' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
114 |
115 | internal static var enableAllTracking: Bool = {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:115:25: warning: static property 'enableAllTracking' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
113 | internal static var clarityConnector = ClaritySessionConnector(logger: logger)
114 |
115 | internal static var enableAllTracking: Bool = {
| |- warning: static property 'enableAllTracking' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableAllTracking' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enableAllTracking' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | let value = configRepo.isEnableAllTracking()
117 | return value
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:120:24: warning: static property 'configRepo' is not concurrency-safe because non-'Sendable' type 'BTTConfigurationRepo' may have shared mutable state; this is an error in the Swift 6 language mode
118 | }()
119 |
120 | private static let configRepo: BTTConfigurationRepo = {
| |- warning: static property 'configRepo' is not concurrency-safe because non-'Sendable' type 'BTTConfigurationRepo' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'configRepo' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 | let config = BTTConfigurationRepo(BTTRemoteConfig.defaultConfig)
122 | return config
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/DynamicConfig/BTTConfigurationRepo.swift:17:7: note: class 'BTTConfigurationRepo' does not conform to the 'Sendable' protocol
15 | }
16 |
17 | class BTTConfigurationRepo : ConfigurationRepo{
| `- note: class 'BTTConfigurationRepo' does not conform to the 'Sendable' protocol
18 |
19 | private let queue = DispatchQueue(label: "com.bluetriangle.configurationRepo", attributes: .concurrent)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:125:25: warning: static property 'disableModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
123 | }()
124 |
125 | internal static let disableModeSessionManager : SessionManagerProtocol = {
| |- warning: static property 'disableModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'disableModeSessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
126 | let configFetcher = BTTConfigurationFetcher()
127 | let configSyncer = BTTStoredConfigSyncer(configRepo: configRepo, logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/SessionManager.swift:18:10: note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
16 | #endif
17 |
18 | protocol SessionManagerProtocol {
| `- note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
19 | func start(with expiry : Millisecond)
20 | func getSessionData() -> SessionData?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:132:25: warning: static property 'enabledModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
130 | }()
131 |
132 | internal static let enabledModeSessionManager : SessionManagerProtocol = {
| |- warning: static property 'enabledModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'enabledModeSessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
133 | let configFetcher = BTTConfigurationFetcher()
134 | let configSyncer = BTTStoredConfigSyncer(configRepo: configRepo, logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/SessionManager.swift:18:10: note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
16 | #endif
17 |
18 | protocol SessionManagerProtocol {
| `- note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
19 | func start(with expiry : Millisecond)
20 | func getSessionData() -> SessionData?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:142:24: warning: static property 'activeTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
140 | private static let lock = NSLock()
141 | private static let trackingLock = NSRecursiveLock()
142 | private static var activeTimers = [BTTimer]()
| |- warning: static property 'activeTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeTimers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeTimers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
143 | #if os(iOS)
144 | private static let matricKitWatchDog = MetricKitWatchDog()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:210:24: warning: static property '_session' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
208 | }
209 |
210 | private static var _session: Session? = {
| |- warning: static property '_session' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_session' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_session' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
211 | configuration.makeSession()
212 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:239:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
237 | }
238 |
239 | private static var logger: Logging = {
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
240 | configuration.makeLogger()
241 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:244:24: warning: static property 'uploader' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
242 |
243 |
244 | private static var uploader: Uploading = {
| |- warning: static property 'uploader' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'uploader' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'uploader' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
245 | configuration.uploaderConfiguration.makeUploader(
246 | logger: logger,
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:252:24: warning: static property 'timerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
250 | }()
251 |
252 | private static var timerFactory: (Page, BTTimer.TimerType) -> BTTimer = {
| |- warning: static property 'timerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'timerFactory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'timerFactory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
253 | configuration.timerConfiguration.makeTimerFactory(
254 | logger: logger,
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:258:24: warning: static property 'internalTimerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
256 | }()
257 |
258 | private static var internalTimerFactory: () -> InternalTimer = {
| |- warning: static property 'internalTimerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'internalTimerFactory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'internalTimerFactory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
259 | configuration.internalTimerConfiguration.makeTimerFactory(logger: logger)
260 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:262:24: warning: static property 'shouldCaptureRequests' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
260 | }()
261 |
262 | private static var shouldCaptureRequests: Bool = {
| |- warning: static property 'shouldCaptureRequests' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shouldCaptureRequests' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'shouldCaptureRequests' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
263 | sessionData()?.shouldNetworkCapture ?? false
264 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:274:36: warning: static property 'initialized' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
272 | /// enable/disable state via the Remote Configuration Updater.
273 | ///
274 | public private(set) static var initialized = false
| |- warning: static property 'initialized' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'initialized' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'initialized' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
275 |
276 | private static var capturedRequestCollector: CapturedRequestCollecting? = {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:276:24: warning: static property 'capturedRequestCollector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
274 | public private(set) static var initialized = false
275 |
276 | private static var capturedRequestCollector: CapturedRequestCollecting? = {
| |- warning: static property 'capturedRequestCollector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'capturedRequestCollector' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'capturedRequestCollector' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
277 | return makeCapturedRequestCollector()
278 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:282:25: warning: static property 'payloadCache' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
280 |
281 | //Cache components
282 | internal static var payloadCache : PayloadCacheProtocol = {
| |- warning: static property 'payloadCache' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'payloadCache' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'payloadCache' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
283 | PayloadCache.init(configuration.cacheMemoryLimit,
284 | expiry: configuration.cacheExpiryDuration)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportManager.swift:37:33: warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
8 | import Foundation
9 |
10 | final class CrashReportManager: CrashReportManaging {
| `- note: class 'CrashReportManager' does not conform to the 'Sendable' protocol
11 |
12 | private let crashReportPersistence: CrashReportPersisting.Type
:
35 | self.intervalProvider = intervalProvider
36 | self.startupTask = Task.delayed(byTimeInterval: Constants.startupDelay, priority: .utility) { [weak self] in
37 | guard let session = self?.session() else {
| `- warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
38 | return
39 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportPersistence.swift:18:24: warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
16 |
17 | struct CrashReportPersistence: CrashReportPersisting {
18 | private static let logger = BTLogger.live
| |- warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 | private static var persistence: Persistence? {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Protocols/Logging.swift:10:10: note: protocol 'Logging' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | protocol Logging {
| `- note: protocol 'Logging' does not conform to the 'Sendable' protocol
11 | var enableDebug: Bool { get set }
12 |
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/DisableModeSessionManager.swift:99:14: warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
28 | /// - Note: This session manager is used exclusively when `enableAllTracking` is false.
29 | ///
30 | class DisableModeSessionManager : SessionManagerProtocol {
| `- note: class 'DisableModeSessionManager' does not conform to the 'Sendable' protocol
31 |
32 | private var expirationDurationInMS: Millisecond = 30 * 60 * 1000
:
97 | private func updateRemoteConfig(){
98 | queue.async { [weak self] in
99 | self?.updater.update(true) {}
| `- warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
100 | }
101 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:930:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
928 | }
929 |
930 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| `- note: closure captures 'page' which is accessible to code in the current task
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:931:45: warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
929 |
930 | Task {
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| |- warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'page' to actor-isolated instance method 'start(page:startTime:)' risks causing data races between actor-isolated and task-isolated uses
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:953:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
951 |
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:954:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:959:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
957 |
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:960:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:969:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
967 | /// - tuple: The asynchronously-delivered tuple containing the request contents as a Data instance and a URLResponse.
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| `- note: closure captures 'timer' which is accessible to code in the current task
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:970:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:975:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
973 |
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| `- note: closure captures 'timer' which is accessible to code in the current task
977 | }
978 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:976:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:request:error:)' risks causing data races between actor-isolated and task-isolated uses
977 | }
978 | }
[123/124] Compiling BlueTriangle Device.swift
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTLogger.swift:118:16: warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
116 |
117 | extension BTLogger {
118 | static let live: Logging = {
| |- warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'live' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
119 | BTLogger()
120 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Protocols/Logging.swift:10:10: note: protocol 'Logging' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | protocol Logging {
| `- note: protocol 'Logging' does not conform to the 'Sendable' protocol
11 | var enableDebug: Bool { get set }
12 |
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:58:40: warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 |
25 |
26 | class BTSignalCrashReporter {
| `- note: class 'BTSignalCrashReporter' does not conform to the 'Sendable' protocol
27 |
28 | private let directory : String
:
56 | case .nsException:
57 | self.startupTask = Task.delayed(byTimeInterval: Constants.startupDelay, priority: .utility) { [weak self] in
58 | guard let strongSelf = self else {
| `- warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
59 | return
60 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:91:37: warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure
24 |
25 |
26 | class BTSignalCrashReporter {
| `- note: class 'BTSignalCrashReporter' does not conform to the 'Sendable' protocol
27 |
28 | private let directory : String
:
89 | DispatchQueue.global(qos: .utility).async { [weak self] in
90 | do {
91 | if let strongSelf = self, let session_id = crash.btt_session_id, session_id.count > 0, let sessionId = UInt64(session_id){
| `- warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure
92 | var sessionCopy = session
93 | sessionCopy.sessionID = sessionId
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:92:39: warning: capture of 'session' with non-sendable type 'Session' in a '@Sendable' closure
90 | do {
91 | if let strongSelf = self, let session_id = crash.btt_session_id, session_id.count > 0, let sessionId = UInt64(session_id){
92 | var sessionCopy = session
| `- warning: capture of 'session' with non-sendable type 'Session' in a '@Sendable' closure
93 | sessionCopy.sessionID = sessionId
94 | let pageName = (crash.btt_page_name ?? "").count > 0 ? crash.btt_page_name : Constants.crashID
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Models/Session.swift:10:8: note: consider making struct 'Session' conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | struct Session: Equatable {
| `- note: consider making struct 'Session' conform to the 'Sendable' protocol
11 | let wcd = 1
12 | let eventType = 9
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTTimer.swift:250:20: warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'BTTimer.Configuration' may have shared mutable state; this is an error in the Swift 6 language mode
230 | // MARK: - Supporting Types
231 | extension BTTimer {
232 | struct Configuration {
| `- note: consider making struct 'Configuration' conform to the 'Sendable' protocol
233 | let timeIntervalProvider: () -> TimeInterval
234 |
:
248 | }
249 |
250 | static let live = Self(
| |- warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'BTTimer.Configuration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'live' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
251 | timeIntervalProvider: { Date().timeIntervalSince1970 }
252 | )
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:22:25: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | final public class BlueTriangle: NSObject {
21 |
22 | internal static var configuration = BlueTriangleConfiguration()
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 |
24 | private static var _screenTracker: BTTScreenLifecycleTracker?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:24:24: warning: static property '_screenTracker' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
22 | internal static var configuration = BlueTriangleConfiguration()
23 |
24 | private static var _screenTracker: BTTScreenLifecycleTracker?
| |- warning: static property '_screenTracker' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_screenTracker' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_screenTracker' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 | internal static var screenTracker: BTTScreenLifecycleTracker?{
26 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:33:24: warning: static property '_networkStateMonitor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | }
32 | }
33 | private static var _networkStateMonitor: NetworkStateMonitorProtocol?
| |- warning: static property '_networkStateMonitor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_networkStateMonitor' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_networkStateMonitor' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 | internal static var networkStateMonitor: NetworkStateMonitorProtocol?{
35 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:43:24: warning: static property '_appEventObserver' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
41 | }
42 |
43 | private static var _appEventObserver: AppEventObserver?
| |- warning: static property '_appEventObserver' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_appEventObserver' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_appEventObserver' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | internal static var appEventObserver: AppEventObserver?{
45 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:53:24: warning: static property '_nsExeptionReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
51 | }
52 |
53 | private static var _nsExeptionReporter: CrashReportManaging?
| |- warning: static property '_nsExeptionReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_nsExeptionReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_nsExeptionReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 | private static var nsExeptionReporter: CrashReportManaging?{
55 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:63:24: warning: static property '_signalCrashReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
61 | }
62 |
63 | private static var _signalCrashReporter: BTSignalCrashReporter?
| |- warning: static property '_signalCrashReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_signalCrashReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_signalCrashReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
64 | internal static var signalCrashReporter: BTSignalCrashReporter?{
65 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:73:24: warning: static property '_launchTimeReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
71 | }
72 |
73 | private static var _launchTimeReporter : LaunchTimeReporter?
| |- warning: static property '_launchTimeReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_launchTimeReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_launchTimeReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
74 | internal static var launchTimeReporter : LaunchTimeReporter?{
75 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:83:24: warning: static property '_memoryWarningWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
81 | }
82 |
83 | private static var _memoryWarningWatchDog : MemoryWarningWatchDog?
| |- warning: static property '_memoryWarningWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_memoryWarningWatchDog' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_memoryWarningWatchDog' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | internal static var memoryWarningWatchDog : MemoryWarningWatchDog?{
85 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:93:24: warning: static property '_anrWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
91 | }
92 |
93 | private static var _anrWatchDog : ANRWatchDog?
| |- warning: static property '_anrWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_anrWatchDog' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_anrWatchDog' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
94 | internal static var anrWatchDog : ANRWatchDog?{
95 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:103:24: warning: static property '_sessionManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
101 | }
102 |
103 | private static var _sessionManager : SessionManagerProtocol?
| |- warning: static property '_sessionManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_sessionManager' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_sessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
104 | private static var sessionManager : SessionManagerProtocol?{
105 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:113:25: warning: static property 'clarityConnector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
111 | }
112 |
113 | internal static var clarityConnector = ClaritySessionConnector(logger: logger)
| |- warning: static property 'clarityConnector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'clarityConnector' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'clarityConnector' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
114 |
115 | internal static var enableAllTracking: Bool = {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:115:25: warning: static property 'enableAllTracking' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
113 | internal static var clarityConnector = ClaritySessionConnector(logger: logger)
114 |
115 | internal static var enableAllTracking: Bool = {
| |- warning: static property 'enableAllTracking' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableAllTracking' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enableAllTracking' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | let value = configRepo.isEnableAllTracking()
117 | return value
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:120:24: warning: static property 'configRepo' is not concurrency-safe because non-'Sendable' type 'BTTConfigurationRepo' may have shared mutable state; this is an error in the Swift 6 language mode
118 | }()
119 |
120 | private static let configRepo: BTTConfigurationRepo = {
| |- warning: static property 'configRepo' is not concurrency-safe because non-'Sendable' type 'BTTConfigurationRepo' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'configRepo' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 | let config = BTTConfigurationRepo(BTTRemoteConfig.defaultConfig)
122 | return config
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/DynamicConfig/BTTConfigurationRepo.swift:17:7: note: class 'BTTConfigurationRepo' does not conform to the 'Sendable' protocol
15 | }
16 |
17 | class BTTConfigurationRepo : ConfigurationRepo{
| `- note: class 'BTTConfigurationRepo' does not conform to the 'Sendable' protocol
18 |
19 | private let queue = DispatchQueue(label: "com.bluetriangle.configurationRepo", attributes: .concurrent)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:125:25: warning: static property 'disableModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
123 | }()
124 |
125 | internal static let disableModeSessionManager : SessionManagerProtocol = {
| |- warning: static property 'disableModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'disableModeSessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
126 | let configFetcher = BTTConfigurationFetcher()
127 | let configSyncer = BTTStoredConfigSyncer(configRepo: configRepo, logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/SessionManager.swift:18:10: note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
16 | #endif
17 |
18 | protocol SessionManagerProtocol {
| `- note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
19 | func start(with expiry : Millisecond)
20 | func getSessionData() -> SessionData?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:132:25: warning: static property 'enabledModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
130 | }()
131 |
132 | internal static let enabledModeSessionManager : SessionManagerProtocol = {
| |- warning: static property 'enabledModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'enabledModeSessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
133 | let configFetcher = BTTConfigurationFetcher()
134 | let configSyncer = BTTStoredConfigSyncer(configRepo: configRepo, logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/SessionManager.swift:18:10: note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
16 | #endif
17 |
18 | protocol SessionManagerProtocol {
| `- note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
19 | func start(with expiry : Millisecond)
20 | func getSessionData() -> SessionData?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:142:24: warning: static property 'activeTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
140 | private static let lock = NSLock()
141 | private static let trackingLock = NSRecursiveLock()
142 | private static var activeTimers = [BTTimer]()
| |- warning: static property 'activeTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeTimers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeTimers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
143 | #if os(iOS)
144 | private static let matricKitWatchDog = MetricKitWatchDog()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:210:24: warning: static property '_session' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
208 | }
209 |
210 | private static var _session: Session? = {
| |- warning: static property '_session' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_session' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_session' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
211 | configuration.makeSession()
212 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:239:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
237 | }
238 |
239 | private static var logger: Logging = {
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
240 | configuration.makeLogger()
241 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:244:24: warning: static property 'uploader' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
242 |
243 |
244 | private static var uploader: Uploading = {
| |- warning: static property 'uploader' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'uploader' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'uploader' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
245 | configuration.uploaderConfiguration.makeUploader(
246 | logger: logger,
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:252:24: warning: static property 'timerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
250 | }()
251 |
252 | private static var timerFactory: (Page, BTTimer.TimerType) -> BTTimer = {
| |- warning: static property 'timerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'timerFactory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'timerFactory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
253 | configuration.timerConfiguration.makeTimerFactory(
254 | logger: logger,
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:258:24: warning: static property 'internalTimerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
256 | }()
257 |
258 | private static var internalTimerFactory: () -> InternalTimer = {
| |- warning: static property 'internalTimerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'internalTimerFactory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'internalTimerFactory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
259 | configuration.internalTimerConfiguration.makeTimerFactory(logger: logger)
260 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:262:24: warning: static property 'shouldCaptureRequests' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
260 | }()
261 |
262 | private static var shouldCaptureRequests: Bool = {
| |- warning: static property 'shouldCaptureRequests' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shouldCaptureRequests' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'shouldCaptureRequests' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
263 | sessionData()?.shouldNetworkCapture ?? false
264 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:274:36: warning: static property 'initialized' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
272 | /// enable/disable state via the Remote Configuration Updater.
273 | ///
274 | public private(set) static var initialized = false
| |- warning: static property 'initialized' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'initialized' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'initialized' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
275 |
276 | private static var capturedRequestCollector: CapturedRequestCollecting? = {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:276:24: warning: static property 'capturedRequestCollector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
274 | public private(set) static var initialized = false
275 |
276 | private static var capturedRequestCollector: CapturedRequestCollecting? = {
| |- warning: static property 'capturedRequestCollector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'capturedRequestCollector' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'capturedRequestCollector' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
277 | return makeCapturedRequestCollector()
278 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:282:25: warning: static property 'payloadCache' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
280 |
281 | //Cache components
282 | internal static var payloadCache : PayloadCacheProtocol = {
| |- warning: static property 'payloadCache' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'payloadCache' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'payloadCache' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
283 | PayloadCache.init(configuration.cacheMemoryLimit,
284 | expiry: configuration.cacheExpiryDuration)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportManager.swift:37:33: warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
8 | import Foundation
9 |
10 | final class CrashReportManager: CrashReportManaging {
| `- note: class 'CrashReportManager' does not conform to the 'Sendable' protocol
11 |
12 | private let crashReportPersistence: CrashReportPersisting.Type
:
35 | self.intervalProvider = intervalProvider
36 | self.startupTask = Task.delayed(byTimeInterval: Constants.startupDelay, priority: .utility) { [weak self] in
37 | guard let session = self?.session() else {
| `- warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
38 | return
39 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportPersistence.swift:18:24: warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
16 |
17 | struct CrashReportPersistence: CrashReportPersisting {
18 | private static let logger = BTLogger.live
| |- warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 | private static var persistence: Persistence? {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Protocols/Logging.swift:10:10: note: protocol 'Logging' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | protocol Logging {
| `- note: protocol 'Logging' does not conform to the 'Sendable' protocol
11 | var enableDebug: Bool { get set }
12 |
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/DisableModeSessionManager.swift:99:14: warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
28 | /// - Note: This session manager is used exclusively when `enableAllTracking` is false.
29 | ///
30 | class DisableModeSessionManager : SessionManagerProtocol {
| `- note: class 'DisableModeSessionManager' does not conform to the 'Sendable' protocol
31 |
32 | private var expirationDurationInMS: Millisecond = 30 * 60 * 1000
:
97 | private func updateRemoteConfig(){
98 | queue.async { [weak self] in
99 | self?.updater.update(true) {}
| `- warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
100 | }
101 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:930:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
928 | }
929 |
930 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| `- note: closure captures 'page' which is accessible to code in the current task
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:931:45: warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
929 |
930 | Task {
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| |- warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'page' to actor-isolated instance method 'start(page:startTime:)' risks causing data races between actor-isolated and task-isolated uses
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:953:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
951 |
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:954:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:959:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
957 |
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:960:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:969:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
967 | /// - tuple: The asynchronously-delivered tuple containing the request contents as a Data instance and a URLResponse.
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| `- note: closure captures 'timer' which is accessible to code in the current task
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:970:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:975:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
973 |
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| `- note: closure captures 'timer' which is accessible to code in the current task
977 | }
978 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:976:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:request:error:)' risks causing data races between actor-isolated and task-isolated uses
977 | }
978 | }
[124/124] Compiling BlueTriangle DisableModeSessionManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTLogger.swift:118:16: warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
116 |
117 | extension BTLogger {
118 | static let live: Logging = {
| |- warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'live' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
119 | BTLogger()
120 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Protocols/Logging.swift:10:10: note: protocol 'Logging' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | protocol Logging {
| `- note: protocol 'Logging' does not conform to the 'Sendable' protocol
11 | var enableDebug: Bool { get set }
12 |
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:58:40: warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 |
25 |
26 | class BTSignalCrashReporter {
| `- note: class 'BTSignalCrashReporter' does not conform to the 'Sendable' protocol
27 |
28 | private let directory : String
:
56 | case .nsException:
57 | self.startupTask = Task.delayed(byTimeInterval: Constants.startupDelay, priority: .utility) { [weak self] in
58 | guard let strongSelf = self else {
| `- warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
59 | return
60 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:91:37: warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure
24 |
25 |
26 | class BTSignalCrashReporter {
| `- note: class 'BTSignalCrashReporter' does not conform to the 'Sendable' protocol
27 |
28 | private let directory : String
:
89 | DispatchQueue.global(qos: .utility).async { [weak self] in
90 | do {
91 | if let strongSelf = self, let session_id = crash.btt_session_id, session_id.count > 0, let sessionId = UInt64(session_id){
| `- warning: capture of 'self' with non-sendable type 'BTSignalCrashReporter?' in a '@Sendable' closure
92 | var sessionCopy = session
93 | sessionCopy.sessionID = sessionId
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTSignalCrashReporter.swift:92:39: warning: capture of 'session' with non-sendable type 'Session' in a '@Sendable' closure
90 | do {
91 | if let strongSelf = self, let session_id = crash.btt_session_id, session_id.count > 0, let sessionId = UInt64(session_id){
92 | var sessionCopy = session
| `- warning: capture of 'session' with non-sendable type 'Session' in a '@Sendable' closure
93 | sessionCopy.sessionID = sessionId
94 | let pageName = (crash.btt_page_name ?? "").count > 0 ? crash.btt_page_name : Constants.crashID
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Models/Session.swift:10:8: note: consider making struct 'Session' conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | struct Session: Equatable {
| `- note: consider making struct 'Session' conform to the 'Sendable' protocol
11 | let wcd = 1
12 | let eventType = 9
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BTTimer.swift:250:20: warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'BTTimer.Configuration' may have shared mutable state; this is an error in the Swift 6 language mode
230 | // MARK: - Supporting Types
231 | extension BTTimer {
232 | struct Configuration {
| `- note: consider making struct 'Configuration' conform to the 'Sendable' protocol
233 | let timeIntervalProvider: () -> TimeInterval
234 |
:
248 | }
249 |
250 | static let live = Self(
| |- warning: static property 'live' is not concurrency-safe because non-'Sendable' type 'BTTimer.Configuration' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'live' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
251 | timeIntervalProvider: { Date().timeIntervalSince1970 }
252 | )
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:22:25: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 | final public class BlueTriangle: NSObject {
21 |
22 | internal static var configuration = BlueTriangleConfiguration()
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
23 |
24 | private static var _screenTracker: BTTScreenLifecycleTracker?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:24:24: warning: static property '_screenTracker' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
22 | internal static var configuration = BlueTriangleConfiguration()
23 |
24 | private static var _screenTracker: BTTScreenLifecycleTracker?
| |- warning: static property '_screenTracker' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_screenTracker' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_screenTracker' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
25 | internal static var screenTracker: BTTScreenLifecycleTracker?{
26 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:33:24: warning: static property '_networkStateMonitor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | }
32 | }
33 | private static var _networkStateMonitor: NetworkStateMonitorProtocol?
| |- warning: static property '_networkStateMonitor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_networkStateMonitor' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_networkStateMonitor' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 | internal static var networkStateMonitor: NetworkStateMonitorProtocol?{
35 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:43:24: warning: static property '_appEventObserver' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
41 | }
42 |
43 | private static var _appEventObserver: AppEventObserver?
| |- warning: static property '_appEventObserver' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_appEventObserver' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_appEventObserver' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | internal static var appEventObserver: AppEventObserver?{
45 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:53:24: warning: static property '_nsExeptionReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
51 | }
52 |
53 | private static var _nsExeptionReporter: CrashReportManaging?
| |- warning: static property '_nsExeptionReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_nsExeptionReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_nsExeptionReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 | private static var nsExeptionReporter: CrashReportManaging?{
55 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:63:24: warning: static property '_signalCrashReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
61 | }
62 |
63 | private static var _signalCrashReporter: BTSignalCrashReporter?
| |- warning: static property '_signalCrashReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_signalCrashReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_signalCrashReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
64 | internal static var signalCrashReporter: BTSignalCrashReporter?{
65 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:73:24: warning: static property '_launchTimeReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
71 | }
72 |
73 | private static var _launchTimeReporter : LaunchTimeReporter?
| |- warning: static property '_launchTimeReporter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_launchTimeReporter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_launchTimeReporter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
74 | internal static var launchTimeReporter : LaunchTimeReporter?{
75 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:83:24: warning: static property '_memoryWarningWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
81 | }
82 |
83 | private static var _memoryWarningWatchDog : MemoryWarningWatchDog?
| |- warning: static property '_memoryWarningWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_memoryWarningWatchDog' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_memoryWarningWatchDog' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
84 | internal static var memoryWarningWatchDog : MemoryWarningWatchDog?{
85 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:93:24: warning: static property '_anrWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
91 | }
92 |
93 | private static var _anrWatchDog : ANRWatchDog?
| |- warning: static property '_anrWatchDog' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_anrWatchDog' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_anrWatchDog' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
94 | internal static var anrWatchDog : ANRWatchDog?{
95 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:103:24: warning: static property '_sessionManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
101 | }
102 |
103 | private static var _sessionManager : SessionManagerProtocol?
| |- warning: static property '_sessionManager' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_sessionManager' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_sessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
104 | private static var sessionManager : SessionManagerProtocol?{
105 | get {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:113:25: warning: static property 'clarityConnector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
111 | }
112 |
113 | internal static var clarityConnector = ClaritySessionConnector(logger: logger)
| |- warning: static property 'clarityConnector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'clarityConnector' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'clarityConnector' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
114 |
115 | internal static var enableAllTracking: Bool = {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:115:25: warning: static property 'enableAllTracking' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
113 | internal static var clarityConnector = ClaritySessionConnector(logger: logger)
114 |
115 | internal static var enableAllTracking: Bool = {
| |- warning: static property 'enableAllTracking' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'enableAllTracking' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'enableAllTracking' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | let value = configRepo.isEnableAllTracking()
117 | return value
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:120:24: warning: static property 'configRepo' is not concurrency-safe because non-'Sendable' type 'BTTConfigurationRepo' may have shared mutable state; this is an error in the Swift 6 language mode
118 | }()
119 |
120 | private static let configRepo: BTTConfigurationRepo = {
| |- warning: static property 'configRepo' is not concurrency-safe because non-'Sendable' type 'BTTConfigurationRepo' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'configRepo' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 | let config = BTTConfigurationRepo(BTTRemoteConfig.defaultConfig)
122 | return config
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/DynamicConfig/BTTConfigurationRepo.swift:17:7: note: class 'BTTConfigurationRepo' does not conform to the 'Sendable' protocol
15 | }
16 |
17 | class BTTConfigurationRepo : ConfigurationRepo{
| `- note: class 'BTTConfigurationRepo' does not conform to the 'Sendable' protocol
18 |
19 | private let queue = DispatchQueue(label: "com.bluetriangle.configurationRepo", attributes: .concurrent)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:125:25: warning: static property 'disableModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
123 | }()
124 |
125 | internal static let disableModeSessionManager : SessionManagerProtocol = {
| |- warning: static property 'disableModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'disableModeSessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
126 | let configFetcher = BTTConfigurationFetcher()
127 | let configSyncer = BTTStoredConfigSyncer(configRepo: configRepo, logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/SessionManager.swift:18:10: note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
16 | #endif
17 |
18 | protocol SessionManagerProtocol {
| `- note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
19 | func start(with expiry : Millisecond)
20 | func getSessionData() -> SessionData?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:132:25: warning: static property 'enabledModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
130 | }()
131 |
132 | internal static let enabledModeSessionManager : SessionManagerProtocol = {
| |- warning: static property 'enabledModeSessionManager' is not concurrency-safe because non-'Sendable' type 'any SessionManagerProtocol' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'enabledModeSessionManager' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
133 | let configFetcher = BTTConfigurationFetcher()
134 | let configSyncer = BTTStoredConfigSyncer(configRepo: configRepo, logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/SessionManager.swift:18:10: note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
16 | #endif
17 |
18 | protocol SessionManagerProtocol {
| `- note: protocol 'SessionManagerProtocol' does not conform to the 'Sendable' protocol
19 | func start(with expiry : Millisecond)
20 | func getSessionData() -> SessionData?
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:142:24: warning: static property 'activeTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
140 | private static let lock = NSLock()
141 | private static let trackingLock = NSRecursiveLock()
142 | private static var activeTimers = [BTTimer]()
| |- warning: static property 'activeTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'activeTimers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'activeTimers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
143 | #if os(iOS)
144 | private static let matricKitWatchDog = MetricKitWatchDog()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:210:24: warning: static property '_session' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
208 | }
209 |
210 | private static var _session: Session? = {
| |- warning: static property '_session' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_session' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property '_session' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
211 | configuration.makeSession()
212 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:239:24: warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
237 | }
238 |
239 | private static var logger: Logging = {
| |- warning: static property 'logger' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'logger' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
240 | configuration.makeLogger()
241 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:244:24: warning: static property 'uploader' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
242 |
243 |
244 | private static var uploader: Uploading = {
| |- warning: static property 'uploader' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'uploader' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'uploader' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
245 | configuration.uploaderConfiguration.makeUploader(
246 | logger: logger,
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:252:24: warning: static property 'timerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
250 | }()
251 |
252 | private static var timerFactory: (Page, BTTimer.TimerType) -> BTTimer = {
| |- warning: static property 'timerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'timerFactory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'timerFactory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
253 | configuration.timerConfiguration.makeTimerFactory(
254 | logger: logger,
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:258:24: warning: static property 'internalTimerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
256 | }()
257 |
258 | private static var internalTimerFactory: () -> InternalTimer = {
| |- warning: static property 'internalTimerFactory' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'internalTimerFactory' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'internalTimerFactory' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
259 | configuration.internalTimerConfiguration.makeTimerFactory(logger: logger)
260 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:262:24: warning: static property 'shouldCaptureRequests' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
260 | }()
261 |
262 | private static var shouldCaptureRequests: Bool = {
| |- warning: static property 'shouldCaptureRequests' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'shouldCaptureRequests' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'shouldCaptureRequests' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
263 | sessionData()?.shouldNetworkCapture ?? false
264 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:274:36: warning: static property 'initialized' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
272 | /// enable/disable state via the Remote Configuration Updater.
273 | ///
274 | public private(set) static var initialized = false
| |- warning: static property 'initialized' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'initialized' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'initialized' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
275 |
276 | private static var capturedRequestCollector: CapturedRequestCollecting? = {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:276:24: warning: static property 'capturedRequestCollector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
274 | public private(set) static var initialized = false
275 |
276 | private static var capturedRequestCollector: CapturedRequestCollecting? = {
| |- warning: static property 'capturedRequestCollector' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'capturedRequestCollector' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'capturedRequestCollector' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
277 | return makeCapturedRequestCollector()
278 | }()
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:282:25: warning: static property 'payloadCache' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
280 |
281 | //Cache components
282 | internal static var payloadCache : PayloadCacheProtocol = {
| |- warning: static property 'payloadCache' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'payloadCache' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'payloadCache' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
283 | PayloadCache.init(configuration.cacheMemoryLimit,
284 | expiry: configuration.cacheExpiryDuration)
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportManager.swift:37:33: warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
8 | import Foundation
9 |
10 | final class CrashReportManager: CrashReportManaging {
| `- note: class 'CrashReportManager' does not conform to the 'Sendable' protocol
11 |
12 | private let crashReportPersistence: CrashReportPersisting.Type
:
35 | self.intervalProvider = intervalProvider
36 | self.startupTask = Task.delayed(byTimeInterval: Constants.startupDelay, priority: .utility) { [weak self] in
37 | guard let session = self?.session() else {
| `- warning: capture of 'self' with non-sendable type 'CrashReportManager?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
38 | return
39 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/CrashReportPersistence.swift:18:24: warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
16 |
17 | struct CrashReportPersistence: CrashReportPersisting {
18 | private static let logger = BTLogger.live
| |- warning: static property 'logger' is not concurrency-safe because non-'Sendable' type 'any Logging' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'logger' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
19 |
20 | private static var persistence: Persistence? {
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/Protocols/Logging.swift:10:10: note: protocol 'Logging' does not conform to the 'Sendable' protocol
8 | import Foundation
9 |
10 | protocol Logging {
| `- note: protocol 'Logging' does not conform to the 'Sendable' protocol
11 | var enableDebug: Bool { get set }
12 |
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/DisableModeSessionManager.swift:99:14: warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
28 | /// - Note: This session manager is used exclusively when `enableAllTracking` is false.
29 | ///
30 | class DisableModeSessionManager : SessionManagerProtocol {
| `- note: class 'DisableModeSessionManager' does not conform to the 'Sendable' protocol
31 |
32 | private var expirationDurationInMS: Millisecond = 30 * 60 * 1000
:
97 | private func updateRemoteConfig(){
98 | queue.async { [weak self] in
99 | self?.updater.update(true) {}
| `- warning: capture of 'self' with non-sendable type 'DisableModeSessionManager?' in a '@Sendable' closure
100 | }
101 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:930:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
928 | }
929 |
930 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| `- note: closure captures 'page' which is accessible to code in the current task
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:931:45: warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
929 |
930 | Task {
931 | await capturedRequestCollector?.start(page: page, startTime: startTime)
| |- warning: sending 'page' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'page' to actor-isolated instance method 'start(page:startTime:)' risks causing data races between actor-isolated and task-isolated uses
932 | }
933 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:953:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
951 |
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:954:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
952 | static func captureRequest(timer: InternalTimer, response: URLResponse?) {
953 | Task {
954 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
955 | }
956 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:959:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
957 |
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| `- note: closure captures 'timer' which is accessible to code in the current task
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:960:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
958 | internal static func captureRequest(timer: InternalTimer, response: CustomResponse) {
959 | Task {
960 | await capturedRequestCollector?.collect(timer: timer, response: response)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
961 | }
962 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:969:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
967 | /// - tuple: The asynchronously-delivered tuple containing the request contents as a Data instance and a URLResponse.
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| `- note: closure captures 'timer' which is accessible to code in the current task
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:970:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
968 | static func captureRequest(timer: InternalTimer, tuple: (Data, URLResponse)) {
969 | Task {
970 | await capturedRequestCollector?.collect(timer: timer, response: tuple.1)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:response:)' risks causing data races between actor-isolated and task-isolated uses
971 | }
972 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:975:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
973 |
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| `- note: closure captures 'timer' which is accessible to code in the current task
977 | }
978 | }
/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/BlueTriangle.swift:976:45: warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
974 | static func captureRequest(timer: InternalTimer, request : URLRequest, error: Error?) {
975 | Task {
976 | await capturedRequestCollector?.collect(timer: timer, request: request, error: error)
| |- warning: sending 'timer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'timer' to actor-isolated instance method 'collect(timer:request:error:)' risks causing data races between actor-isolated and task-isolated uses
977 | }
978 | }
Build complete! (9.51s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "blue-triangle",
"name" : "blue-triangle",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "tvos",
"version" : "13.0"
},
{
"name" : "watchos",
"version" : "6.0"
},
{
"name" : "macos",
"version" : "10.15"
}
],
"products" : [
{
"name" : "BlueTriangle",
"targets" : [
"BlueTriangle"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "ObjcCompatibilityTests",
"module_type" : "ClangTarget",
"name" : "ObjcCompatibilityTests",
"path" : "Tests/ObjcCompatibilityTests",
"sources" : [
"ObjcCompatibilityTests.m"
],
"target_dependencies" : [
"BlueTriangle"
],
"type" : "test"
},
{
"c99name" : "BlueTriangleTests",
"module_type" : "SwiftTarget",
"name" : "BlueTriangleTests",
"path" : "Tests/BlueTriangleTests",
"sources" : [
"AnyCodableTests.swift",
"App/CollectionViewController.swift",
"App/Extensions/UIColor+Utils.swift",
"App/ImageCell.swift",
"App/Models/Album.swift",
"App/Models/Photo.swift",
"App/Models/SingleSection.swift",
"App/Models/ViewState.swift",
"App/NetworkClientMock.swift",
"BTTConfigurationFetcherTests.swift",
"BTTConfigurationRepoTests.swift",
"BTTConfigurationUpdaterTests.swift",
"BTTimerTests.swift",
"BlueTriangleTests.swift",
"CaptureRateProbabilityTest.swift",
"CaptureTimerManagerTests.swift",
"ContentTypeTests.swift",
"CrashReportManagerTests.swift",
"DeviceTests.swift",
"InitiatorTypeTests.swift",
"Mocks/CaptureTimerManagerMock.swift",
"Mocks/CapturedRequestCollectorMock.swift",
"Mocks/CrashReportPersistenceMock.swift",
"Mocks/LoggerMock.swift",
"Mocks/Mock.swift",
"Mocks/MockBTTConfigurationFetcher.swift",
"Mocks/MockBTTConfigurationRepo.swift",
"Mocks/MockRemoteConfigURL.swift",
"Mocks/PerformanceMonitorMock.swift",
"Mocks/ResourceUsageMock.swift",
"Mocks/SystemLoggerMock.swift",
"Mocks/URLProtocolMock.swift",
"Mocks/UploaderMock.swift",
"NetworkCaptureDelegateTests.swift",
"PersistenceTests.swift",
"RequestCacheTests.swift",
"RequestCollectionTests.swift",
"RequestCollectorTests.swift",
"ResourceUsageTests.swift",
"TimerRequestBuilderTests.swift",
"UploaderTests.swift",
"UtilityTests.swift"
],
"target_dependencies" : [
"BlueTriangle"
],
"type" : "test"
},
{
"c99name" : "BlueTriangle",
"module_type" : "SwiftTarget",
"name" : "BlueTriangle",
"path" : "Sources/BlueTriangle",
"product_memberships" : [
"BlueTriangle"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/BlueTriangle/PrivacyInfo.xcprivacy",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"AppEventObserver.swift",
"BTLogger.swift",
"BTSignalCrashReporter.swift",
"BTTimer.swift",
"BlueTriangle.swift",
"BlueTriangleConfiguration.swift",
"ClaritySupport/ClaritySessionConnector.swift",
"Constants.swift",
"CrashReportManager.swift",
"CrashReportPersistence.swift",
"Device.swift",
"DisableModeSessionManager.swift",
"DynamicConfig/BTTConfigurationFetcher.swift",
"DynamicConfig/BTTConfigurationRepo.swift",
"DynamicConfig/BTTConfigurationUpdater.swift",
"DynamicConfig/BTTRemoteConfig.swift",
"DynamicConfig/BTTSavedRemoteConfig.swift",
"DynamicConfig/BTTStoredConfigSyncer.swift",
"DynamicConfig/RemoteConfigAckReporter.swift",
"DynamicConfig/SessionStore.swift",
"Extensions/Array+Vitals.swift",
"Extensions/Bool+Utils.swift",
"Extensions/Bundle+Utils.swift",
"Extensions/Data+Utils.swift",
"Extensions/Date+Utils.swift",
"Extensions/HTTPURLResponse+ContentType.swift",
"Extensions/JSONDecoder+Utils.swift",
"Extensions/NSException+Utils.swift",
"Extensions/NSLocking+Utils.swift",
"Extensions/NSNumber+Utils.swift",
"Extensions/NWPathMonitor+Combine.swift",
"Extensions/NotificationName+Platform.swift",
"Extensions/OperatingSystemVersion+Utils.swift",
"Extensions/Publisher+Retry.swift",
"Extensions/Task+Utils.swift",
"Extensions/TimeInterval+Utils.swift",
"Extensions/URL+ExpressibleByStringLiteral.swift",
"Extensions/URLSession+NetworkCapture.swift",
"Extensions/URLSession+Networking.swift",
"Extensions/URLSession+Publisher.swift",
"Extensions/UserDefault+Utils.swift",
"Identifier.swift",
"InternalTimer.swift",
"MetricKit/CrashReportResponse.swift",
"MetricKit/CrashSignal.swift",
"MetricKit/DignosticWatchDog.swift",
"Millisecond.swift",
"Models/AnyCodable.swift",
"Models/CapturedRequest.swift",
"Models/CrashReport.swift",
"Models/CustomCategories.swift",
"Models/CustomNumbers.swift",
"Models/CustomVariables.swift",
"Models/ErrorReport.swift",
"Models/NativeAppProperties.swift",
"Models/Page.swift",
"Models/PageTimeInterval.swift",
"Models/PerformanceReport.swift",
"Models/PurchaseConfirmation.swift",
"Models/ResourceUsageMeasurement.swift",
"Models/Session.swift",
"Models/TimerRequest.swift",
"NetworkCapture/BTTimerNetStateAccumulator.swift",
"NetworkCapture/CaptureTimerManager.swift",
"NetworkCapture/CapturedRequestBuilder.swift",
"NetworkCapture/CapturedRequestCollector.swift",
"NetworkCapture/NetworkCaptureConfiguration.swift",
"NetworkCapture/NetworkCaptureTracker.swift",
"NetworkCapture/NetworkStateMonitor.swift",
"NetworkCapture/NetworkTelephonyHandler.swift",
"NetworkCapture/RequestCollection.swift",
"NetworkCaptureSessionDelegate.swift",
"Offline/Payload.swift",
"Offline/PayloadCache.swift",
"Persistence/File.swift",
"Persistence/Persistence.swift",
"Persistence/PersistenceError.swift",
"Persistence/UserLocation.swift",
"Protocols/CaptureTimerManaging.swift",
"Protocols/CapturedRequestCollecting.swift",
"Protocols/CrashReportManaging.swift",
"Protocols/CrashReportPersisting.swift",
"Protocols/FileLocation.swift",
"Protocols/Logging.swift",
"Protocols/PerformanceMonitoring.swift",
"Protocols/RequestFailureHandling.swift",
"Protocols/ResourceMeasuring.swift",
"Protocols/SystemLogging.swift",
"Protocols/URLRequestConvertible.swift",
"Protocols/Uploading.swift",
"Request.swift",
"RequestCache.swift",
"RequestFailureHandler.swift",
"SessionManager.swift",
"TimerRequestBuilder.swift",
"Uploader.swift",
"Version.swift",
"Vitals/ANR/ANRPerformanceMonitor.swift",
"Vitals/ANR/ANRTrace/MainThreadStackTraceProvider.swift",
"Vitals/ANR/ANRWatchDog.swift",
"Vitals/ANR/MainThreadObserver.swift",
"Vitals/DispatchSourceTimerPerformanceMonitor.swift",
"Vitals/DisplayLinkPerformanceMonitor.swift",
"Vitals/Launch/LaunchTimeMonitor.swift",
"Vitals/Launch/LaunchTimeReporter.swift",
"Vitals/Memory/MemoryWarningWatchDog.swift",
"Vitals/PerformanceMonitorBuilder.swift",
"Vitals/ResourceUsage.swift",
"Vitals/RunLoopServices.swift",
"Vitals/ScreenTracker/BTTScreenLifecycleTracker.swift",
"Vitals/ScreenTracker/BTTScreenTracker.swift",
"Vitals/ScreenTracker/BTTWebViewTracker.swift",
"Vitals/ScreenTracker/ViewControllerLifecycleTracker.swift",
"Vitals/ScreenTracker/ViewLifecycleTrackerModifier.swift",
"Vitals/TimerPerformanceMonitor.swift"
],
"target_dependencies" : [
"Backtrace",
"AppEventLogger"
],
"type" : "library"
},
{
"c99name" : "Backtrace",
"module_type" : "ClangTarget",
"name" : "Backtrace",
"path" : "Sources/Backtrace",
"product_memberships" : [
"BlueTriangle"
],
"sources" : [
"backtress_extracter.c"
],
"type" : "library"
},
{
"c99name" : "AppEventLogger",
"module_type" : "ClangTarget",
"name" : "AppEventLogger",
"path" : "Sources/AppEventLogger",
"product_memberships" : [
"BlueTriangle"
],
"sources" : [
"AppNotificationLogger.m",
"NotificationLog.m",
"SignalHandler.m"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
Done.