Build Information
Successful build of NCCCodableStorage, reference 1.1.2 (22713e), with Swift 6.1 for macOS (SPM) on 14 Oct 2026 02:02:53 UTC.
Swift 6 data race errors: 0
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 InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 5.1.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/drewster99/NCCCodableStorage.git
Reference: 1.1.2
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/drewster99/NCCCodableStorage
* tag 1.1.2 -> FETCH_HEAD
HEAD is now at 22713e4 1.1.2: HTTPS dependency, leak and data-race fixes, safer flushes
Cloned https://github.com/drewster99/NCCCodableStorage.git
Revision (git rev-parse @):
22713e4235645953068ad962d989b23971b58ba3
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/drewster99/NCCCodableStorage.git at 1.1.2
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/drewster99/NCCCodableStorage.git
https://github.com/drewster99/NCCCodableStorage.git
{
"dependencies" : [
{
"identity" : "ncccoding",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/drewster99/NCCCoding.git"
}
],
"manifest_display_name" : "NCCCodableStorage",
"name" : "NCCCodableStorage",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "11.0"
}
],
"products" : [
{
"name" : "NCCCodableStorage",
"targets" : [
"NCCCodableStorage"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "NCCCodableStorageTests",
"module_type" : "SwiftTarget",
"name" : "NCCCodableStorageTests",
"path" : "Tests/NCCCodableStorageTests",
"sources" : [
"NCCCodableStorageTests.swift",
"StorageBehaviorTests.swift",
"StorageRegressionTests.swift",
"StorageTestSupport.swift",
"StorageWriteOrderingTests.swift",
"XCTestManifests.swift"
],
"target_dependencies" : [
"NCCCodableStorage"
],
"type" : "test"
},
{
"c99name" : "NCCCodableStorage",
"module_type" : "SwiftTarget",
"name" : "NCCCodableStorage",
"path" : "Sources/NCCCodableStorage",
"product_dependencies" : [
"NCCCoding"
],
"product_memberships" : [
"NCCCodableStorage"
],
"sources" : [
"NCCCodableJSONStorage.swift",
"NCCCodableStorage.swift",
"NCCUnderlyingStorage.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
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
Building for debugging...
[0/3] Write sources
[2/3] Write swift-version-2F0A5646E1D333AE.txt
[4/5] Emitting module NCCCoding
[5/5] Compiling NCCCoding NCCCoding.swift
[6/9] Compiling NCCCodableStorage NCCUnderlyingStorage.swift
[7/9] Compiling NCCCodableStorage NCCCodableJSONStorage.swift
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableJSONStorage.swift:163:49: warning: capture of 'snapshot' with non-sendable type 'JSONCodableValue' in a '@Sendable' closure
29 | /// Debounced writes copy `value` on the main thread and only encode and write that copy on
30 | /// `storageWriteQueue`.
31 | internal final class NCCCodableJSONStorage<JSONCodableValue: Codable>: ObservableObject, NCCUnderlyingStorage {
| `- note: consider making generic parameter 'JSONCodableValue' conform to the 'Sendable' protocol
32 |
33 | private(set) var url: URL
:
161 | // synchronous write, could happen on that queue.
162 | storageWriteQueue.async {
163 | if let error = NCCCoding.encode(snapshot, to: url) {
| `- warning: capture of 'snapshot' with non-sendable type 'JSONCodableValue' in a '@Sendable' closure
164 | Self.automaticWriteFailed(error, url: url)
165 | }
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableJSONStorage.swift:206:21: warning: capture of 'self' with non-sendable type 'NCCCodableStorage<T>.NCCCodableJSONStorage<JSONCodableValue>?' in a '@Sendable' closure
29 | /// Debounced writes copy `value` on the main thread and only encode and write that copy on
30 | /// `storageWriteQueue`.
31 | internal final class NCCCodableJSONStorage<JSONCodableValue: Codable>: ObservableObject, NCCUnderlyingStorage {
| `- note: generic class 'NCCCodableJSONStorage' does not conform to the 'Sendable' protocol
32 |
33 | private(set) var url: URL
:
204 | lifecycleObservers = notificationNames.map { name in
205 | NotificationCenter.default.addObserver(forName: name, object: nil, queue: .main) { [weak self] _ in
206 | self?.writePendingChangesNow()
| `- warning: capture of 'self' with non-sendable type 'NCCCodableStorage<T>.NCCCodableJSONStorage<JSONCodableValue>?' in a '@Sendable' closure
207 | }
208 | }
[8/9] Emitting module NCCCodableStorage
[9/9] Compiling NCCCodableStorage NCCCodableStorage.swift
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableStorage.swift:38:9: warning: main actor-isolated property 'storage' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
32 |
33 | /// The underlying data storage
34 | @StateObject private var storage: NCCCodableJSONStorage<T>
| `- note: property declared here
35 |
36 | /// URL of underlying storage file
37 | public var url: URL {
38 | storage.url
| `- warning: main actor-isolated property 'storage' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
39 | }
40 |
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableStorage.swift:44:13: warning: main actor-isolated property 'storage' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
32 |
33 | /// The underlying data storage
34 | @StateObject private var storage: NCCCodableJSONStorage<T>
| `- note: property declared here
35 |
36 | /// URL of underlying storage file
:
42 | public var wrappedValue: T {
43 | get {
44 | storage.value
| `- warning: main actor-isolated property 'storage' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
45 | }
46 | nonmutating set {
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableStorage.swift:47:13: warning: main actor-isolated property 'storage' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
32 |
33 | /// The underlying data storage
34 | @StateObject private var storage: NCCCodableJSONStorage<T>
| `- note: mutation of this property is only permitted within the actor
35 |
36 | /// URL of underlying storage file
:
45 | }
46 | nonmutating set {
47 | storage.value = newValue
| `- warning: main actor-isolated property 'storage' can not be mutated from a nonisolated context; this is an error in the Swift 6 language mode
48 | }
49 | }
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableStorage.swift:53:27: warning: capture of 'self' with non-sendable type 'NCCCodableStorage<T>' in a '@Sendable' closure
18 | /// A failed automatic write (`.immediate` or `.afterIdle`) terminates the app with `fatalError`.
19 | /// Use `.manual` and ``save()`` to handle write errors yourself.
20 | @propertyWrapper public struct NCCCodableStorage<T: Codable>: DynamicProperty {
| `- note: consider making generic struct 'NCCCodableStorage' conform to the 'Sendable' protocol
21 |
22 | /// Composes a file URL from the given filename and directoryType
:
51 | /// Returns a Binding to the property's value, suitable for use with SwiftUI
52 | public var projectedValue: Binding<T> {
53 | Binding<T>(get: { self.storage.value },
| `- warning: capture of 'self' with non-sendable type 'NCCCodableStorage<T>' in a '@Sendable' closure
54 | set: { newValue in self.storage.value = newValue })
55 | }
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableStorage.swift:53:32: warning: main actor-isolated property 'storage' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
32 |
33 | /// The underlying data storage
34 | @StateObject private var storage: NCCCodableJSONStorage<T>
| `- note: property declared here
35 |
36 | /// URL of underlying storage file
:
51 | /// Returns a Binding to the property's value, suitable for use with SwiftUI
52 | public var projectedValue: Binding<T> {
53 | Binding<T>(get: { self.storage.value },
| `- warning: main actor-isolated property 'storage' can not be referenced from a Sendable closure; this is an error in the Swift 6 language mode
54 | set: { newValue in self.storage.value = newValue })
55 | }
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableStorage.swift:54:39: warning: capture of 'self' with non-sendable type 'NCCCodableStorage<T>' in a '@Sendable' closure
18 | /// A failed automatic write (`.immediate` or `.afterIdle`) terminates the app with `fatalError`.
19 | /// Use `.manual` and ``save()`` to handle write errors yourself.
20 | @propertyWrapper public struct NCCCodableStorage<T: Codable>: DynamicProperty {
| `- note: consider making generic struct 'NCCCodableStorage' conform to the 'Sendable' protocol
21 |
22 | /// Composes a file URL from the given filename and directoryType
:
52 | public var projectedValue: Binding<T> {
53 | Binding<T>(get: { self.storage.value },
54 | set: { newValue in self.storage.value = newValue })
| `- warning: capture of 'self' with non-sendable type 'NCCCodableStorage<T>' in a '@Sendable' closure
55 | }
56 |
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableStorage.swift:54:44: warning: main actor-isolated property 'storage' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
32 |
33 | /// The underlying data storage
34 | @StateObject private var storage: NCCCodableJSONStorage<T>
| `- note: mutation of this property is only permitted within the actor
35 |
36 | /// URL of underlying storage file
:
52 | public var projectedValue: Binding<T> {
53 | Binding<T>(get: { self.storage.value },
54 | set: { newValue in self.storage.value = newValue })
| `- warning: main actor-isolated property 'storage' can not be mutated from a Sendable closure; this is an error in the Swift 6 language mode
55 | }
56 |
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableStorage.swift:61:13: warning: main actor-isolated property 'storage' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
32 |
33 | /// The underlying data storage
34 | @StateObject private var storage: NCCCodableJSONStorage<T>
| `- note: property declared here
35 |
36 | /// URL of underlying storage file
:
58 | /// Required in `.manual` mode; also useful to force a write in the other modes.
59 | /// - Throws: The encoding or file-writing error if the write failed.
60 | public func save() throws {
| `- note: add '@MainActor' to make instance method 'save()' part of global actor 'MainActor'
61 | try storage.save()
| `- warning: main actor-isolated property 'storage' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
62 | }
63 |
/Users/admin/builder/spi-builder-workspace/Sources/NCCCodableStorage/NCCCodableStorage.swift:67:13: warning: main actor-isolated property 'storage' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
32 |
33 | /// The underlying data storage
34 | @StateObject private var storage: NCCCodableJSONStorage<T>
| `- note: property declared here
35 |
36 | /// URL of underlying storage file
:
64 | /// Replaces the current value with the one decoded from storage. Does not write the file back.
65 | /// - Throws: The file-reading or decoding error if the value could not be loaded.
66 | public func load() throws {
| `- note: add '@MainActor' to make instance method 'load()' part of global actor 'MainActor'
67 | try storage.load()
| `- warning: main actor-isolated property 'storage' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode
68 | }
69 |
Build complete! (12.12s)
Fetching https://github.com/drewster99/NCCCoding.git
[1/62] Fetching ncccoding
Fetched https://github.com/drewster99/NCCCoding.git from cache (0.65s)
Computing version for https://github.com/drewster99/NCCCoding.git
Computed https://github.com/drewster99/NCCCoding.git at 1.1.0 (1.26s)
Creating working copy for https://github.com/drewster99/NCCCoding.git
Working copy of https://github.com/drewster99/NCCCoding.git resolved at 1.1.0
Build complete.
{
"dependencies" : [
{
"identity" : "ncccoding",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/drewster99/NCCCoding.git"
}
],
"manifest_display_name" : "NCCCodableStorage",
"name" : "NCCCodableStorage",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "11.0"
}
],
"products" : [
{
"name" : "NCCCodableStorage",
"targets" : [
"NCCCodableStorage"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "NCCCodableStorageTests",
"module_type" : "SwiftTarget",
"name" : "NCCCodableStorageTests",
"path" : "Tests/NCCCodableStorageTests",
"sources" : [
"NCCCodableStorageTests.swift",
"StorageBehaviorTests.swift",
"StorageRegressionTests.swift",
"StorageTestSupport.swift",
"StorageWriteOrderingTests.swift",
"XCTestManifests.swift"
],
"target_dependencies" : [
"NCCCodableStorage"
],
"type" : "test"
},
{
"c99name" : "NCCCodableStorage",
"module_type" : "SwiftTarget",
"name" : "NCCCodableStorage",
"path" : "Sources/NCCCodableStorage",
"product_dependencies" : [
"NCCCoding"
],
"product_memberships" : [
"NCCCodableStorage"
],
"sources" : [
"NCCCodableJSONStorage.swift",
"NCCCodableStorage.swift",
"NCCUnderlyingStorage.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
Done.