Build Information
Successful build of swiftui-cached-async-image, reference main (4f111f
), with Swift 6.1 for macOS (SPM) on 27 Apr 2025 00:26:36 UTC.
Swift 6 data race errors: 2
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.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/lorenzofiamingo/swiftui-cached-async-image
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 4f111f2 Update README.md
Cloned https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
Revision (git rev-parse @):
4f111f2b7aab7ec52a60716cedb673df5203743c
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/lorenzofiamingo/swiftui-cached-async-image.git at main
Fetching https://github.com/apple/swift-docc-plugin
[1/2049] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (1.09s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.0.0 (1.67s)
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.0.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": "swiftui-cached-async-image",
"name": "swiftui-cached-async-image",
"url": "https://github.com/lorenzofiamingo/swiftui-cached-async-image.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swiftui-cached-async-image",
"dependencies": [
]
}
]
}
Fetching https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
[1/176] Fetching swiftui-cached-async-image
Fetched https://github.com/lorenzofiamingo/swiftui-cached-async-image.git from cache (0.67s)
Creating working copy for https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
Working copy of https://github.com/lorenzofiamingo/swiftui-cached-async-image.git resolved at main (4f111f2)
warning: '.resolve-product-dependencies': dependency 'swiftui-cached-async-image' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
{
"dependencies" : [
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-docc-plugin"
}
],
"manifest_display_name" : "swiftui-cached-async-image",
"name" : "swiftui-cached-async-image",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "tvos",
"version" : "13.0"
},
{
"name" : "watchos",
"version" : "6.0"
}
],
"products" : [
{
"name" : "CachedAsyncImage",
"targets" : [
"CachedAsyncImage"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "CachedAsyncImage",
"module_type" : "SwiftTarget",
"name" : "CachedAsyncImage",
"path" : "Sources/CachedAsyncImage",
"product_memberships" : [
"CachedAsyncImage"
],
"sources" : [
"CachedAsyncImage.swift"
],
"type" : "library"
}
],
"tools_version" : "5.6"
}
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
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
Building for debugging...
[2/4] Write sources
[3/4] Write swift-version-2F0A5646E1D333AE.txt
[5/6] Emitting module CachedAsyncImage
/Users/admin/builder/spi-builder-workspace/Sources/CachedAsyncImage/CachedAsyncImage.swift:389:15: warning: non-final class 'URLSessionTaskController' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
387 | // MARK: - AsyncImageURLSession
388 |
389 | private class URLSessionTaskController: NSObject, URLSessionTaskDelegate {
| `- warning: non-final class 'URLSessionTaskController' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
390 |
391 | var metrics: URLSessionTaskMetrics?
/Users/admin/builder/spi-builder-workspace/Sources/CachedAsyncImage/CachedAsyncImage.swift:391:9: warning: stored property 'metrics' of 'Sendable'-conforming class 'URLSessionTaskController' is mutable; this is an error in the Swift 6 language mode
389 | private class URLSessionTaskController: NSObject, URLSessionTaskDelegate {
390 |
391 | var metrics: URLSessionTaskMetrics?
| `- warning: stored property 'metrics' of 'Sendable'-conforming class 'URLSessionTaskController' is mutable; this is an error in the Swift 6 language mode
392 |
393 | func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
[6/6] Compiling CachedAsyncImage CachedAsyncImage.swift
/Users/admin/builder/spi-builder-workspace/Sources/CachedAsyncImage/CachedAsyncImage.swift:389:15: warning: non-final class 'URLSessionTaskController' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
387 | // MARK: - AsyncImageURLSession
388 |
389 | private class URLSessionTaskController: NSObject, URLSessionTaskDelegate {
| `- warning: non-final class 'URLSessionTaskController' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
390 |
391 | var metrics: URLSessionTaskMetrics?
/Users/admin/builder/spi-builder-workspace/Sources/CachedAsyncImage/CachedAsyncImage.swift:391:9: warning: stored property 'metrics' of 'Sendable'-conforming class 'URLSessionTaskController' is mutable; this is an error in the Swift 6 language mode
389 | private class URLSessionTaskController: NSObject, URLSessionTaskDelegate {
390 |
391 | var metrics: URLSessionTaskMetrics?
| `- warning: stored property 'metrics' of 'Sendable'-conforming class 'URLSessionTaskController' is mutable; this is an error in the Swift 6 language mode
392 |
393 | func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
Build complete! (14.52s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-docc-plugin"
}
],
"manifest_display_name" : "swiftui-cached-async-image",
"name" : "swiftui-cached-async-image",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "tvos",
"version" : "13.0"
},
{
"name" : "watchos",
"version" : "6.0"
}
],
"products" : [
{
"name" : "CachedAsyncImage",
"targets" : [
"CachedAsyncImage"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "CachedAsyncImage",
"module_type" : "SwiftTarget",
"name" : "CachedAsyncImage",
"path" : "Sources/CachedAsyncImage",
"product_memberships" : [
"CachedAsyncImage"
],
"sources" : [
"CachedAsyncImage.swift"
],
"type" : "library"
}
],
"tools_version" : "5.6"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/lorenzofiamingo/swiftui-cached-async-image/main
Repository: lorenzofiamingo/swiftui-cached-async-image
Swift version used: 6.1
.package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0")
Target: CachedAsyncImage
Generating documentation for 'CachedAsyncImage'...
Converting documentation...
warning: No external resolver registered for 'com.apple.documentation'.
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:10:10-10:71
8 | ///
9 | /// This view uses a custom default
10 + /// <doc://com.apple.documentation/documentation/Foundation/URLSession>
11 | /// instance to load an image from the specified URL, and then display it.
12 | /// For example, you can display an icon that's stored on a server:
warning: Resource 'AsyncImage-1' couldn't be found
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:22:5-24:59
20 | /// than the frame, and so appears smaller than the placeholder.
21 | ///
22 + /// 
25 | ///
26 | /// You can specify a custom placeholder using
warning: 'ProgressView' doesn't exist at '/CachedAsyncImage/CachedAsyncImage'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:38:41-38:53
36 | /// .frame(width: 50, height: 50)
37 | ///
38 + /// For this example, SwiftUI shows a ``ProgressView`` first, and then the
| ╰─suggestion: Replace 'ProgressView' with 'progressViewStyle(_:)'
39 | /// image scaled to fit in the specified frame:
40 | ///
warning: Resource 'AsyncImage-2' couldn't be found
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:41:5-42:78
39 | /// image scaled to fit in the specified frame:
40 | ///
41 + /// 
43 | ///
44 | /// > Important: You can't apply image-specific modifiers, like
warning: 'Image' doesn't exist at '/CachedAsyncImage/CachedAsyncImage'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:45:9-45:14
43 | ///
44 | /// > Important: You can't apply image-specific modifiers, like
45 + /// ``Image/resizable(capInsets:resizingMode:)``, directly to a `CachedAsyncImage`.
46 | /// Instead, apply them to the ``Image`` instance that your `content`
47 | /// closure gets when defining the view's appearance.
warning: 'Image' doesn't exist at '/CachedAsyncImage/CachedAsyncImage'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:46:36-46:41
44 | /// > Important: You can't apply image-specific modifiers, like
45 | /// ``Image/resizable(capInsets:resizingMode:)``, directly to a `CachedAsyncImage`.
46 + /// Instead, apply them to the ``Image`` instance that your `content`
47 | /// closure gets when defining the view's appearance.
48 | ///
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:51:42-51:57
49 | /// To gain more control over the loading process, use the
50 | /// ``init(url:urlCache:scale:transaction:content:)`` initializer, which takes a
51 + /// `content` closure that receives an ``AsyncImagePhase`` to indicate
52 | /// the state of the loading operation. Return a view that's appropriate
53 | /// for the current phase:
warning: 'Image' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:96:30-96:35
94 | ///
95 | /// If you want to customize the placeholder or apply image-specific
96 + /// modifiers --- like ``Image/resizable(capInsets:resizingMode:)`` ---
97 | /// to the loaded image, use the ``init(url:scale:content:placeholder:)``
98 | /// initializer instead.
warning: 'init(url:scale:content:placeholder:)' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:97:40-97:76
95 | /// If you want to customize the placeholder or apply image-specific
96 | /// modifiers --- like ``Image/resizable(capInsets:resizingMode:)`` ---
97 + /// to the loaded image, use the ``init(url:scale:content:placeholder:)``
98 | /// initializer instead.
99 | ///
warning: 'Image' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:123:30-123:35
121 | ///
122 | /// If you want to customize the placeholder or apply image-specific
123 + /// modifiers --- like ``Image/resizable(capInsets:resizingMode:)`` ---
124 | /// to the loaded image, use the ``init(url:scale:content:placeholder:)``
125 | /// initializer instead.
warning: 'init(url:scale:content:placeholder:)' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:124:40-124:76
122 | /// If you want to customize the placeholder or apply image-specific
123 | /// modifiers --- like ``Image/resizable(capInsets:resizingMode:)`` ---
124 + /// to the loaded image, use the ``init(url:scale:content:placeholder:)``
125 | /// initializer instead.
126 | ///
warning: 'init(url:scale:transaction:content:)' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:content:placeholder:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:161:19-161:55
159 | /// If the load operation fails, SwiftUI continues to display the
160 | /// placeholder. To be able to display a different view on a load error,
161 + /// use the ``init(url:scale:transaction:content:)`` initializer instead.
162 | ///
163 | /// - Parameters:
warning: 'init(url:scale:transaction:content:)' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:content:placeholder:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:197:19-197:55
195 | /// If the load operation fails, SwiftUI continues to display the
196 | /// placeholder. To be able to display a different view on a load error,
197 + /// use the ``init(url:scale:transaction:content:)`` initializer instead.
198 | ///
199 | /// - Parameters:
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:225:11-225:26
223 | /// If you set the asynchronous image's URL to `nil`, or after you set the
224 | /// URL to a value but before the load operation completes, the phase is
225 + /// ``AsyncImagePhase/empty``. After the operation completes, the phase
226 | /// becomes either ``AsyncImagePhase/failure(_:)`` or
227 | /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:226:26-226:41
224 | /// URL to a value but before the load operation completes, the phase is
225 | /// ``AsyncImagePhase/empty``. After the operation completes, the phase
226 + /// becomes either ``AsyncImagePhase/failure(_:)`` or
227 | /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
228 | /// ``AsyncImagePhase/error`` value indicates the reason for failure.
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:227:11-227:26
225 | /// ``AsyncImagePhase/empty``. After the operation completes, the phase
226 | /// becomes either ``AsyncImagePhase/failure(_:)`` or
227 + /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
228 | /// ``AsyncImagePhase/error`` value indicates the reason for failure.
229 | /// In the second case, the phase's ``AsyncImagePhase/image`` property
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:228:11-228:26
226 | /// becomes either ``AsyncImagePhase/failure(_:)`` or
227 | /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
228 + /// ``AsyncImagePhase/error`` value indicates the reason for failure.
229 | /// In the second case, the phase's ``AsyncImagePhase/image`` property
230 | /// contains the loaded image. Use the phase to drive the output of the
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:229:43-229:58
227 | /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
228 | /// ``AsyncImagePhase/error`` value indicates the reason for failure.
229 + /// In the second case, the phase's ``AsyncImagePhase/image`` property
230 | /// contains the loaded image. Use the phase to drive the output of the
231 | /// `content` closure, which defines the view's appearance:
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:265:11-265:26
263 | /// If you set the asynchronous image's URL to `nil`, or after you set the
264 | /// URL to a value but before the load operation completes, the phase is
265 + /// ``AsyncImagePhase/empty``. After the operation completes, the phase
266 | /// becomes either ``AsyncImagePhase/failure(_:)`` or
267 | /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:266:26-266:41
264 | /// URL to a value but before the load operation completes, the phase is
265 | /// ``AsyncImagePhase/empty``. After the operation completes, the phase
266 + /// becomes either ``AsyncImagePhase/failure(_:)`` or
267 | /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
268 | /// ``AsyncImagePhase/error`` value indicates the reason for failure.
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:267:11-267:26
265 | /// ``AsyncImagePhase/empty``. After the operation completes, the phase
266 | /// becomes either ``AsyncImagePhase/failure(_:)`` or
267 + /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
268 | /// ``AsyncImagePhase/error`` value indicates the reason for failure.
269 | /// In the second case, the phase's ``AsyncImagePhase/image`` property
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:268:11-268:26
266 | /// becomes either ``AsyncImagePhase/failure(_:)`` or
267 | /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
268 + /// ``AsyncImagePhase/error`` value indicates the reason for failure.
269 | /// In the second case, the phase's ``AsyncImagePhase/image`` property
270 | /// contains the loaded image. Use the phase to drive the output of the
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
--> Sources/CachedAsyncImage/CachedAsyncImage.swift:269:43-269:58
267 | /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
268 | /// ``AsyncImagePhase/error`` value indicates the reason for failure.
269 + /// In the second case, the phase's ``AsyncImagePhase/image`` property
270 | /// contains the loaded image. Use the phase to drive the output of the
271 | /// `content` closure, which defines the view's appearance:
Conversion complete! (1.10s)
Generated DocC archive at '/Users/admin/builder/spi-builder-workspace/.docs/lorenzofiamingo/swiftui-cached-async-image/main'
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/3] Compiling CachedAsyncImage CachedAsyncImage.swift
[3/3] Emitting module CachedAsyncImage
Build of target: 'CachedAsyncImage' complete! (0.62s)
1478
11 /Users/admin/builder/spi-builder-workspace/.docs/lorenzofiamingo/swiftui-cached-async-image/main
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/lorenzofiamingo/swiftui-cached-async-image/main
File count: 1478
Doc size: 11.0MB
Preparing doc bundle ...
Uploading prod-lorenzofiamingo-swiftui-cached-async-image-main-674edfb4.zip to s3://spi-docs-inbox/prod-lorenzofiamingo-swiftui-cached-async-image-main-674edfb4.zip
Copying... [12%]
Copying... [21%]
Copying... [33%]
Copying... [42%]
Copying... [50%]
Copying... [62%]
Copying... [71%]
Copying... [80%]
Copying... [92%]
Copying... [100%]
Done.