The Swift Package Index logo.Swift Package Index

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

Build Information

Successful build of Ergo, reference main (d09e8b), with Swift 6.0 for macOS (SPM) on 2 Nov 2024 12:33:16 UTC.

Swift 6 data race errors: 1

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete

Build Log

========================================
RunAll
========================================
Builder version: 4.56.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/hainayanda/Ergo.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/hainayanda/Ergo
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at d09e8b5 Update README.md
Cloned https://github.com/hainayanda/Ergo.git
Revision (git rev-parse @):
d09e8b5bc8baf01430c842062d5d7899f3e187c0
SUCCESS checkout https://github.com/hainayanda/Ergo.git at main
Fetching https://github.com/hainayanda/Chary.git
[1/514] Fetching chary
Fetched https://github.com/hainayanda/Chary.git from cache (0.86s)
Computing version for https://github.com/hainayanda/Chary.git
Computed https://github.com/hainayanda/Chary.git at 1.0.2 (0.67s)
Creating working copy for https://github.com/hainayanda/Chary.git
Working copy of https://github.com/hainayanda/Chary.git resolved at 1.0.2
========================================
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": "ergo",
      "name": "Ergo",
      "url": "https://github.com/hainayanda/Ergo.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Ergo",
      "dependencies": [
        {
          "identity": "chary",
          "name": "Chary",
          "url": "https://github.com/hainayanda/Chary.git",
          "version": "1.0.7",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Chary",
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/hainayanda/Ergo.git
[1/673] Fetching ergo
Fetched https://github.com/hainayanda/Ergo.git from cache (0.92s)
Fetching https://github.com/hainayanda/Chary.git from cache
Fetched https://github.com/hainayanda/Chary.git from cache (0.47s)
Computing version for https://github.com/hainayanda/Chary.git
Computed https://github.com/hainayanda/Chary.git at 1.0.7 (0.63s)
Creating working copy for https://github.com/hainayanda/Ergo.git
Working copy of https://github.com/hainayanda/Ergo.git resolved at main (d09e8b5)
Creating working copy for https://github.com/hainayanda/Chary.git
Working copy of https://github.com/hainayanda/Chary.git resolved at 1.0.7
warning: '.resolve-product-dependencies': dependency 'ergo' is not used by any target
Found 1 product dependencies
  - Chary
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/hainayanda/Ergo.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/3] Write sources
[2/3] Write swift-version--7754E27361AE5C74.txt
[4/6] Compiling Chary Atomic.swift
[5/6] Emitting module Chary
[6/6] Compiling Chary DispatchQueue+Extensions.swift
[7/15] Compiling Ergo Task+Extensions.swift
[8/15] Compiling Ergo NestedPromise.swift
[9/15] Compiling Ergo Thenable.swift
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Thenable.swift:126:37: warning: capture of 'result' with non-sendable type 'Self.Result' in a `@Sendable` closure; this is an error in the Swift 6 language mode
124 |         thenContinue { result in
125 |             return ClosurePromise {
126 |                 try await asyncTask(result)
    |                                     `- warning: capture of 'result' with non-sendable type 'Self.Result' in a `@Sendable` closure; this is an error in the Swift 6 language mode
127 |             }
128 |         }
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Thenable.swift:144:16: warning: type 'Self.Result' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
142 |     func asTask() -> Task<Result, Error> {
143 |         let promise = self
144 |         return Task<Result, Error> {
    |                `- warning: type 'Self.Result' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
145 |             try await promise.result
146 |         }
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Thenable.swift:144:34: warning: type 'Self.Result' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
142 |     func asTask() -> Task<Result, Error> {
143 |         let promise = self
144 |         return Task<Result, Error> {
    |                                  `- warning: type 'Self.Result' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
145 |             try await promise.result
146 |         }
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Thenable.swift:144:36: 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
142 |     func asTask() -> Task<Result, Error> {
143 |         let promise = self
144 |         return Task<Result, Error> {
    |                                    `- 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
145 |             try await promise.result
    |                       `- note: closure captures 'promise' which is accessible to code in the current task
146 |         }
147 |     }
[10/15] Compiling Ergo ErgoError.swift
[11/15] Compiling Ergo GlobalFunction.swift
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/GlobalFunction.swift:87:41: warning: capture of 'task1' with non-sendable type 'Promise<Result1>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 85 |         if #available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) {
 86 |             return asyncAwaitPromise {
 87 |                 let result1 = try await task1.result
    |                                         `- warning: capture of 'task1' with non-sendable type 'Promise<Result1>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 88 |                 let result2 = try await task2.result
 89 |                 return (result1, result2)
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Promise.swift:14:12: note: generic class 'Promise' does not conform to the 'Sendable' protocol
 12 |
 13 | /// Regular Promise
 14 | open class Promise<Result>: Thenable {
    |            `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
 15 |
 16 |     private var _currentValue: Result?
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/GlobalFunction.swift:88:41: warning: capture of 'task2' with non-sendable type 'Promise<Result2>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 86 |             return asyncAwaitPromise {
 87 |                 let result1 = try await task1.result
 88 |                 let result2 = try await task2.result
    |                                         `- warning: capture of 'task2' with non-sendable type 'Promise<Result2>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 89 |                 return (result1, result2)
 90 |             }
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Promise.swift:14:12: note: generic class 'Promise' does not conform to the 'Sendable' protocol
 12 |
 13 | /// Regular Promise
 14 | open class Promise<Result>: Thenable {
    |            `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
 15 |
 16 |     private var _currentValue: Result?
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/GlobalFunction.swift:132:41: warning: capture of 'task1' with non-sendable type 'Promise<Result1>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
130 |         if #available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) {
131 |             return asyncAwaitPromise {
132 |                 let result1 = try await task1.result
    |                                         `- warning: capture of 'task1' with non-sendable type 'Promise<Result1>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
133 |                 let result2 = try await task2.result
134 |                 let result3 = try await task3.result
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Promise.swift:14:12: note: generic class 'Promise' does not conform to the 'Sendable' protocol
 12 |
 13 | /// Regular Promise
 14 | open class Promise<Result>: Thenable {
    |            `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
 15 |
 16 |     private var _currentValue: Result?
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/GlobalFunction.swift:133:41: warning: capture of 'task2' with non-sendable type 'Promise<Result2>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
131 |             return asyncAwaitPromise {
132 |                 let result1 = try await task1.result
133 |                 let result2 = try await task2.result
    |                                         `- warning: capture of 'task2' with non-sendable type 'Promise<Result2>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
134 |                 let result3 = try await task3.result
135 |                 return (result1, result2, result3)
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Promise.swift:14:12: note: generic class 'Promise' does not conform to the 'Sendable' protocol
 12 |
 13 | /// Regular Promise
 14 | open class Promise<Result>: Thenable {
    |            `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
 15 |
 16 |     private var _currentValue: Result?
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/GlobalFunction.swift:134:41: warning: capture of 'task3' with non-sendable type 'Promise<Result3>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
132 |                 let result1 = try await task1.result
133 |                 let result2 = try await task2.result
134 |                 let result3 = try await task3.result
    |                                         `- warning: capture of 'task3' with non-sendable type 'Promise<Result3>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
135 |                 return (result1, result2, result3)
136 |             }
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Promise.swift:14:12: note: generic class 'Promise' does not conform to the 'Sendable' protocol
 12 |
 13 | /// Regular Promise
 14 | open class Promise<Result>: Thenable {
    |            `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
 15 |
 16 |     private var _currentValue: Result?
[12/15] Emitting module Ergo
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Promise.swift:271:17: warning: generic parameter 'Result' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 12 |
 13 | /// Regular Promise
 14 | open class Promise<Result>: Thenable {
    |                    `- note: 'Result' previously declared here
 15 |
 16 |     private var _currentValue: Result?
    :
269 |     }
270 |
271 |     func synced<Result>(run: () -> Result) -> Result {
    |                 `- warning: generic parameter 'Result' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
272 |         promiseQueue.safeSync(execute: run)
273 |     }
[13/15] Compiling Ergo ChainAnimator.swift
[14/15] Compiling Ergo ClosurePromise.swift
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/ClosurePromise.swift:80:21: warning: capture of 'promise' with non-sendable type 'ClosurePromise<Result>?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 52 |
 53 | /// Promise based on closure
 54 | open class ClosurePromise<Result>: Promise<Result> {
    |            `- note: generic class 'ClosurePromise' does not conform to the 'Sendable' protocol
 55 |     public typealias Worker = AsyncPromiseWorker<Result>
 56 |
    :
 78 |         }
 79 |         promiseQueue.asyncAfter(deadline: .now() + timeout) {
 80 |             guard !(promise?.isCompleted ?? true) else { return }
    |                     `- warning: capture of 'promise' with non-sendable type 'ClosurePromise<Result>?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 81 |             promise?.drop(
 82 |                 becauseOf: ErgoError(
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/ClosurePromise.swift:80:21: warning: reference to captured var 'promise' in concurrently-executing code; this is an error in the Swift 6 language mode
 78 |         }
 79 |         promiseQueue.asyncAfter(deadline: .now() + timeout) {
 80 |             guard !(promise?.isCompleted ?? true) else { return }
    |                     `- warning: reference to captured var 'promise' in concurrently-executing code; this is an error in the Swift 6 language mode
 81 |             promise?.drop(
 82 |                 becauseOf: ErgoError(
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/ClosurePromise.swift:81:13: warning: reference to captured var 'promise' in concurrently-executing code; this is an error in the Swift 6 language mode
 79 |         promiseQueue.asyncAfter(deadline: .now() + timeout) {
 80 |             guard !(promise?.isCompleted ?? true) else { return }
 81 |             promise?.drop(
    |             `- warning: reference to captured var 'promise' in concurrently-executing code; this is an error in the Swift 6 language mode
 82 |                 becauseOf: ErgoError(
 83 |                     errorDescription: "Ergo Error: Timeout",
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/ClosurePromise.swift:87:13: warning: mutation of captured var 'promise' in concurrently-executing code; this is an error in the Swift 6 language mode
 85 |                 )
 86 |             )
 87 |             promise = nil
    |             `- warning: mutation of captured var 'promise' in concurrently-executing code; this is an error in the Swift 6 language mode
 88 |         }
 89 |     }
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/ClosurePromise.swift:96: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
 94 |         // promise retained by design
 95 |         let promise = self
 96 |         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
 97 |             do {
 98 |                 let result = try await worker()
 99 |                 promise.currentValue = result
    |                 `- note: closure captures 'promise' which is accessible to code in the current task
100 |             } catch {
101 |                 promise.drop(becauseOf: error)
[15/15] Compiling Ergo Promise.swift
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Promise.swift:271:17: warning: generic parameter 'Result' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
 12 |
 13 | /// Regular Promise
 14 | open class Promise<Result>: Thenable {
    |                    `- note: 'Result' previously declared here
 15 |
 16 |     private var _currentValue: Result?
    :
269 |     }
270 |
271 |     func synced<Result>(run: () -> Result) -> Result {
    |                 `- warning: generic parameter 'Result' shadows generic parameter from outer scope with the same name; this is an error in the Swift 6 language mode
272 |         promiseQueue.safeSync(execute: run)
273 |     }
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Promise.swift:167:26: warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
165 |     func register(continuation: CheckedContinuation<Result, Error>) {
166 |         if let result = currentValue {
167 |             continuation.resume(returning: result)
    |                          |- warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
    |                          `- note: task-isolated 'result' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
168 |             return
169 |         } else if let error = error {
/Users/admin/builder/spi-builder-workspace/Ergo/Classes/Promise.swift:185:31: warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
183 |             abstractContinuations = []
184 |         }
185 |         dequeued.forEach { $0.resume(with: result) }
    |                               |- warning: sending 'result' risks causing data races; this is an error in the Swift 6 language mode
    |                               `- note: task-isolated 'result' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
186 |     }
187 |
Build complete! (8.04s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "chary",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.2",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/hainayanda/Chary.git"
    }
  ],
  "manifest_display_name" : "Ergo",
  "name" : "Ergo",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "10.0"
    },
    {
      "name" : "macos",
      "version" : "10.10"
    },
    {
      "name" : "tvos",
      "version" : "10.0"
    }
  ],
  "products" : [
    {
      "name" : "Ergo",
      "targets" : [
        "Ergo"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "Ergo",
      "module_type" : "SwiftTarget",
      "name" : "Ergo",
      "path" : "Ergo/Classes",
      "product_dependencies" : [
        "Chary"
      ],
      "product_memberships" : [
        "Ergo"
      ],
      "sources" : [
        "ChainAnimator.swift",
        "ClosurePromise.swift",
        "ErgoError.swift",
        "GlobalFunction.swift",
        "NestedPromise.swift",
        "Promise.swift",
        "Task+Extensions.swift",
        "Thenable.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Done.