The Swift Package Index logo.Swift Package Index

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

Build Information

Successful build of 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.