Build Information
Successful build of CloudSyncSession, reference main (cb63ad
), with Swift 6.1 for macOS (SPM) on 23 Jul 2025 02:40:12 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
========================================
RunAll
========================================
Builder version: 4.64.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/ryanashcraft/CloudSyncSession.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/ryanashcraft/CloudSyncSession
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at cb63ad3 Migrate from OSLog to swift-log for logging
Cloned https://github.com/ryanashcraft/CloudSyncSession.git
Revision (git rev-parse @):
cb63ad3c7c68a47f702075159a41f820b1b32bdf
SUCCESS checkout https://github.com/ryanashcraft/CloudSyncSession.git at main
Fetching https://github.com/ryanashcraft/swift-pid.git
Fetching https://github.com/apple/swift-collections.git from cache
Fetching https://github.com/apple/swift-log.git from cache
[1/46] Fetching swift-pid
Fetched https://github.com/ryanashcraft/swift-pid.git from cache (1.03s)
Fetched https://github.com/apple/swift-collections.git from cache (1.04s)
Fetched https://github.com/apple/swift-log.git from cache (1.05s)
Computing version for https://github.com/ryanashcraft/swift-pid.git
Computed https://github.com/ryanashcraft/swift-pid.git at 0.0.3 (1.54s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.0.6 (3.03s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.3 (0.45s)
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.0.6
Creating working copy for https://github.com/ryanashcraft/swift-pid.git
Working copy of https://github.com/ryanashcraft/swift-pid.git resolved at 0.0.3
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.3
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"dependencies": [
{
"identity": "cloudsyncsession",
"name": "CloudSyncSession",
"url": "https://github.com/ryanashcraft/CloudSyncSession.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/CloudSyncSession",
"dependencies": [
{
"identity": "swift-pid",
"name": "swift-pid",
"url": "https://github.com/ryanashcraft/swift-pid.git",
"version": "0.0.3",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-pid",
"dependencies": [
{
"identity": "swift-collections",
"name": "swift-collections",
"url": "https://github.com/apple/swift-collections.git",
"version": "1.2.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-collections",
"dependencies": [
]
}
]
},
{
"identity": "swift-log",
"name": "swift-log",
"url": "https://github.com/apple/swift-log.git",
"version": "1.6.3",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-log",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/ryanashcraft/CloudSyncSession.git
[1/567] Fetching cloudsyncsession
Fetched https://github.com/ryanashcraft/CloudSyncSession.git from cache (0.83s)
Fetching https://github.com/apple/swift-log.git from cache
Fetching https://github.com/ryanashcraft/swift-pid.git from cache
Fetched https://github.com/ryanashcraft/swift-pid.git from cache (0.46s)
Fetched https://github.com/apple/swift-log.git from cache (0.48s)
Computing version for https://github.com/ryanashcraft/swift-pid.git
Computed https://github.com/ryanashcraft/swift-pid.git at 0.0.3 (0.54s)
Fetching https://github.com/apple/swift-collections.git from cache
Fetched https://github.com/apple/swift-collections.git from cache (0.57s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.3 (0.62s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.2.0 (0.53s)
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.2.0
Creating working copy for https://github.com/ryanashcraft/swift-pid.git
Working copy of https://github.com/ryanashcraft/swift-pid.git resolved at 0.0.3
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.3
Creating working copy for https://github.com/ryanashcraft/CloudSyncSession.git
Working copy of https://github.com/ryanashcraft/CloudSyncSession.git resolved at main (cb63ad3)
warning: '.resolve-product-dependencies': dependency 'cloudsyncsession' is not used by any target
Found 2 product dependencies
- swift-pid
- swift-log
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/ryanashcraft/CloudSyncSession.git
https://github.com/ryanashcraft/CloudSyncSession.git
{
"dependencies" : [
{
"identity" : "swift-pid",
"requirement" : {
"range" : [
{
"lower_bound" : "0.0.1",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/ryanashcraft/swift-pid.git"
},
{
"identity" : "swift-log",
"requirement" : {
"range" : [
{
"lower_bound" : "1.5.4",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-log.git"
}
],
"manifest_display_name" : "CloudSyncSession",
"name" : "CloudSyncSession",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "15.0"
},
{
"name" : "watchos",
"version" : "8.0"
},
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "CloudSyncSession",
"targets" : [
"CloudSyncSession"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "CloudSyncSessionTests",
"module_type" : "SwiftTarget",
"name" : "CloudSyncSessionTests",
"path" : "Tests/CloudSyncSessionTests",
"sources" : [
"CloudSyncSessionTests.swift",
"SyncStateTests.swift"
],
"target_dependencies" : [
"CloudSyncSession"
],
"type" : "test"
},
{
"c99name" : "CloudSyncSession",
"module_type" : "SwiftTarget",
"name" : "CloudSyncSession",
"path" : "Sources/CloudSyncSession",
"product_dependencies" : [
"PID",
"Logging"
],
"product_memberships" : [
"CloudSyncSession"
],
"sources" : [
"CloudKitOperationHandler.swift",
"CloudSyncSession.swift",
"Extensions/CKErrorExtensions.swift",
"Log.swift",
"Middleware.swift",
"Middleware/AccountStatusMiddleware.swift",
"Middleware/ErrorMiddleware.swift",
"Middleware/LoggerMiddleware.swift",
"Middleware/RetryMiddleware.swift",
"Middleware/SplittingMiddleware.swift",
"Middleware/SubjectMiddleware.swift",
"Middleware/WorkMiddleware.swift",
"Middleware/ZoneMiddleware.swift",
"OperationHandler.swift",
"SyncEvent.swift",
"SyncState.swift",
"SyncWork.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/7] Write sources
[6/7] Write swift-version-2F0A5646E1D333AE.txt
[8/79] Emitting module DequeModule
[9/81] Compiling OrderedCollections OrderedDictionary+ExpressibleByDictionaryLiteral.swift
[10/81] Compiling OrderedCollections OrderedDictionary+Hashable.swift
[11/81] Compiling DequeModule _DequeSlot.swift
[12/81] Compiling DequeModule _UnsafeWrappedBuffer.swift
[13/81] Compiling OrderedCollections _HashTable+Bucket.swift
[14/81] Compiling OrderedCollections _HashTable+BucketIterator.swift
[15/81] Compiling OrderedCollections _HashTable+Constants.swift
[16/81] Compiling OrderedCollections _HashTable+CustomStringConvertible.swift
[17/81] Compiling OrderedCollections _HashTable+Testing.swift
[18/81] Compiling OrderedCollections _HashTable+UnsafeHandle.swift
[19/81] Compiling OrderedCollections _HashTable.swift
[20/81] Compiling OrderedCollections _Hashtable+Header.swift
[21/81] Compiling OrderedCollections OrderedDictionary+Codable.swift
[22/81] Compiling OrderedCollections OrderedDictionary+CustomDebugStringConvertible.swift
[23/81] Compiling OrderedCollections OrderedDictionary+CustomReflectable.swift
[24/81] Compiling OrderedCollections OrderedDictionary+CustomStringConvertible.swift
[25/81] Compiling OrderedCollections OrderedDictionary+Deprecations.swift
[26/81] Compiling OrderedCollections OrderedDictionary+Elements+SubSequence.swift
[27/81] Compiling OrderedCollections OrderedDictionary+Elements.swift
[28/81] Compiling OrderedCollections OrderedDictionary+Equatable.swift
[33/86] Compiling OrderedCollections OrderedDictionary+Partial MutableCollection.swift
[34/86] Compiling OrderedCollections OrderedDictionary+Partial RangeReplaceableCollection.swift
[35/86] Compiling OrderedCollections OrderedDictionary+Sendable.swift
[36/86] Compiling OrderedCollections OrderedDictionary+Sequence.swift
[37/86] Compiling OrderedCollections OrderedDictionary+Values.swift
[38/86] Compiling OrderedCollections OrderedDictionary.swift
[39/86] Compiling OrderedCollections OrderedSet+Codable.swift
[56/86] Compiling OrderedCollections OrderedSet+RandomAccessCollection.swift
[57/86] Compiling OrderedCollections OrderedSet+ReserveCapacity.swift
[58/86] Compiling OrderedCollections OrderedSet+Sendable.swift
[59/86] Compiling OrderedCollections OrderedSet+SubSequence.swift
[60/86] Compiling OrderedCollections OrderedSet+Testing.swift
[61/86] Compiling OrderedCollections OrderedSet+CustomDebugStringConvertible.swift
[62/86] Compiling OrderedCollections OrderedSet+CustomReflectable.swift
[63/86] Compiling OrderedCollections OrderedSet+CustomStringConvertible.swift
[64/86] Compiling OrderedCollections OrderedSet+Diffing.swift
[65/86] Compiling OrderedCollections OrderedSet+Equatable.swift
[66/86] Compiling OrderedCollections OrderedSet+ExpressibleByArrayLiteral.swift
[67/86] Compiling OrderedCollections OrderedSet+Hashable.swift
[68/86] Compiling OrderedCollections OrderedSet+Initializers.swift
[69/86] Compiling OrderedCollections OrderedSet+Insertions.swift
[70/86] Compiling OrderedCollections OrderedSet+Invariants.swift
[71/86] Compiling OrderedCollections OrderedSet+Partial MutableCollection.swift
[72/86] Compiling OrderedCollections OrderedSet+Partial RangeReplaceableCollection.swift
[73/86] Compiling OrderedCollections OrderedSet+Partial SetAlgebra+Basics.swift
[74/86] Compiling OrderedCollections OrderedSet+Partial SetAlgebra+Operations.swift
[75/86] Compiling OrderedCollections OrderedSet+Partial SetAlgebra+Predicates.swift
[76/86] Emitting module OrderedCollections
[77/86] Compiling OrderedCollections OrderedSet+UnorderedView.swift
[78/86] Compiling OrderedCollections OrderedSet+UnstableInternals.swift
[79/86] Compiling OrderedCollections OrderedSet.swift
[80/86] Compiling OrderedCollections RandomAccessCollection+Offsets.swift
[81/86] Compiling OrderedCollections _UnsafeBitset.swift
[82/86] Compiling Logging MetadataProvider.swift
[83/86] Compiling Logging Locks.swift
[84/86] Emitting module Logging
[85/86] Compiling Logging LogHandler.swift
[86/86] Compiling Logging Logging.swift
[87/88] Emitting module Collections
[88/88] Compiling Collections Collections.swift
[89/91] Compiling PID PIDController.swift
[90/91] Compiling PID RateLimitPIDController.swift
[91/91] Emitting module PID
[92/108] Compiling CloudSyncSession SyncEvent.swift
[93/108] Compiling CloudSyncSession ErrorMiddleware.swift
[94/108] Compiling CloudSyncSession LoggerMiddleware.swift
[95/108] Compiling CloudSyncSession SubjectMiddleware.swift
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/WorkMiddleware.swift:21:21: warning: capture of 'self' with non-sendable type 'WorkMiddleware' in a '@Sendable' closure
4 | private let workDelay = DispatchTimeInterval.milliseconds(60)
5 |
6 | struct WorkMiddleware: Middleware {
| `- note: consider making struct 'WorkMiddleware' conform to the 'Sendable' protocol
7 | var session: CloudSyncSession
8 |
:
19 | if prevWork?.id != work.id || prevWork?.retryCount != work.retryCount {
20 | dispatchQueue.asyncAfter(deadline: .now() + workDelay) {
21 | self.doWork(work)
| `- warning: capture of 'self' with non-sendable type 'WorkMiddleware' in a '@Sendable' closure
22 | }
23 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/WorkMiddleware.swift:21:33: warning: capture of 'work' with non-sendable type 'SyncWork' in a '@Sendable' closure
19 | if prevWork?.id != work.id || prevWork?.retryCount != work.retryCount {
20 | dispatchQueue.asyncAfter(deadline: .now() + workDelay) {
21 | self.doWork(work)
| `- warning: capture of 'work' with non-sendable type 'SyncWork' in a '@Sendable' closure
22 | }
23 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/SyncWork.swift:5:13: note: consider making enum 'SyncWork' conform to the 'Sendable' protocol
3 | public let maxRecommendedRecordsPerOperation = 400
4 |
5 | public enum SyncWork: Identifiable {
| `- note: consider making enum 'SyncWork' conform to the 'Sendable' protocol
6 | public enum Result {
7 | case modify(ModifyOperation.Response)
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/SubjectMiddleware.swift:8:20: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
6 | func run(next: (SyncEvent) -> SyncEvent, event: SyncEvent) -> SyncEvent {
7 | DispatchQueue.main.async {
8 | switch event {
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
9 | case let .workSuccess(work, result):
10 | switch result {
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/SubjectMiddleware.swift:13:25: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
11 | case let .fetch(response):
12 | if case let .fetch(operation) = work {
13 | session.fetchWorkCompletedSubject.send((operation, response))
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
14 | }
15 | case let .modify(response):
[96/108] Compiling CloudSyncSession WorkMiddleware.swift
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/WorkMiddleware.swift:21:21: warning: capture of 'self' with non-sendable type 'WorkMiddleware' in a '@Sendable' closure
4 | private let workDelay = DispatchTimeInterval.milliseconds(60)
5 |
6 | struct WorkMiddleware: Middleware {
| `- note: consider making struct 'WorkMiddleware' conform to the 'Sendable' protocol
7 | var session: CloudSyncSession
8 |
:
19 | if prevWork?.id != work.id || prevWork?.retryCount != work.retryCount {
20 | dispatchQueue.asyncAfter(deadline: .now() + workDelay) {
21 | self.doWork(work)
| `- warning: capture of 'self' with non-sendable type 'WorkMiddleware' in a '@Sendable' closure
22 | }
23 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/WorkMiddleware.swift:21:33: warning: capture of 'work' with non-sendable type 'SyncWork' in a '@Sendable' closure
19 | if prevWork?.id != work.id || prevWork?.retryCount != work.retryCount {
20 | dispatchQueue.asyncAfter(deadline: .now() + workDelay) {
21 | self.doWork(work)
| `- warning: capture of 'work' with non-sendable type 'SyncWork' in a '@Sendable' closure
22 | }
23 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/SyncWork.swift:5:13: note: consider making enum 'SyncWork' conform to the 'Sendable' protocol
3 | public let maxRecommendedRecordsPerOperation = 400
4 |
5 | public enum SyncWork: Identifiable {
| `- note: consider making enum 'SyncWork' conform to the 'Sendable' protocol
6 | public enum Result {
7 | case modify(ModifyOperation.Response)
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/SubjectMiddleware.swift:8:20: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
6 | func run(next: (SyncEvent) -> SyncEvent, event: SyncEvent) -> SyncEvent {
7 | DispatchQueue.main.async {
8 | switch event {
| |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'event' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
9 | case let .workSuccess(work, result):
10 | switch result {
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/SubjectMiddleware.swift:13:25: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
11 | case let .fetch(response):
12 | if case let .fetch(operation) = work {
13 | session.fetchWorkCompletedSubject.send((operation, response))
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
14 | }
15 | case let .modify(response):
[97/108] Compiling CloudSyncSession CKErrorExtensions.swift
[98/108] Compiling CloudSyncSession Log.swift
[99/108] Compiling CloudSyncSession SyncState.swift
[100/108] Compiling CloudSyncSession RetryMiddleware.swift
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/RetryMiddleware.swift:32:21: warning: capture of 'self' with non-sendable type 'RetryMiddleware' in a '@Sendable' closure
8 | }
9 |
10 | struct RetryMiddleware: Middleware {
| `- note: consider making struct 'RetryMiddleware' conform to the 'Sendable' protocol
11 | var session: CloudSyncSession
12 |
:
30 |
31 | dispatchQueue.asyncAfter(deadline: .now() + retryInterval) {
32 | session.dispatch(event: .retryWork(work))
| `- warning: capture of 'self' with non-sendable type 'RetryMiddleware' in a '@Sendable' closure
33 | }
34 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/RetryMiddleware.swift:32:56: warning: capture of 'work' with non-sendable type 'SyncWork' in a '@Sendable' closure
30 |
31 | dispatchQueue.asyncAfter(deadline: .now() + retryInterval) {
32 | session.dispatch(event: .retryWork(work))
| `- warning: capture of 'work' with non-sendable type 'SyncWork' in a '@Sendable' closure
33 | }
34 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/SyncWork.swift:5:13: note: consider making enum 'SyncWork' conform to the 'Sendable' protocol
3 | public let maxRecommendedRecordsPerOperation = 400
4 |
5 | public enum SyncWork: Identifiable {
| `- note: consider making enum 'SyncWork' conform to the 'Sendable' protocol
6 | public enum Result {
7 | case modify(ModifyOperation.Response)
[101/108] Compiling CloudSyncSession SplittingMiddleware.swift
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/RetryMiddleware.swift:32:21: warning: capture of 'self' with non-sendable type 'RetryMiddleware' in a '@Sendable' closure
8 | }
9 |
10 | struct RetryMiddleware: Middleware {
| `- note: consider making struct 'RetryMiddleware' conform to the 'Sendable' protocol
11 | var session: CloudSyncSession
12 |
:
30 |
31 | dispatchQueue.asyncAfter(deadline: .now() + retryInterval) {
32 | session.dispatch(event: .retryWork(work))
| `- warning: capture of 'self' with non-sendable type 'RetryMiddleware' in a '@Sendable' closure
33 | }
34 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/RetryMiddleware.swift:32:56: warning: capture of 'work' with non-sendable type 'SyncWork' in a '@Sendable' closure
30 |
31 | dispatchQueue.asyncAfter(deadline: .now() + retryInterval) {
32 | session.dispatch(event: .retryWork(work))
| `- warning: capture of 'work' with non-sendable type 'SyncWork' in a '@Sendable' closure
33 | }
34 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/SyncWork.swift:5:13: note: consider making enum 'SyncWork' conform to the 'Sendable' protocol
3 | public let maxRecommendedRecordsPerOperation = 400
4 |
5 | public enum SyncWork: Identifiable {
| `- note: consider making enum 'SyncWork' conform to the 'Sendable' protocol
6 | public enum Result {
7 | case modify(ModifyOperation.Response)
[102/108] Compiling CloudSyncSession ZoneMiddleware.swift
[103/108] Compiling CloudSyncSession OperationHandler.swift
[104/108] Compiling CloudSyncSession Middleware.swift
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/AccountStatusMiddleware.swift:28:21: warning: capture of 'self' with non-sendable type 'AccountStatusMiddleware' in a '@Sendable' closure
2 |
3 | /// Middleware that looks up the account status when the session starts and dispatches `accountStatusChanged` events.
4 | public struct AccountStatusMiddleware: Middleware {
| `- note: consider making struct 'AccountStatusMiddleware' conform to the 'Sendable' protocol
5 | public var session: CloudSyncSession
6 | let ckContainer: CKContainer
:
26 | }
27 |
28 | self.session.dispatch(event: .accountStatusChanged(status))
| `- warning: capture of 'self' with non-sendable type 'AccountStatusMiddleware' in a '@Sendable' closure
29 | }
30 | }
[105/108] Compiling CloudSyncSession AccountStatusMiddleware.swift
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/Middleware/AccountStatusMiddleware.swift:28:21: warning: capture of 'self' with non-sendable type 'AccountStatusMiddleware' in a '@Sendable' closure
2 |
3 | /// Middleware that looks up the account status when the session starts and dispatches `accountStatusChanged` events.
4 | public struct AccountStatusMiddleware: Middleware {
| `- note: consider making struct 'AccountStatusMiddleware' conform to the 'Sendable' protocol
5 | public var session: CloudSyncSession
6 | let ckContainer: CKContainer
:
26 | }
27 |
28 | self.session.dispatch(event: .accountStatusChanged(status))
| `- warning: capture of 'self' with non-sendable type 'AccountStatusMiddleware' in a '@Sendable' closure
29 | }
30 | }
[106/108] Emitting module CloudSyncSession
[107/108] Compiling CloudSyncSession CloudKitOperationHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:121:19: warning: 'modifyRecordsCompletionBlock' was deprecated in macOS 12.0: Use modifyRecordsResultBlock instead
119 | )
120 |
121 | operation.modifyRecordsCompletionBlock = { serverRecords, deletedRecordIDs, error in
| `- warning: 'modifyRecordsCompletionBlock' was deprecated in macOS 12.0: Use modifyRecordsResultBlock instead
122 | if let error = error {
123 | Log.operations.error("Failed to modify records: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:174:19: warning: 'recordChangedBlock' was deprecated in macOS 12.0: Use recordWasChangedBlock instead, which surfaces per-record errors
172 | }
173 |
174 | operation.recordChangedBlock = { record in
| `- warning: 'recordChangedBlock' was deprecated in macOS 12.0: Use recordWasChangedBlock instead, which surfaces per-record errors
175 | changedRecords.append(record)
176 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:182:19: warning: 'recordZoneFetchCompletionBlock' was deprecated in macOS 12.0: Use recordZoneFetchResultBlock instead
180 | }
181 |
182 | operation.recordZoneFetchCompletionBlock = { [weak self] _, newToken, _, newHasMore, _ in
| `- warning: 'recordZoneFetchCompletionBlock' was deprecated in macOS 12.0: Use recordZoneFetchResultBlock instead
183 | guard let self = self else {
184 | return
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:200:19: warning: 'fetchRecordZoneChangesCompletionBlock' was deprecated in macOS 12.0: Use fetchRecordZoneChangesResultBlock instead
198 | }
199 |
200 | operation.fetchRecordZoneChangesCompletionBlock = { [weak self] error in
| `- warning: 'fetchRecordZoneChangesCompletionBlock' was deprecated in macOS 12.0: Use fetchRecordZoneChangesResultBlock instead
201 | guard let self = self else {
202 | return
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:161:23: warning: value 'self' was defined but never used; consider replacing with boolean test
159 |
160 | operation.recordZoneChangeTokensUpdatedBlock = { [weak self] _, newToken, _ in
161 | guard let self = self else {
| `- warning: value 'self' was defined but never used; consider replacing with boolean test
162 | return
163 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:183:23: warning: value 'self' was defined but never used; consider replacing with boolean test
181 |
182 | operation.recordZoneFetchCompletionBlock = { [weak self] _, newToken, _, newHasMore, _ in
183 | guard let self = self else {
| `- warning: value 'self' was defined but never used; consider replacing with boolean test
184 | return
185 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:328:19: warning: 'fetchRecordZonesCompletionBlock' was deprecated in macOS 12.0: Use fetchRecordZonesResultBlock instead
326 | let operation = CKFetchRecordZonesOperation(recordZoneIDs: [zoneID])
327 |
328 | operation.fetchRecordZonesCompletionBlock = { ids, error in
| `- warning: 'fetchRecordZonesCompletionBlock' was deprecated in macOS 12.0: Use fetchRecordZonesResultBlock instead
329 | if let error = error {
330 | Log.operations.error("Failed to check for custom zone existence: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:361:19: warning: 'modifyRecordZonesCompletionBlock' was deprecated in macOS 12.0: Use modifyRecordZonesResultBlock instead
359 | )
360 |
361 | operation.modifyRecordZonesCompletionBlock = { _, _, error in
| `- warning: 'modifyRecordZonesCompletionBlock' was deprecated in macOS 12.0: Use modifyRecordZonesResultBlock instead
362 | if let error = error {
363 | Log.operations.error("Failed to create custom zone: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:384:19: warning: 'fetchSubscriptionCompletionBlock' was deprecated in macOS 12.0: Use fetchSubscriptionsResultBlock instead
382 | let operation = CKFetchSubscriptionsOperation(subscriptionIDs: [subscriptionID])
383 |
384 | operation.fetchSubscriptionCompletionBlock = { ids, error in
| `- warning: 'fetchSubscriptionCompletionBlock' was deprecated in macOS 12.0: Use fetchSubscriptionsResultBlock instead
385 | if let error = error {
386 | Log.operations.error("Failed to check for subscription existence: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:426:19: warning: 'modifySubscriptionsCompletionBlock' was deprecated in macOS 12.0: Use modifySubscriptionsResultBlock instead
424 | )
425 |
426 | operation.modifySubscriptionsCompletionBlock = { _, _, error in
| `- warning: 'modifySubscriptionsCompletionBlock' was deprecated in macOS 12.0: Use modifySubscriptionsResultBlock instead
427 | if let error = error {
428 | Log.operations.error("Failed to create subscription: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudSyncSession.swift:113:17: warning: capture of 'self' with non-sendable type 'CloudSyncSession' in a '@Sendable' closure
8 |
9 | /// An object that manages a long-lived series of CloudKit syncing operations.
10 | public class CloudSyncSession {
| `- note: class 'CloudSyncSession' does not conform to the 'Sendable' protocol
11 | /// Represents the state of the session.
12 | @Published public var state = SyncState()
:
111 | dispatchQueue.async {
112 | func next(event: SyncEvent, middlewaresToRun: [AnyMiddleware]) -> SyncEvent {
113 | self.eventsPublisher.send(event)
| `- warning: capture of 'self' with non-sendable type 'CloudSyncSession' in a '@Sendable' closure
114 |
115 | if let middleware = middlewaresToRun.last {
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudSyncSession.swift:129:29: warning: capture of 'event' with non-sendable type 'SyncEvent' in a '@Sendable' closure
127 | }
128 |
129 | _ = next(event: event, middlewaresToRun: Array(self.middlewares.reversed()))
| `- warning: capture of 'event' with non-sendable type 'SyncEvent' in a '@Sendable' closure
130 | }
131 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/SyncEvent.swift:3:13: note: consider making enum 'SyncEvent' conform to the 'Sendable' protocol
1 | import CloudKit
2 |
3 | public enum SyncEvent {
| `- note: consider making enum 'SyncEvent' conform to the 'Sendable' protocol
4 | /// Should be dispatched when the session starts.
5 | case start
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudSyncSession.swift:113:17: warning: capture of 'self' with non-sendable type 'CloudSyncSession' in an isolated local function; this is an error in the Swift 6 language mode
8 |
9 | /// An object that manages a long-lived series of CloudKit syncing operations.
10 | public class CloudSyncSession {
| `- note: class 'CloudSyncSession' does not conform to the 'Sendable' protocol
11 | /// Represents the state of the session.
12 | @Published public var state = SyncState()
:
111 | dispatchQueue.async {
112 | func next(event: SyncEvent, middlewaresToRun: [AnyMiddleware]) -> SyncEvent {
113 | self.eventsPublisher.send(event)
| `- warning: capture of 'self' with non-sendable type 'CloudSyncSession' in an isolated local function; this is an error in the Swift 6 language mode
114 |
115 | if let middleware = middlewaresToRun.last {
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:79:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
77 |
78 | DispatchQueue.main.asyncAfter(deadline: deadline) {
79 | self.operationQueue.addOperation(operation)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
80 | }
81 | }
[108/108] Compiling CloudSyncSession CloudSyncSession.swift
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:121:19: warning: 'modifyRecordsCompletionBlock' was deprecated in macOS 12.0: Use modifyRecordsResultBlock instead
119 | )
120 |
121 | operation.modifyRecordsCompletionBlock = { serverRecords, deletedRecordIDs, error in
| `- warning: 'modifyRecordsCompletionBlock' was deprecated in macOS 12.0: Use modifyRecordsResultBlock instead
122 | if let error = error {
123 | Log.operations.error("Failed to modify records: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:174:19: warning: 'recordChangedBlock' was deprecated in macOS 12.0: Use recordWasChangedBlock instead, which surfaces per-record errors
172 | }
173 |
174 | operation.recordChangedBlock = { record in
| `- warning: 'recordChangedBlock' was deprecated in macOS 12.0: Use recordWasChangedBlock instead, which surfaces per-record errors
175 | changedRecords.append(record)
176 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:182:19: warning: 'recordZoneFetchCompletionBlock' was deprecated in macOS 12.0: Use recordZoneFetchResultBlock instead
180 | }
181 |
182 | operation.recordZoneFetchCompletionBlock = { [weak self] _, newToken, _, newHasMore, _ in
| `- warning: 'recordZoneFetchCompletionBlock' was deprecated in macOS 12.0: Use recordZoneFetchResultBlock instead
183 | guard let self = self else {
184 | return
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:200:19: warning: 'fetchRecordZoneChangesCompletionBlock' was deprecated in macOS 12.0: Use fetchRecordZoneChangesResultBlock instead
198 | }
199 |
200 | operation.fetchRecordZoneChangesCompletionBlock = { [weak self] error in
| `- warning: 'fetchRecordZoneChangesCompletionBlock' was deprecated in macOS 12.0: Use fetchRecordZoneChangesResultBlock instead
201 | guard let self = self else {
202 | return
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:161:23: warning: value 'self' was defined but never used; consider replacing with boolean test
159 |
160 | operation.recordZoneChangeTokensUpdatedBlock = { [weak self] _, newToken, _ in
161 | guard let self = self else {
| `- warning: value 'self' was defined but never used; consider replacing with boolean test
162 | return
163 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:183:23: warning: value 'self' was defined but never used; consider replacing with boolean test
181 |
182 | operation.recordZoneFetchCompletionBlock = { [weak self] _, newToken, _, newHasMore, _ in
183 | guard let self = self else {
| `- warning: value 'self' was defined but never used; consider replacing with boolean test
184 | return
185 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:328:19: warning: 'fetchRecordZonesCompletionBlock' was deprecated in macOS 12.0: Use fetchRecordZonesResultBlock instead
326 | let operation = CKFetchRecordZonesOperation(recordZoneIDs: [zoneID])
327 |
328 | operation.fetchRecordZonesCompletionBlock = { ids, error in
| `- warning: 'fetchRecordZonesCompletionBlock' was deprecated in macOS 12.0: Use fetchRecordZonesResultBlock instead
329 | if let error = error {
330 | Log.operations.error("Failed to check for custom zone existence: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:361:19: warning: 'modifyRecordZonesCompletionBlock' was deprecated in macOS 12.0: Use modifyRecordZonesResultBlock instead
359 | )
360 |
361 | operation.modifyRecordZonesCompletionBlock = { _, _, error in
| `- warning: 'modifyRecordZonesCompletionBlock' was deprecated in macOS 12.0: Use modifyRecordZonesResultBlock instead
362 | if let error = error {
363 | Log.operations.error("Failed to create custom zone: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:384:19: warning: 'fetchSubscriptionCompletionBlock' was deprecated in macOS 12.0: Use fetchSubscriptionsResultBlock instead
382 | let operation = CKFetchSubscriptionsOperation(subscriptionIDs: [subscriptionID])
383 |
384 | operation.fetchSubscriptionCompletionBlock = { ids, error in
| `- warning: 'fetchSubscriptionCompletionBlock' was deprecated in macOS 12.0: Use fetchSubscriptionsResultBlock instead
385 | if let error = error {
386 | Log.operations.error("Failed to check for subscription existence: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:426:19: warning: 'modifySubscriptionsCompletionBlock' was deprecated in macOS 12.0: Use modifySubscriptionsResultBlock instead
424 | )
425 |
426 | operation.modifySubscriptionsCompletionBlock = { _, _, error in
| `- warning: 'modifySubscriptionsCompletionBlock' was deprecated in macOS 12.0: Use modifySubscriptionsResultBlock instead
427 | if let error = error {
428 | Log.operations.error("Failed to create subscription: \(String(describing: error))")
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudSyncSession.swift:113:17: warning: capture of 'self' with non-sendable type 'CloudSyncSession' in a '@Sendable' closure
8 |
9 | /// An object that manages a long-lived series of CloudKit syncing operations.
10 | public class CloudSyncSession {
| `- note: class 'CloudSyncSession' does not conform to the 'Sendable' protocol
11 | /// Represents the state of the session.
12 | @Published public var state = SyncState()
:
111 | dispatchQueue.async {
112 | func next(event: SyncEvent, middlewaresToRun: [AnyMiddleware]) -> SyncEvent {
113 | self.eventsPublisher.send(event)
| `- warning: capture of 'self' with non-sendable type 'CloudSyncSession' in a '@Sendable' closure
114 |
115 | if let middleware = middlewaresToRun.last {
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudSyncSession.swift:129:29: warning: capture of 'event' with non-sendable type 'SyncEvent' in a '@Sendable' closure
127 | }
128 |
129 | _ = next(event: event, middlewaresToRun: Array(self.middlewares.reversed()))
| `- warning: capture of 'event' with non-sendable type 'SyncEvent' in a '@Sendable' closure
130 | }
131 | }
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/SyncEvent.swift:3:13: note: consider making enum 'SyncEvent' conform to the 'Sendable' protocol
1 | import CloudKit
2 |
3 | public enum SyncEvent {
| `- note: consider making enum 'SyncEvent' conform to the 'Sendable' protocol
4 | /// Should be dispatched when the session starts.
5 | case start
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudSyncSession.swift:113:17: warning: capture of 'self' with non-sendable type 'CloudSyncSession' in an isolated local function; this is an error in the Swift 6 language mode
8 |
9 | /// An object that manages a long-lived series of CloudKit syncing operations.
10 | public class CloudSyncSession {
| `- note: class 'CloudSyncSession' does not conform to the 'Sendable' protocol
11 | /// Represents the state of the session.
12 | @Published public var state = SyncState()
:
111 | dispatchQueue.async {
112 | func next(event: SyncEvent, middlewaresToRun: [AnyMiddleware]) -> SyncEvent {
113 | self.eventsPublisher.send(event)
| `- warning: capture of 'self' with non-sendable type 'CloudSyncSession' in an isolated local function; this is an error in the Swift 6 language mode
114 |
115 | if let middleware = middlewaresToRun.last {
/Users/admin/builder/spi-builder-workspace/Sources/CloudSyncSession/CloudKitOperationHandler.swift:79:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
77 |
78 | DispatchQueue.main.asyncAfter(deadline: deadline) {
79 | self.operationQueue.addOperation(operation)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
80 | }
81 | }
[109/109] Compiling CloudSyncSession SyncWork.swift
Build complete! (9.49s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-pid",
"requirement" : {
"range" : [
{
"lower_bound" : "0.0.1",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/ryanashcraft/swift-pid.git"
},
{
"identity" : "swift-log",
"requirement" : {
"range" : [
{
"lower_bound" : "1.5.4",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-log.git"
}
],
"manifest_display_name" : "CloudSyncSession",
"name" : "CloudSyncSession",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "15.0"
},
{
"name" : "watchos",
"version" : "8.0"
},
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "CloudSyncSession",
"targets" : [
"CloudSyncSession"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "CloudSyncSessionTests",
"module_type" : "SwiftTarget",
"name" : "CloudSyncSessionTests",
"path" : "Tests/CloudSyncSessionTests",
"sources" : [
"CloudSyncSessionTests.swift",
"SyncStateTests.swift"
],
"target_dependencies" : [
"CloudSyncSession"
],
"type" : "test"
},
{
"c99name" : "CloudSyncSession",
"module_type" : "SwiftTarget",
"name" : "CloudSyncSession",
"path" : "Sources/CloudSyncSession",
"product_dependencies" : [
"PID",
"Logging"
],
"product_memberships" : [
"CloudSyncSession"
],
"sources" : [
"CloudKitOperationHandler.swift",
"CloudSyncSession.swift",
"Extensions/CKErrorExtensions.swift",
"Log.swift",
"Middleware.swift",
"Middleware/AccountStatusMiddleware.swift",
"Middleware/ErrorMiddleware.swift",
"Middleware/LoggerMiddleware.swift",
"Middleware/RetryMiddleware.swift",
"Middleware/SplittingMiddleware.swift",
"Middleware/SubjectMiddleware.swift",
"Middleware/WorkMiddleware.swift",
"Middleware/ZoneMiddleware.swift",
"OperationHandler.swift",
"SyncEvent.swift",
"SyncState.swift",
"SyncWork.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.