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 Coinpaprika, reference master (22daae), with Swift 6.0 for macOS (SPM) on 27 Nov 2024 03:29:27 UTC.

Swift 6 data race errors: 2

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 -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.58.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/coinpaprika/coinpaprika-api-swift-client.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/coinpaprika/coinpaprika-api-swift-client
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at 22daaef Adds paging support for tickers. (#14)
Cloned https://github.com/coinpaprika/coinpaprika-api-swift-client.git
Revision (git rev-parse @):
22daaef73cfd79360483cbc51632dc372f23206d
SUCCESS checkout https://github.com/coinpaprika/coinpaprika-api-swift-client.git at master
========================================
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": "coinpaprika-api-swift-client",
      "name": "Coinpaprika",
      "url": "https://github.com/coinpaprika/coinpaprika-api-swift-client.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/coinpaprika-api-swift-client",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/coinpaprika/coinpaprika-api-swift-client.git
[1/2930] Fetching coinpaprika-api-swift-client
Fetched https://github.com/coinpaprika/coinpaprika-api-swift-client.git from cache (1.25s)
Creating working copy for https://github.com/coinpaprika/coinpaprika-api-swift-client.git
Working copy of https://github.com/coinpaprika/coinpaprika-api-swift-client.git resolved at master (22daaef)
warning: '.resolve-product-dependencies': dependency 'coinpaprika-api-swift-client' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/coinpaprika/coinpaprika-api-swift-client.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 -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/4] Write sources
[3/4] Write swift-version--7754E27361AE5C74.txt
[5/10] Compiling CoinpaprikaNetworking Result.swift
[6/10] Compiling CoinpaprikaNetworking Request.swift
/Users/admin/builder/spi-builder-workspace/Sources/Networking/Request.swift:85:66: warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
 82 |     ///   - callback: Completion handler triggered on request success & failure
 83 |     public func perform(responseQueue: DispatchQueue? = nil, cachePolicy: URLRequest.CachePolicy? = nil, session: NetworkSession = URLSession.shared, _ callback: @escaping (Result<Model, Error>) -> Void) {
 84 |         let onQueue = { (_ block: @escaping () -> Void) -> Void in
    |                            `- note: parameter 'block' is implicitly non-sendable
 85 |             (responseQueue ?? DispatchQueue.main).async(execute: block)
    |                                                                  `- warning: passing non-sendable parameter 'block' to function expecting a @Sendable closure
 86 |         }
 87 |
[7/10] Compiling CoinpaprikaNetworking Errors.swift
[8/10] Compiling CoinpaprikaNetworking NetworkSession.swift
/Users/admin/builder/spi-builder-workspace/Sources/Networking/NetworkSession.swift:18:13: warning: capture of 'completionHandler' with non-sendable type '(Data?, URLResponse?, (any Error)?) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
16 |     public func loadData(with request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) {
17 |         let task = dataTask(with: request) { (data, response, error) in
18 |             completionHandler(data, response, error)
   |             |- warning: capture of 'completionHandler' with non-sendable type '(Data?, URLResponse?, (any Error)?) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
   |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
19 |         }
20 |
[9/10] Emitting module CoinpaprikaNetworking
[10/10] Compiling CoinpaprikaNetworking CodableModel.swift
[11/35] Compiling CoinpaprikaNetworkingMocks CodableMock.swift
[12/35] Compiling CoinpaprikaNetworkingMocks JsonMock.swift
[13/35] Emitting module CoinpaprikaNetworkingMocks
[14/35] Compiling Coinpaprika Ohlcv.swift
[15/35] Compiling Coinpaprika Person.swift
[16/37] Compiling Coinpaprika Fiat.swift
[17/37] Compiling Coinpaprika GlobalStats.swift
[18/37] Compiling Coinpaprika Market.swift
[19/37] Compiling Coinpaprika News.swift
[20/37] Compiling Coinpaprika StatusResponse.swift
[21/37] Compiling Coinpaprika Tag.swift
[22/37] Compiling Coinpaprika Ticker.swift
[23/37] Compiling Coinpaprika TickerHistory.swift
[24/37] Compiling Coinpaprika QuoteCurrency.swift
[25/37] Compiling Coinpaprika SearchResults.swift
[26/37] Compiling Coinpaprika CoinMarket.swift
[27/37] Compiling Coinpaprika Event.swift
[28/37] Compiling Coinpaprika Exchange.swift
[29/37] Compiling Coinpaprika API.swift
/Users/admin/builder/spi-builder-workspace/Sources/Client/Configuration.swift:13:23: warning: static property 'baseUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 |
12 | public struct Configuration {
13 |     public static var baseUrl = URL(string: "https://api.coinpaprika.com/v1/")!
   |                       |- warning: static property 'baseUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'baseUrl' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'baseUrl' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |     public static var userAgent = "Coinpaprika API Client - Swift"
15 | }
/Users/admin/builder/spi-builder-workspace/Sources/Client/Configuration.swift:14:23: warning: static property 'userAgent' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
12 | public struct Configuration {
13 |     public static var baseUrl = URL(string: "https://api.coinpaprika.com/v1/")!
14 |     public static var userAgent = "Coinpaprika API Client - Swift"
   |                       |- warning: static property 'userAgent' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'userAgent' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'userAgent' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
15 | }
16 |
[30/37] Compiling Coinpaprika Configuration.swift
/Users/admin/builder/spi-builder-workspace/Sources/Client/Configuration.swift:13:23: warning: static property 'baseUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 |
12 | public struct Configuration {
13 |     public static var baseUrl = URL(string: "https://api.coinpaprika.com/v1/")!
   |                       |- warning: static property 'baseUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'baseUrl' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'baseUrl' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |     public static var userAgent = "Coinpaprika API Client - Swift"
15 | }
/Users/admin/builder/spi-builder-workspace/Sources/Client/Configuration.swift:14:23: warning: static property 'userAgent' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
12 | public struct Configuration {
13 |     public static var baseUrl = URL(string: "https://api.coinpaprika.com/v1/")!
14 |     public static var userAgent = "Coinpaprika API Client - Swift"
   |                       |- warning: static property 'userAgent' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'userAgent' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'userAgent' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
15 | }
16 |
[31/37] Compiling Coinpaprika QueryRepresentable.swift
/Users/admin/builder/spi-builder-workspace/Sources/Client/Configuration.swift:13:23: warning: static property 'baseUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 |
12 | public struct Configuration {
13 |     public static var baseUrl = URL(string: "https://api.coinpaprika.com/v1/")!
   |                       |- warning: static property 'baseUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'baseUrl' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'baseUrl' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |     public static var userAgent = "Coinpaprika API Client - Swift"
15 | }
/Users/admin/builder/spi-builder-workspace/Sources/Client/Configuration.swift:14:23: warning: static property 'userAgent' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
12 | public struct Configuration {
13 |     public static var baseUrl = URL(string: "https://api.coinpaprika.com/v1/")!
14 |     public static var userAgent = "Coinpaprika API Client - Swift"
   |                       |- warning: static property 'userAgent' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'userAgent' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'userAgent' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
15 | }
16 |
[32/37] Compiling Coinpaprika TopMovers.swift
[33/37] Compiling Coinpaprika Tweet.swift
[34/37] Emitting module Coinpaprika
/Users/admin/builder/spi-builder-workspace/Sources/Client/Configuration.swift:13:23: warning: static property 'baseUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
11 |
12 | public struct Configuration {
13 |     public static var baseUrl = URL(string: "https://api.coinpaprika.com/v1/")!
   |                       |- warning: static property 'baseUrl' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'baseUrl' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'baseUrl' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |     public static var userAgent = "Coinpaprika API Client - Swift"
15 | }
/Users/admin/builder/spi-builder-workspace/Sources/Client/Configuration.swift:14:23: warning: static property 'userAgent' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
12 | public struct Configuration {
13 |     public static var baseUrl = URL(string: "https://api.coinpaprika.com/v1/")!
14 |     public static var userAgent = "Coinpaprika API Client - Swift"
   |                       |- warning: static property 'userAgent' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'userAgent' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'userAgent' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
15 | }
16 |
[35/37] Compiling Coinpaprika Coin.swift
[36/37] Compiling Coinpaprika CoinExchange.swift
[37/37] Compiling Coinpaprika CoinLink.swift
Build complete! (10.76s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Coinpaprika",
  "name" : "Coinpaprika",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "10.0"
    },
    {
      "name" : "macos",
      "version" : "10.12"
    },
    {
      "name" : "tvos",
      "version" : "10.0"
    },
    {
      "name" : "watchos",
      "version" : "3.0"
    }
  ],
  "products" : [
    {
      "name" : "Coinpaprika",
      "targets" : [
        "Coinpaprika"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CoinpaprikaNetworking",
      "targets" : [
        "CoinpaprikaNetworking"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CoinpaprikaNetworkingMocks",
      "targets" : [
        "CoinpaprikaNetworkingMocks"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CoinpaprikaTests",
      "module_type" : "SwiftTarget",
      "name" : "CoinpaprikaTests",
      "path" : "Tests",
      "sources" : [
        "CodableTest.swift",
        "QuotesTests.swift",
        "RequestTests.swift"
      ],
      "target_dependencies" : [
        "Coinpaprika",
        "CoinpaprikaNetworkingMocks"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CoinpaprikaNetworkingMocks",
      "module_type" : "SwiftTarget",
      "name" : "CoinpaprikaNetworkingMocks",
      "path" : "Sources/NetworkingMocks",
      "product_memberships" : [
        "CoinpaprikaNetworkingMocks"
      ],
      "sources" : [
        "CodableMock.swift",
        "JsonMock.swift"
      ],
      "target_dependencies" : [
        "CoinpaprikaNetworking"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CoinpaprikaNetworking",
      "module_type" : "SwiftTarget",
      "name" : "CoinpaprikaNetworking",
      "path" : "Sources/Networking",
      "product_memberships" : [
        "Coinpaprika",
        "CoinpaprikaNetworking",
        "CoinpaprikaNetworkingMocks"
      ],
      "sources" : [
        "CodableModel.swift",
        "Errors.swift",
        "NetworkSession.swift",
        "Request.swift",
        "Result.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Coinpaprika",
      "module_type" : "SwiftTarget",
      "name" : "Coinpaprika",
      "path" : "Sources/Client",
      "product_memberships" : [
        "Coinpaprika"
      ],
      "sources" : [
        "API.swift",
        "Configuration.swift",
        "Helpers/QueryRepresentable.swift",
        "Models/Coin.swift",
        "Models/CoinExchange.swift",
        "Models/CoinLink.swift",
        "Models/CoinMarket.swift",
        "Models/Event.swift",
        "Models/Exchange.swift",
        "Models/Fiat.swift",
        "Models/GlobalStats.swift",
        "Models/Market.swift",
        "Models/News.swift",
        "Models/Ohlcv.swift",
        "Models/Person.swift",
        "Models/QuoteCurrency.swift",
        "Models/SearchResults.swift",
        "Models/StatusResponse.swift",
        "Models/Tag.swift",
        "Models/Ticker.swift",
        "Models/TickerHistory.swift",
        "Models/TopMovers.swift",
        "Models/Tweet.swift"
      ],
      "target_dependencies" : [
        "CoinpaprikaNetworking"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.0"
}
Done.