Build Information
Successful build of Images with Swift 6.0 for macOS (SPM).
Swift 6 data race errors: 1
Build Command
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Build Log
========================================
RunAll
========================================
Builder version: 4.40.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/elegantchaos/Images.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/elegantchaos/Images
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 507b558 newer ActionStatus
Cloned https://github.com/elegantchaos/Images.git
Revision (git rev-parse @):
507b5580d93e76692cd1cc184f4ffea4e620936e
SUCCESS checkout https://github.com/elegantchaos/Images.git at main
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $workDir
https://github.com/elegantchaos/Images.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/4] Write sources
[3/4] Write swift-version-6F35C1178C84523A.txt
[5/14] Compiling Logger PrintHandler.swift
[6/14] Compiling Logger Handler.swift
[7/14] Compiling Logger OSLogHandler.swift
[8/14] Compiling Logger NSLogHandler.swift
[9/14] Compiling ThreadExtensions ThreadExtensions.swift
[10/14] Emitting module ThreadExtensions
[11/14] Compiling Logger Channel.swift
[12/14] Compiling Logger Context.swift
[13/14] Emitting module Logger
[14/14] Compiling Logger Manager.swift
[15/21] Compiling Images Image+UIKit.swift
[16/21] Compiling Images ImageFactory.swift
[17/21] Compiling Images Image+Extensions.swift
[18/21] Compiling Images ImageCache.swift
/Users/admin/builder/spi-builder-workspace/Sources/Images/ImageCache.swift:14:5: warning: let 'imageCacheChannel' is not concurrency-safe because non-'Sendable' type 'Channel' may have shared mutable state; this is an error in the Swift 6 language mode
12 | import ThreadExtensions
13 |
14 | let imageCacheChannel = Channel("com.elegantchaos.imageCache")
| `- warning: let 'imageCacheChannel' is not concurrency-safe because non-'Sendable' type 'Channel' may have shared mutable state; this is an error in the Swift 6 language mode
15 |
16 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, *) public class GenericImageCache<Factory: ImageFactory> {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Logger/Sources/Logger/Channel.swift:15:14: note: class 'Channel' does not conform to the 'Sendable' protocol
13 | */
14 |
15 | public class Channel {
| `- note: class 'Channel' does not conform to the 'Sendable' protocol
16 |
17 | /**
/Users/admin/builder/spi-builder-workspace/Sources/Images/ImageCache.swift:9:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Logger'
7 |
8 | import Foundation
9 | import Logger
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Logger'
10 | import CryptoKit
11 | import CommonCrypto
12 | import ThreadExtensions
13 |
14 | let imageCacheChannel = Channel("com.elegantchaos.imageCache")
| |- note: annotate 'imageCacheChannel' 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 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, *) public class GenericImageCache<Factory: ImageFactory> {
/Users/admin/builder/spi-builder-workspace/Sources/Images/ImageCache.swift:49:36: warning: capture of 'self' with non-sendable type 'GenericImageCache<Factory>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
14 | let imageCacheChannel = Channel("com.elegantchaos.imageCache")
15 |
16 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, *) public class GenericImageCache<Factory: ImageFactory> {
| `- note: generic class 'GenericImageCache' does not conform to the 'Sendable' protocol
17 | let workQueue: DispatchQueue
18 | let callbackQueue: DispatchQueue
:
47 | workQueue.async {
48 | do {
49 | if let image = self.load(remoteURL: url, toLocalURL: localURL) {
| `- warning: capture of 'self' with non-sendable type 'GenericImageCache<Factory>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
50 | self.callbackQueue.async {
51 | callback(image)
/Users/admin/builder/spi-builder-workspace/Sources/Images/ImageCache.swift:51:29: warning: capture of 'callback' with non-sendable type 'GenericImageCache<Factory>.ImageCallback' (aka '(Factory.ImageClass) -> ()') in a `@Sendable` closure; this is an error in the Swift 6 language mode
49 | if let image = self.load(remoteURL: url, toLocalURL: localURL) {
50 | self.callbackQueue.async {
51 | callback(image)
| |- warning: capture of 'callback' with non-sendable type 'GenericImageCache<Factory>.ImageCallback' (aka '(Factory.ImageClass) -> ()') 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'
52 | }
53 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Images/ImageCache.swift:51:29: warning: capture of 'callback' with non-sendable type 'GenericImageCache<Factory>.ImageCallback' (aka '(Factory.ImageClass) -> ()') in a `@Sendable` closure; this is an error in the Swift 6 language mode
49 | if let image = self.load(remoteURL: url, toLocalURL: localURL) {
50 | self.callbackQueue.async {
51 | callback(image)
| |- warning: capture of 'callback' with non-sendable type 'GenericImageCache<Factory>.ImageCallback' (aka '(Factory.ImageClass) -> ()') 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'
52 | }
53 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Images/ImageCache.swift:51:38: warning: capture of 'image' with non-sendable type 'Factory.ImageClass' in a `@Sendable` closure; this is an error in the Swift 6 language mode
49 | if let image = self.load(remoteURL: url, toLocalURL: localURL) {
50 | self.callbackQueue.async {
51 | callback(image)
| `- warning: capture of 'image' with non-sendable type 'Factory.ImageClass' in a `@Sendable` closure; this is an error in the Swift 6 language mode
52 | }
53 | } else {
[19/21] Compiling Images AsyncImage.swift
[20/21] Emitting module Images
/Users/admin/builder/spi-builder-workspace/Sources/Images/ImageCache.swift:14:5: warning: let 'imageCacheChannel' is not concurrency-safe because non-'Sendable' type 'Channel' may have shared mutable state; this is an error in the Swift 6 language mode
12 | import ThreadExtensions
13 |
14 | let imageCacheChannel = Channel("com.elegantchaos.imageCache")
| `- warning: let 'imageCacheChannel' is not concurrency-safe because non-'Sendable' type 'Channel' may have shared mutable state; this is an error in the Swift 6 language mode
15 |
16 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, *) public class GenericImageCache<Factory: ImageFactory> {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Logger/Sources/Logger/Channel.swift:15:14: note: class 'Channel' does not conform to the 'Sendable' protocol
13 | */
14 |
15 | public class Channel {
| `- note: class 'Channel' does not conform to the 'Sendable' protocol
16 |
17 | /**
/Users/admin/builder/spi-builder-workspace/Sources/Images/ImageCache.swift:9:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Logger'
7 |
8 | import Foundation
9 | import Logger
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Logger'
10 | import CryptoKit
11 | import CommonCrypto
12 | import ThreadExtensions
13 |
14 | let imageCacheChannel = Channel("com.elegantchaos.imageCache")
| |- note: annotate 'imageCacheChannel' 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 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, *) public class GenericImageCache<Factory: ImageFactory> {
[21/21] Compiling Images Image+AppKit.swift
Build complete! (28.94s)
Fetching https://github.com/elegantchaos/ThreadExtensions.git
Fetching https://github.com/elegantchaos/Logger.git
[1/42] Fetching threadextensions
[43/1889] Fetching threadextensions, logger
Fetched https://github.com/elegantchaos/ThreadExtensions.git from cache (1.00s)
Fetched https://github.com/elegantchaos/Logger.git from cache (1.00s)
Computing version for https://github.com/elegantchaos/ThreadExtensions.git
Computed https://github.com/elegantchaos/ThreadExtensions.git at 1.0.0 (0.67s)
Computing version for https://github.com/elegantchaos/Logger.git
Computed https://github.com/elegantchaos/Logger.git at 1.6.0 (0.68s)
Creating working copy for https://github.com/elegantchaos/ThreadExtensions.git
Working copy of https://github.com/elegantchaos/ThreadExtensions.git resolved at 1.0.0
Creating working copy for https://github.com/elegantchaos/Logger.git
Working copy of https://github.com/elegantchaos/Logger.git resolved at 1.6.0
Build complete.
{
"dependencies" : [
{
"identity" : "logger",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/elegantchaos/Logger.git"
},
{
"identity" : "threadextensions",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/elegantchaos/ThreadExtensions.git"
}
],
"manifest_display_name" : "Images",
"name" : "Images",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.13"
},
{
"name" : "ios",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "6.0"
}
],
"products" : [
{
"name" : "Images",
"targets" : [
"Images"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "ImagesTests",
"module_type" : "SwiftTarget",
"name" : "ImagesTests",
"path" : "Tests/ImagesTests",
"sources" : [
"ImagesTests.swift",
"XCTestManifests.swift"
],
"target_dependencies" : [
"Images"
],
"type" : "test"
},
{
"c99name" : "Images",
"module_type" : "SwiftTarget",
"name" : "Images",
"path" : "Sources/Images",
"product_dependencies" : [
"Logger",
"ThreadExtensions"
],
"product_memberships" : [
"Images"
],
"sources" : [
"AsyncImage.swift",
"Image+AppKit.swift",
"Image+Extensions.swift",
"Image+UIKit.swift",
"ImageCache.swift",
"ImageFactory.swift"
],
"type" : "library"
}
],
"tools_version" : "5.2"
}
Done.