Build Information
Successful build of ZipPinch, reference 1.4.0 (24c92b
), with Swift 6.0 for macOS (SPM) on 30 Nov 2024 03:18:32 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.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/buh/ZipPinch.git
Reference: 1.4.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/buh/ZipPinch
* tag 1.4.0 -> FETCH_HEAD
HEAD is now at 24c92bc Sendable progress callback.
Cloned https://github.com/buh/ZipPinch.git
Revision (git rev-parse @):
24c92bcc25074af4777df009af4558e7b00e5fe8
SUCCESS checkout https://github.com/buh/ZipPinch.git at 1.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": "zippinch",
"name": "ZipPinch",
"url": "https://github.com/buh/ZipPinch.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/ZipPinch",
"dependencies": [
]
}
]
}
Fetching https://github.com/buh/ZipPinch.git
[1/570] Fetching zippinch
Fetched https://github.com/buh/ZipPinch.git from cache (0.87s)
Creating working copy for https://github.com/buh/ZipPinch.git
Working copy of https://github.com/buh/ZipPinch.git resolved at 1.4.0 (24c92bc)
warning: '.resolve-product-dependencies': dependency 'zippinch' 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/buh/ZipPinch.git
{
"dependencies" : [
],
"manifest_display_name" : "ZipPinch",
"name" : "ZipPinch",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "ios",
"version" : "15.0"
},
{
"name" : "watchos",
"version" : "8.0"
}
],
"products" : [
{
"name" : "ZipPinch",
"targets" : [
"ZipPinch"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "ZipPinchTests",
"module_type" : "SwiftTarget",
"name" : "ZipPinchTests",
"path" : "Tests/ZipPinchTests",
"sources" : [
"ArchiveTests.swift"
],
"target_dependencies" : [
"ZipPinch"
],
"type" : "test"
},
{
"c99name" : "ZipPinch",
"module_type" : "SwiftTarget",
"name" : "ZipPinch",
"path" : "Sources/ZipPinch",
"product_memberships" : [
"ZipPinch"
],
"sources" : [
"URLSession+ZIPEntries.swift",
"URLSession+ZIPEntry.swift",
"URLSession+ZIPFolder.swift",
"URLSession+ZIPRange.swift",
"ZIPFolder.swift",
"ZipFileFormat.swift"
],
"type" : "library"
}
],
"tools_version" : "5.6"
}
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/2] Write sources
[1/2] Write swift-version--7754E27361AE5C74.txt
[3/9] Compiling ZipPinch ZIPFolder.swift
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZIPFolder.swift:26:23: warning: static property 'empty' is not concurrency-safe because non-'Sendable' type 'ZIPFolder' may have shared mutable state; this is an error in the Swift 6 language mode
23 | import Foundation
24 |
25 | public struct ZIPFolder: Identifiable, Hashable, Equatable {
| `- note: consider making struct 'ZIPFolder' conform to the 'Sendable' protocol
26 | public static let empty = ZIPFolder(name: "")
| |- warning: static property 'empty' is not concurrency-safe because non-'Sendable' type 'ZIPFolder' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'empty' 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
27 |
28 | public let id = UUID()
[4/9] Compiling ZipPinch URLSession+ZIPRange.swift
[5/9] Compiling ZipPinch ZipFileFormat.swift
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:33:23: warning: static property 'decompress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
| |- warning: static property 'decompress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'decompress' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'decompress' 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
34 | try $0.decompressed(using: .zlib)
35 | }
[6/9] Compiling ZipPinch URLSession+ZIPEntry.swift
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:33:23: warning: static property 'decompress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
| |- warning: static property 'decompress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'decompress' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'decompress' 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
34 | try $0.decompressed(using: .zlib)
35 | }
[7/9] Compiling ZipPinch URLSession+ZIPEntries.swift
[8/9] Emitting module ZipPinch
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZIPFolder.swift:26:23: warning: static property 'empty' is not concurrency-safe because non-'Sendable' type 'ZIPFolder' may have shared mutable state; this is an error in the Swift 6 language mode
23 | import Foundation
24 |
25 | public struct ZIPFolder: Identifiable, Hashable, Equatable {
| `- note: consider making struct 'ZIPFolder' conform to the 'Sendable' protocol
26 | public static let empty = ZIPFolder(name: "")
| |- warning: static property 'empty' is not concurrency-safe because non-'Sendable' type 'ZIPFolder' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: annotate 'empty' 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
27 |
28 | public let id = UUID()
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:33:23: warning: static property 'decompress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
| |- warning: static property 'decompress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'decompress' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'decompress' 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
34 | try $0.decompressed(using: .zlib)
35 | }
[9/9] Compiling ZipPinch URLSession+ZIPFolder.swift
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:80:19: warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
78 | progress: ZIPProgress? = nil
79 | ) async throws -> [(entry: ZIPEntry, data: Data)] {
80 | try await withThrowingTaskGroup(of: (entry: ZIPEntry, data: Data).self) { taskGroup in
| `- warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
81 | let overallProgress = OverallProgress(count: Double(entries.count))
82 |
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:31:15: note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
29 |
30 | /// The ZIP entry.
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
| `- note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:80:81: warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
78 | progress: ZIPProgress? = nil
79 | ) async throws -> [(entry: ZIPEntry, data: Data)] {
80 | try await withThrowingTaskGroup(of: (entry: ZIPEntry, data: Data).self) { taskGroup in
| `- warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
81 | let overallProgress = OverallProgress(count: Double(entries.count))
82 |
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:31:15: note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
29 |
30 | /// The ZIP entry.
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
| `- note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:95:27: warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
93 | }
94 |
95 | taskGroup.addTask(priority: .medium) { [progressPerEntry] in
| `- warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
96 | (entry, try await self.zipEntryData(
97 | entry,
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:31:15: note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
29 |
30 | /// The ZIP entry.
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
| `- note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:105:40: warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
103 | }
104 |
105 | return try await taskGroup.reduce(into: [(entry: ZIPEntry, data: Data)]()) { partialResult, value in
| `- warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
106 | partialResult.append(value)
107 | }
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:31:15: note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
29 |
30 | /// The ZIP entry.
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
| `- note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:105:88: warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
103 | }
104 |
105 | return try await taskGroup.reduce(into: [(entry: ZIPEntry, data: Data)]()) { partialResult, value in
| `- warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
106 | partialResult.append(value)
107 | }
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:31:15: note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
29 |
30 | /// The ZIP entry.
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
| `- note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:105:88: warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
103 | }
104 |
105 | return try await taskGroup.reduce(into: [(entry: ZIPEntry, data: Data)]()) { partialResult, value in
| `- warning: type 'ZIPEntry' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
106 | partialResult.append(value)
107 | }
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:31:15: note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
29 |
30 | /// The ZIP entry.
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
| `- note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:89:99: warning: capture of 'entry' with non-sendable type 'ZIPEntry' in a `@Sendable` closure; this is an error in the Swift 6 language mode
87 | progressPerEntry = .init(bufferSize: progress.bufferSize) { value in
88 | Task {
89 | let overallValue = await overallProgress.overallValue(for: value, id: entry.filePath)
| `- warning: capture of 'entry' with non-sendable type 'ZIPEntry' in a `@Sendable` closure; this is an error in the Swift 6 language mode
90 | progress.callback(overallValue)
91 | }
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:31:15: note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
29 |
30 | /// The ZIP entry.
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
| `- note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:90:29: warning: capture of 'progress' with non-sendable type 'ZIPProgress' in a `@Sendable` closure; this is an error in the Swift 6 language mode
88 | Task {
89 | let overallValue = await overallProgress.overallValue(for: value, id: entry.filePath)
90 | progress.callback(overallValue)
| `- warning: capture of 'progress' with non-sendable type 'ZIPProgress' in a `@Sendable` closure; this is an error in the Swift 6 language mode
91 | }
92 | }
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPEntry.swift:27:15: note: consider making struct 'ZIPProgress' conform to the 'Sendable' protocol
25 | /// Progress callback container.
26 | /// It can be configured for buffer size, which will affect how often the callback is invoked.
27 | public struct ZIPProgress {
| `- note: consider making struct 'ZIPProgress' conform to the 'Sendable' protocol
28 | /// A number of bytes of the buffer, which will affect how often the callback is invoked.
29 | /// It can be greater than or equal to 64 Kb (default value).
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:89:99: warning: capture of 'entry' with non-sendable type 'ZIPEntry' in an isolated closure; this is an error in the Swift 6 language mode
87 | progressPerEntry = .init(bufferSize: progress.bufferSize) { value in
88 | Task {
89 | let overallValue = await overallProgress.overallValue(for: value, id: entry.filePath)
| `- warning: capture of 'entry' with non-sendable type 'ZIPEntry' in an isolated closure; this is an error in the Swift 6 language mode
90 | progress.callback(overallValue)
91 | }
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/ZipFileFormat.swift:31:15: note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
29 |
30 | /// The ZIP entry.
31 | public struct ZIPEntry: Identifiable, Hashable, Codable {
| `- note: consider making struct 'ZIPEntry' conform to the 'Sendable' protocol
32 | /// Decompressor.
33 | public static var decompress: @Sendable (_ compressedData: NSData) throws -> NSData = {
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:90:29: warning: capture of 'progress' with non-sendable type 'ZIPProgress' in an isolated closure; this is an error in the Swift 6 language mode
88 | Task {
89 | let overallValue = await overallProgress.overallValue(for: value, id: entry.filePath)
90 | progress.callback(overallValue)
| `- warning: capture of 'progress' with non-sendable type 'ZIPProgress' in an isolated closure; this is an error in the Swift 6 language mode
91 | }
92 | }
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPEntry.swift:27:15: note: consider making struct 'ZIPProgress' conform to the 'Sendable' protocol
25 | /// Progress callback container.
26 | /// It can be configured for buffer size, which will affect how often the callback is invoked.
27 | public struct ZIPProgress {
| `- note: consider making struct 'ZIPProgress' conform to the 'Sendable' protocol
28 | /// A number of bytes of the buffer, which will affect how often the callback is invoked.
29 | /// It can be greater than or equal to 64 Kb (default value).
/Users/admin/builder/spi-builder-workspace/Sources/ZipPinch/URLSession+ZIPFolder.swift:95:54: 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
93 | }
94 |
95 | taskGroup.addTask(priority: .medium) { [progressPerEntry] in
| `- 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
96 | (entry, try await self.zipEntryData(
| `- note: closure captures non-Sendable 'entry'
97 | entry,
98 | for: request,
99 | delegate: delegate,
100 | progress: progressPerEntry
| `- note: closure captures non-Sendable 'progressPerEntry'
101 | ))
102 | }
Build complete! (8.08s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "ZipPinch",
"name" : "ZipPinch",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "ios",
"version" : "15.0"
},
{
"name" : "watchos",
"version" : "8.0"
}
],
"products" : [
{
"name" : "ZipPinch",
"targets" : [
"ZipPinch"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "ZipPinchTests",
"module_type" : "SwiftTarget",
"name" : "ZipPinchTests",
"path" : "Tests/ZipPinchTests",
"sources" : [
"ArchiveTests.swift"
],
"target_dependencies" : [
"ZipPinch"
],
"type" : "test"
},
{
"c99name" : "ZipPinch",
"module_type" : "SwiftTarget",
"name" : "ZipPinch",
"path" : "Sources/ZipPinch",
"product_memberships" : [
"ZipPinch"
],
"sources" : [
"URLSession+ZIPEntries.swift",
"URLSession+ZIPEntry.swift",
"URLSession+ZIPFolder.swift",
"URLSession+ZIPRange.swift",
"ZIPFolder.swift",
"ZipFileFormat.swift"
],
"type" : "library"
}
],
"tools_version" : "5.6"
}
Done.