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 AllCache, reference master (2fe87f), with Swift 6.0 for macOS (SPM) on 1 Nov 2024 06:57:48 UTC.

Swift 6 data race errors: 3

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/JuanjoArreola/AllCache.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/JuanjoArreola/AllCache
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at 2fe87f2 Merge branch 'new'
Cloned https://github.com/JuanjoArreola/AllCache.git
Revision (git rev-parse @):
2fe87f2690c13cb7a012f5346cf3824477aec512
SUCCESS checkout https://github.com/JuanjoArreola/AllCache.git at master
Fetching https://github.com/JuanjoArreola/ShallowPromises.git
Fetching https://github.com/JuanjoArreola/Logg.git
[1/159] Fetching logg
[43/222] Fetching logg, shallowpromises
Fetched https://github.com/JuanjoArreola/Logg.git from cache (0.71s)
Fetched https://github.com/JuanjoArreola/ShallowPromises.git from cache (0.71s)
Computing version for https://github.com/JuanjoArreola/Logg.git
Computed https://github.com/JuanjoArreola/Logg.git at 2.4.0 (0.68s)
Computing version for https://github.com/JuanjoArreola/ShallowPromises.git
Computed https://github.com/JuanjoArreola/ShallowPromises.git at 0.7.1 (0.72s)
Creating working copy for https://github.com/JuanjoArreola/ShallowPromises.git
Working copy of https://github.com/JuanjoArreola/ShallowPromises.git resolved at 0.7.1
Creating working copy for https://github.com/JuanjoArreola/Logg.git
Working copy of https://github.com/JuanjoArreola/Logg.git resolved at 2.4.0
========================================
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": "allcache",
      "name": "AllCache",
      "url": "https://github.com/JuanjoArreola/AllCache.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/AllCache",
      "dependencies": [
        {
          "identity": "shallowpromises",
          "name": "ShallowPromises",
          "url": "https://github.com/JuanjoArreola/ShallowPromises.git",
          "version": "0.7.1",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/ShallowPromises",
          "dependencies": [
          ]
        },
        {
          "identity": "logg",
          "name": "Logg",
          "url": "https://github.com/JuanjoArreola/Logg.git",
          "version": "2.4.1",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Logg",
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/JuanjoArreola/AllCache.git
[1/969] Fetching allcache
Fetched https://github.com/JuanjoArreola/AllCache.git from cache (1.08s)
Fetching https://github.com/JuanjoArreola/ShallowPromises.git from cache
Fetching https://github.com/JuanjoArreola/Logg.git from cache
Fetched https://github.com/JuanjoArreola/ShallowPromises.git from cache (0.50s)
Fetched https://github.com/JuanjoArreola/Logg.git from cache (0.50s)
Computing version for https://github.com/JuanjoArreola/ShallowPromises.git
Computed https://github.com/JuanjoArreola/ShallowPromises.git at 0.7.1 (0.04s)
Computing version for https://github.com/JuanjoArreola/Logg.git
Computed https://github.com/JuanjoArreola/Logg.git at 2.4.1 (0.04s)
Creating working copy for https://github.com/JuanjoArreola/AllCache.git
Working copy of https://github.com/JuanjoArreola/AllCache.git resolved at master (2fe87f2)
Creating working copy for https://github.com/JuanjoArreola/ShallowPromises.git
Working copy of https://github.com/JuanjoArreola/ShallowPromises.git resolved at 0.7.1
Creating working copy for https://github.com/JuanjoArreola/Logg.git
Working copy of https://github.com/JuanjoArreola/Logg.git resolved at 2.4.1
warning: '.resolve-product-dependencies': dependency 'allcache' is not used by any target
Found 2 product dependencies
  - ShallowPromises
  - Logg
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/JuanjoArreola/AllCache.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/5] Write sources
[4/5] Write swift-version--7754E27361AE5C74.txt
[6/20] Compiling ShallowPromises Promise.swift
[7/20] Compiling ShallowPromises PromiseFailure.swift
[8/20] Emitting module ShallowPromises
[9/20] Compiling ShallowPromises Futures.swift
[10/20] Compiling ShallowPromises Cancellable.swift
[11/20] Compiling Logg Logger.swift
[12/20] Emitting module Logg
[13/20] Compiling Logg LogLevel.swift
[14/20] Compiling Logg FileLogger.swift
[15/20] Compiling Logg LogContext.swift
[16/20] Compiling Logg LogFormatter.swift
[17/20] Compiling Logg DefaultFormatter.swift
[18/20] Compiling Logg CompositeLogger.swift
[19/20] Compiling Logg ConsoleFormatter.swift
[20/20] Compiling Logg ConsoleLogger.swift
[21/30] Compiling AllCache Fetcher.swift
[22/30] Compiling AllCache ElementDescriptor.swift
[23/30] Compiling AllCache AllCacheFormatter.swift
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/AllCacheFormatter.swift:11:12: warning: let 'logger' is not concurrency-safe because non-'Sendable' type 'CompositeLogger' may have shared mutable state; this is an error in the Swift 6 language mode
 9 | import Logg
10 |
11 | public let logger = CompositeLogger(loggers: [ConsoleLogger(formatter: AllCacheFormatter(), level: [.error, .fault])])
   |            `- warning: let 'logger' is not concurrency-safe because non-'Sendable' type 'CompositeLogger' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | class AllCacheFormatter: ConsoleFormatter {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Logg/Sources/Logg/CompositeLogger.swift:3:14: note: class 'CompositeLogger' does not conform to the 'Sendable' protocol
 1 | import Foundation
 2 |
 3 | public class CompositeLogger {
   |              `- note: class 'CompositeLogger' does not conform to the 'Sendable' protocol
 4 |
 5 |     public convenience init() {
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/AllCacheFormatter.swift:9:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Logg'
 7 |
 8 | import Foundation
 9 | import Logg
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Logg'
10 |
11 | public let logger = CompositeLogger(loggers: [ConsoleLogger(formatter: AllCacheFormatter(), level: [.error, .fault])])
   |            |- note: annotate 'logger' 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
12 |
13 | class AllCacheFormatter: ConsoleFormatter {
[24/30] Emitting module AllCache
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/AllCacheFormatter.swift:11:12: warning: let 'logger' is not concurrency-safe because non-'Sendable' type 'CompositeLogger' may have shared mutable state; this is an error in the Swift 6 language mode
 9 | import Logg
10 |
11 | public let logger = CompositeLogger(loggers: [ConsoleLogger(formatter: AllCacheFormatter(), level: [.error, .fault])])
   |            `- warning: let 'logger' is not concurrency-safe because non-'Sendable' type 'CompositeLogger' may have shared mutable state; this is an error in the Swift 6 language mode
12 |
13 | class AllCacheFormatter: ConsoleFormatter {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Logg/Sources/Logg/CompositeLogger.swift:3:14: note: class 'CompositeLogger' does not conform to the 'Sendable' protocol
 1 | import Foundation
 2 |
 3 | public class CompositeLogger {
   |              `- note: class 'CompositeLogger' does not conform to the 'Sendable' protocol
 4 |
 5 |     public convenience init() {
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/AllCacheFormatter.swift:9:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Logg'
 7 |
 8 | import Foundation
 9 | import Logg
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Logg'
10 |
11 | public let logger = CompositeLogger(loggers: [ConsoleLogger(formatter: AllCacheFormatter(), level: [.error, .fault])])
   |            |- note: annotate 'logger' 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
12 |
13 | class AllCacheFormatter: ConsoleFormatter {
[25/30] Compiling AllCache MemoryCache.swift
[26/30] Compiling AllCache Serializer.swift
[27/30] Compiling AllCache Processor.swift
[28/30] Compiling AllCache JSONSerializer.swift
[29/30] Compiling AllCache Cache.swift
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/Cache.swift:52:13: warning: capture of 'self' with non-sendable type 'Cache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  8 | }
  9 |
 10 | open class Cache<T, S: Serializer> where S.T == T {
    |            `- note: generic class 'Cache' does not conform to the 'Sendable' protocol
 11 |     public let memoryCache = MemoryCache<T>()
 12 |     public let diskCache: DiskCache<T, S>
    :
 50 |         let promise = createPromise(for: descriptor)
 51 |         workingQueue.async {
 52 |             self.searchOnDisk(descriptor: descriptor, promise: promise)
    |             `- warning: capture of 'self' with non-sendable type 'Cache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 53 |         }
 54 |
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/Cache.swift:52:43: warning: capture of 'descriptor' with non-sendable type 'ElementDescriptor<T, F>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 50 |         let promise = createPromise(for: descriptor)
 51 |         workingQueue.async {
 52 |             self.searchOnDisk(descriptor: descriptor, promise: promise)
    |                                           `- warning: capture of 'descriptor' with non-sendable type 'ElementDescriptor<T, F>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 53 |         }
 54 |
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/ElementDescriptor.swift:10:15: note: consider making generic struct 'ElementDescriptor' conform to the 'Sendable' protocol
 8 | import Foundation
 9 |
10 | public struct ElementDescriptor<T, F: Fetcher> where F.T == T {
   |               `- note: consider making generic struct 'ElementDescriptor' conform to the 'Sendable' protocol
11 |     public var key: String
12 |     public var fetcher: F?
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/Cache.swift:52:64: warning: capture of 'promise' with non-sendable type 'Promise<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 50 |         let promise = createPromise(for: descriptor)
 51 |         workingQueue.async {
 52 |             self.searchOnDisk(descriptor: descriptor, promise: promise)
    |                                                                `- warning: capture of 'promise' with non-sendable type 'Promise<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 53 |         }
 54 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/ShallowPromises/Sources/ShallowPromises/Promise.swift:12:12: note: generic class 'Promise' does not conform to the 'Sendable' protocol
 10 | private let syncQueue = DispatchQueue(label: "com.shallowpromises.SyncQueue", attributes: [])
 11 |
 12 | open class Promise<U>: Cancellable {
    |            `- note: generic class 'Promise' does not conform to the 'Sendable' protocol
 13 |
 14 |     private var result: U?
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/Cache.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ShallowPromises'
  1 | import Foundation
  2 | import ShallowPromises
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ShallowPromises'
  3 |
  4 | private let workingQueue = DispatchQueue(label: "com.allcache.WorkingQueue", attributes: .concurrent)
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/Cache.swift:139:18: warning: capture of 'self' with non-sendable type 'Cache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  8 | }
  9 |
 10 | open class Cache<T, S: Serializer> where S.T == T {
    |            `- note: generic class 'Cache' does not conform to the 'Sendable' protocol
 11 |     public let memoryCache = MemoryCache<T>()
 12 |     public let diskCache: DiskCache<T, S>
    :
137 |         memoryCache.set(instance, forKey: key)
138 |         workingQueue.async {
139 |             try? self.diskCache.set(instance, forKey: key)
    |                  `- warning: capture of 'self' with non-sendable type 'Cache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/Cache.swift:139:37: warning: capture of 'instance' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  8 | }
  9 |
 10 | open class Cache<T, S: Serializer> where S.T == T {
    |                  `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 11 |     public let memoryCache = MemoryCache<T>()
 12 |     public let diskCache: DiskCache<T, S>
    :
137 |         memoryCache.set(instance, forKey: key)
138 |         workingQueue.async {
139 |             try? self.diskCache.set(instance, forKey: key)
    |                                     `- warning: capture of 'instance' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
140 |         }
141 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/Cache.swift:148:18: warning: capture of 'self' with non-sendable type 'Cache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  8 | }
  9 |
 10 | open class Cache<T, S: Serializer> where S.T == T {
    |            `- note: generic class 'Cache' does not conform to the 'Sendable' protocol
 11 |     public let memoryCache = MemoryCache<T>()
 12 |     public let diskCache: DiskCache<T, S>
    :
146 |         memoryCache.removeInstance(forKey: key)
147 |         workingQueue.async {
148 |             try? self.diskCache.removeInstance(forKey: key)
    |                  `- warning: capture of 'self' with non-sendable type 'Cache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
149 |         }
150 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/Cache.swift:155:13: warning: capture of 'self' with non-sendable type 'Cache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  8 | }
  9 |
 10 | open class Cache<T, S: Serializer> where S.T == T {
    |            `- note: generic class 'Cache' does not conform to the 'Sendable' protocol
 11 |     public let memoryCache = MemoryCache<T>()
 12 |     public let diskCache: DiskCache<T, S>
    :
153 |         memoryCache.clear()
154 |         workingQueue.async {
155 |             self.diskCache.clear()
    |             `- warning: capture of 'self' with non-sendable type 'Cache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
156 |         }
157 |     }
[30/30] Compiling AllCache DiskCache.swift
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/DiskCache.swift:44:17: warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 10 | private let diskQueue = DispatchQueue(label: "com.allcache.DiskQueue", attributes: .concurrent)
 11 |
 12 | public final class DiskCache<T, S: Serializer> where S.T == T {
    |                    `- note: generic class 'DiskCache' does not conform to the 'Sendable' protocol
 13 |
 14 |     public let identifier: String
    :
 42 |             result = try serializer.deserialize(Data(contentsOf: url))
 43 |             diskQueue.async(flags: .barrier) {
 44 |                 self.updateLastAccess(ofKey: key)
    |                 `- warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 45 |             }
 46 |         }
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/DiskCache.swift:52:23: warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 10 | private let diskQueue = DispatchQueue(label: "com.allcache.DiskQueue", attributes: .concurrent)
 11 |
 12 | public final class DiskCache<T, S: Serializer> where S.T == T {
    |                    `- note: generic class 'DiskCache' does not conform to the 'Sendable' protocol
 13 |
 14 |     public let identifier: String
    :
 50 |     public func removeInstance(forKey key: String) throws {
 51 |         diskQueue.async(flags: .barrier) {
 52 |             let url = self.cacheDirectory.appendingPathComponent(validkey(from: key))
    |                       `- warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 53 |             let attributes = try? self.fileManager.attributesOfItem(atPath: url.path)
 54 |             try? self.fileManager.removeItem(at: url)
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/DiskCache.swift:64:36: warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 10 | private let diskQueue = DispatchQueue(label: "com.allcache.DiskQueue", attributes: .concurrent)
 11 |
 12 | public final class DiskCache<T, S: Serializer> where S.T == T {
    |                    `- note: generic class 'DiskCache' does not conform to the 'Sendable' protocol
 13 |
 14 |     public let identifier: String
    :
 62 |         diskQueue.async(flags: .barrier) {
 63 |             let resourceKeys: [URLResourceKey] = [.contentAccessDateKey, .totalFileAllocatedSizeKey]
 64 |             guard let enumerator = self.cacheDirectory.enumerator(includingPropertiesForKeys: resourceKeys) else {
    |                                    `- warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 65 |                 return
 66 |             }
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/DiskCache.swift:68:28: warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in an isolated closure; this is an error in the Swift 6 language mode
 10 | private let diskQueue = DispatchQueue(label: "com.allcache.DiskQueue", attributes: .concurrent)
 11 |
 12 | public final class DiskCache<T, S: Serializer> where S.T == T {
    |                    `- note: generic class 'DiskCache' does not conform to the 'Sendable' protocol
 13 |
 14 |     public let identifier: String
    :
 66 |             }
 67 |             let urls = enumerator.compactMap({ $0 as? URL }).filter({ ($0.contentAccessDate ?? limit) < limit })
 68 |             urls.forEach({ self.removeIfPossible(url: $0) })
    |                            `- warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in an isolated closure; this is an error in the Swift 6 language mode
 69 |         }
 70 |     }
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/DiskCache.swift:86:23: warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 10 | private let diskQueue = DispatchQueue(label: "com.allcache.DiskQueue", attributes: .concurrent)
 11 |
 12 | public final class DiskCache<T, S: Serializer> where S.T == T {
    |                    `- note: generic class 'DiskCache' does not conform to the 'Sendable' protocol
 13 |
 14 |     public let identifier: String
    :
 84 |     public func set(data: Data, forKey key: String) throws {
 85 |         diskQueue.async(flags: .barrier) {
 86 |             let url = self.cacheDirectory.appendingPathComponent(validkey(from: key))
    |                       `- warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 87 |             try? data.write(to: url, options: .atomicWrite)
 88 |             self.size += data.count
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/DiskCache.swift:95:36: warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 10 | private let diskQueue = DispatchQueue(label: "com.allcache.DiskQueue", attributes: .concurrent)
 11 |
 12 | public final class DiskCache<T, S: Serializer> where S.T == T {
    |                    `- note: generic class 'DiskCache' does not conform to the 'Sendable' protocol
 13 |
 14 |     public let identifier: String
    :
 93 |     public func clear() {
 94 |         diskQueue.async(flags: .barrier) {
 95 |             guard let enumerator = self.cacheDirectory.enumerator(includingPropertiesForKeys: nil) else { return }
    |                                    `- warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 96 |             for case let url as URL in enumerator {
 97 |                 self.removeIfPossible(url: url)
/Users/admin/builder/spi-builder-workspace/Sources/AllCache/DiskCache.swift:120:16: warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 10 | private let diskQueue = DispatchQueue(label: "com.allcache.DiskQueue", attributes: .concurrent)
 11 |
 12 | public final class DiskCache<T, S: Serializer> where S.T == T {
    |                    `- note: generic class 'DiskCache' does not conform to the 'Sendable' protocol
 13 |
 14 |     public let identifier: String
    :
118 |         }
119 |         diskQueue.async {
120 |             if self.shrinking { return }
    |                `- warning: capture of 'self' with non-sendable type 'DiskCache<T, S>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
121 |             self.shrinking = true
122 |             do {
[31/41] Compiling ImageCache PNGImageSerializer.swift
[32/42] Compiling ImageCache UIViewContentMode+Util.swift
[33/42] Compiling ImageCache UIImageView+ImageCache.swift
[34/42] Compiling ImageCache Networking.swift
/Users/admin/builder/spi-builder-workspace/Sources/ImageCache/Networking.swift:21:77: warning: passing non-sendable parameter 'completion' to function expecting a @Sendable closure
14 | }
15 |
16 | func request(url: URL, method: HTTPMethod = .GET, completion: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask {
   |                                                   `- note: parameter 'completion' is implicitly non-sendable
17 |
18 |     var request = URLRequest(url: url)
19 |     request.httpMethod = method.rawValue
20 |
21 |     let task = URLSession.shared.dataTask(with: request, completionHandler: completion)
   |                                                                             `- warning: passing non-sendable parameter 'completion' to function expecting a @Sendable closure
22 |     task.resume()
23 |     return task
[35/42] Compiling ImageCache ResizeFunctions.swift
[36/42] Compiling ImageCache UIButton+ImageCache.swift
[37/42] Compiling ImageCache JPEGImageSerializer.swift
[38/42] Compiling ImageCache ImageSerializer.swift
[39/42] Compiling ImageCache ImageCache.swift
/Users/admin/builder/spi-builder-workspace/Sources/ImageCache/ImageCache.swift:29:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ImageCache' may have shared mutable state; this is an error in the Swift 6 language mode
22 | #endif
23 |
24 | open class ImageCache: Cache<Image, ImageSerializer> {
   |            `- note: class 'ImageCache' does not conform to the 'Sendable' protocol
25 |
26 |     #if os(iOS) || os(tvOS) || os(watchOS)
27 |     public static let shared = try! ImageCache(identifier: "sharedImage", serializer: PNGImageSerializer())
28 |     #else
29 |     public static let shared = try! ImageCache(identifier: "sharedImage", serializer: ImageSerializer())
   |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ImageCache' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'shared' 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
30 |     #endif
31 |
/Users/admin/builder/spi-builder-workspace/Sources/ImageCache/ImageFetcher.swift:69:1: warning: extension declares a conformance of imported type 'URLSessionTask' to imported protocol 'Cancellable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
67 | }
68 |
69 | extension URLSessionTask: Cancellable {}
   | |- warning: extension declares a conformance of imported type 'URLSessionTask' to imported protocol 'Cancellable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
70 |
[40/42] Compiling ImageCache ImageFetcher.swift
/Users/admin/builder/spi-builder-workspace/Sources/ImageCache/ImageCache.swift:29:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ImageCache' may have shared mutable state; this is an error in the Swift 6 language mode
22 | #endif
23 |
24 | open class ImageCache: Cache<Image, ImageSerializer> {
   |            `- note: class 'ImageCache' does not conform to the 'Sendable' protocol
25 |
26 |     #if os(iOS) || os(tvOS) || os(watchOS)
27 |     public static let shared = try! ImageCache(identifier: "sharedImage", serializer: PNGImageSerializer())
28 |     #else
29 |     public static let shared = try! ImageCache(identifier: "sharedImage", serializer: ImageSerializer())
   |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ImageCache' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'shared' 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
30 |     #endif
31 |
/Users/admin/builder/spi-builder-workspace/Sources/ImageCache/ImageFetcher.swift:69:1: warning: extension declares a conformance of imported type 'URLSessionTask' to imported protocol 'Cancellable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
67 | }
68 |
69 | extension URLSessionTask: Cancellable {}
   | |- warning: extension declares a conformance of imported type 'URLSessionTask' to imported protocol 'Cancellable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
70 |
[41/42] Emitting module ImageCache
/Users/admin/builder/spi-builder-workspace/Sources/ImageCache/ImageCache.swift:29:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ImageCache' may have shared mutable state; this is an error in the Swift 6 language mode
22 | #endif
23 |
24 | open class ImageCache: Cache<Image, ImageSerializer> {
   |            `- note: class 'ImageCache' does not conform to the 'Sendable' protocol
25 |
26 |     #if os(iOS) || os(tvOS) || os(watchOS)
27 |     public static let shared = try! ImageCache(identifier: "sharedImage", serializer: PNGImageSerializer())
28 |     #else
29 |     public static let shared = try! ImageCache(identifier: "sharedImage", serializer: ImageSerializer())
   |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'ImageCache' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'shared' 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
30 |     #endif
31 |
/Users/admin/builder/spi-builder-workspace/Sources/ImageCache/ImageFetcher.swift:69:1: warning: extension declares a conformance of imported type 'URLSessionTask' to imported protocol 'Cancellable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
67 | }
68 |
69 | extension URLSessionTask: Cancellable {}
   | |- warning: extension declares a conformance of imported type 'URLSessionTask' to imported protocol 'Cancellable'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
70 |
<unknown>:0: note: a function type must be marked '@Sendable' to conform to 'Sendable'
/Users/admin/builder/spi-builder-workspace/Sources/ImageCache/ImageResizer.swift:25:13: warning: let 'resizeFunctions' is not concurrency-safe because non-'Sendable' type '[DefaultImageResizer.ContentMode : (CGSize, CGSize) -> CGRect]' may have shared mutable state; this is an error in the Swift 6 language mode
 23 | }
 24 |
 25 | private let resizeFunctions: [DefaultImageResizer.ContentMode: (CGSize, CGSize) -> CGRect] = [
    |             |- warning: let 'resizeFunctions' is not concurrency-safe because non-'Sendable' type '[DefaultImageResizer.ContentMode : (CGSize, CGSize) -> CGRect]' may have shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: annotate 'resizeFunctions' 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
 26 |     .scaleAspectFit: aspectFit,
 27 |     .scaleAspectFill: aspectFill,
    :
 39 | public final class DefaultImageResizer: Processor<Image> {
 40 |
 41 |     public enum ContentMode: Int {
    |                 `- note: consider making enum 'ContentMode' conform to the 'Sendable' protocol
 42 |         case scaleToFill, scaleAspectFit, scaleAspectFill
 43 |         case redraw
[42/42] Compiling ImageCache ImageResizer.swift
<unknown>:0: note: a function type must be marked '@Sendable' to conform to 'Sendable'
/Users/admin/builder/spi-builder-workspace/Sources/ImageCache/ImageResizer.swift:25:13: warning: let 'resizeFunctions' is not concurrency-safe because non-'Sendable' type '[DefaultImageResizer.ContentMode : (CGSize, CGSize) -> CGRect]' may have shared mutable state; this is an error in the Swift 6 language mode
 23 | }
 24 |
 25 | private let resizeFunctions: [DefaultImageResizer.ContentMode: (CGSize, CGSize) -> CGRect] = [
    |             |- warning: let 'resizeFunctions' is not concurrency-safe because non-'Sendable' type '[DefaultImageResizer.ContentMode : (CGSize, CGSize) -> CGRect]' may have shared mutable state; this is an error in the Swift 6 language mode
    |             |- note: annotate 'resizeFunctions' 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
 26 |     .scaleAspectFit: aspectFit,
 27 |     .scaleAspectFill: aspectFill,
    :
 39 | public final class DefaultImageResizer: Processor<Image> {
 40 |
 41 |     public enum ContentMode: Int {
    |                 `- note: consider making enum 'ContentMode' conform to the 'Sendable' protocol
 42 |         case scaleToFill, scaleAspectFit, scaleAspectFill
 43 |         case redraw
Build complete! (27.67s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "shallowpromises",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.7.1",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/JuanjoArreola/ShallowPromises.git"
    },
    {
      "identity" : "logg",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.4.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/JuanjoArreola/Logg.git"
    }
  ],
  "manifest_display_name" : "AllCache",
  "name" : "AllCache",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "AllCache",
      "targets" : [
        "AllCache",
        "ImageCache"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "ImageCacheTests",
      "module_type" : "SwiftTarget",
      "name" : "ImageCacheTests",
      "path" : "Tests/ImageCacheTests",
      "sources" : [
        "ImageCacheTests.swift"
      ],
      "target_dependencies" : [
        "ImageCache"
      ],
      "type" : "test"
    },
    {
      "c99name" : "ImageCache",
      "module_type" : "SwiftTarget",
      "name" : "ImageCache",
      "path" : "Sources/ImageCache",
      "product_memberships" : [
        "AllCache"
      ],
      "sources" : [
        "ImageCache.swift",
        "ImageFetcher.swift",
        "ImageResizer.swift",
        "ImageSerializer.swift",
        "JPEGImageSerializer.swift",
        "Networking.swift",
        "PNGImageSerializer.swift",
        "ResizeFunctions.swift",
        "UIButton+ImageCache.swift",
        "UIImageView+ImageCache.swift",
        "UIViewContentMode+Util.swift"
      ],
      "target_dependencies" : [
        "AllCache"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AllCacheTests",
      "module_type" : "SwiftTarget",
      "name" : "AllCacheTests",
      "path" : "Tests/AllCacheTests",
      "sources" : [
        "CacheTests.swift",
        "DiskTests.swift",
        "Icecream.swift"
      ],
      "target_dependencies" : [
        "AllCache"
      ],
      "type" : "test"
    },
    {
      "c99name" : "AllCache",
      "module_type" : "SwiftTarget",
      "name" : "AllCache",
      "path" : "Sources/AllCache",
      "product_dependencies" : [
        "ShallowPromises",
        "Logg"
      ],
      "product_memberships" : [
        "AllCache"
      ],
      "sources" : [
        "AllCacheFormatter.swift",
        "Cache.swift",
        "DiskCache.swift",
        "ElementDescriptor.swift",
        "Fetcher.swift",
        "JSONSerializer.swift",
        "MemoryCache.swift",
        "Processor.swift",
        "Serializer.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.2"
}
Done.