Build Information
Successful build of SwiftFileStore, reference main (dc18e7
), with Swift 6.0 for Linux on 30 Jan 2025 00:21:54 UTC.
Swift 6 data race errors: 5
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4609320-2":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -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 2>&1
Build Log
========================================
RunAll
========================================
Builder version: 4.60.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/juyan/swift-filestore.git
Reference: main
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/juyan/swift-filestore
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at dc18e7a Add API to read raw data (#11)
Cloned https://github.com/juyan/swift-filestore.git
Revision (git rev-parse @):
dc18e7af814e896a81b981341a6c77d37f2e6e06
SUCCESS checkout https://github.com/juyan/swift-filestore.git at main
========================================
Build
========================================
Selected platform: linux
Swift version: 6.0
Building package at path: $PWD
https://github.com/juyan/swift-filestore.git
https://github.com/juyan/swift-filestore.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
"dependencies" : [
],
"manifest_display_name" : "SwiftFileStore",
"name" : "SwiftFileStore",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "14.0"
},
{
"name" : "watchos",
"version" : "8.0"
}
],
"products" : [
{
"name" : "SwiftFileStore",
"targets" : [
"SwiftFileStore"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftFileStoreTests",
"module_type" : "SwiftTarget",
"name" : "SwiftFileStoreTests",
"path" : "Tests/SwiftFileStoreTests",
"sources" : [
"FileObjectStoreTests.swift",
"MemoryObjectStoreTests.swift",
"PersistenceLogTests.swift",
"TestObject.swift",
"XCTestCase+.swift"
],
"target_dependencies" : [
"SwiftFileStore"
],
"type" : "test"
},
{
"c99name" : "SwiftFileStore",
"module_type" : "SwiftTarget",
"name" : "SwiftFileStore",
"path" : "Sources/SwiftFileStore",
"product_memberships" : [
"SwiftFileStore"
],
"sources" : [
"FileObjectStore.swift",
"JSONDataRepresentable.swift",
"MemoryObjectStore.swift",
"ObjectStore+Expiry.swift",
"ObjectStore.swift",
"Observer.swift",
"ObserverManager.swift",
"PersistenceLog.swift"
],
"type" : "library"
}
],
"tools_version" : "5.6"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-2":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -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 2>&1
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:081dcf4fb829aea9d08447f4790431afbdfbcc335bfeed728ca69c6f181ae2aa
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
[3/10] Compiling SwiftFileStore ObserverManager.swift
[4/10] Compiling SwiftFileStore ObjectStore.swift
[5/10] Compiling SwiftFileStore Observer.swift
[6/11] Compiling SwiftFileStore FileObjectStore.swift
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:126:1: warning: extension declares a conformance of imported type 'String' to imported protocol 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
124 | }
125 |
126 | extension String: Error {}
| |- warning: extension declares a conformance of imported type 'String' to imported protocol 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
127 |
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:83:46: warning: non-sendable type 'Observer' returned by call to actor-isolated function cannot cross actor boundary; this is an error in the Swift 6 language mode
81 |
82 | public func observe<T>(key: String, namespace: String, objectType: T.Type) async -> AsyncThrowingStream<T?, Error> where T: DataRepresentable {
83 | let observer = await observerManager.getObserver(key: key, namespace: namespace)
| `- warning: non-sendable type 'Observer' returned by call to actor-isolated function cannot cross actor boundary; this is an error in the Swift 6 language mode
84 | do {
85 | let existingValue = try await read(key: key, namespace: namespace, objectType: objectType)
/host/spi-builder-workspace/Sources/SwiftFileStore/Observer.swift:7:13: note: class 'Observer' does not conform to the 'Sendable' protocol
5 | import Foundation
6 |
7 | final class Observer {
| `- note: class 'Observer' does not conform to the 'Sendable' protocol
8 | let key: String
9 | let namespace: String
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:99:21: warning: capture of 'observer' with non-sendable type 'Observer' in a `@Sendable` closure; this is an error in the Swift 6 language mode
97 | }
98 | continuation.onTermination = { @Sendable _ in
99 | observer.callbacks.removeValue(forKey: callbackID)
| `- warning: capture of 'observer' with non-sendable type 'Observer' in a `@Sendable` closure; this is an error in the Swift 6 language mode
100 | }
101 | }
/host/spi-builder-workspace/Sources/SwiftFileStore/Observer.swift:7:13: note: class 'Observer' does not conform to the 'Sendable' protocol
5 | import Foundation
6 |
7 | final class Observer {
| `- note: class 'Observer' does not conform to the 'Sendable' protocol
8 | let key: String
9 | let namespace: String
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:53:14: 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
51 | try FileManager.default.createDirIfNotExist(url: dirURL)
52 | try object.serialize().write(to: fileURL)
53 | Task {
| `- 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
54 | await observerManager.publishValue(key: key, namespace: namespace, value: object)
| `- note: closure captures 'self' which is accessible to code in the current task
55 | }
56 | }
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:54:35: warning: sending 'object' risks causing data races; this is an error in the Swift 6 language mode
52 | try object.serialize().write(to: fileURL)
53 | Task {
54 | await observerManager.publishValue(key: key, namespace: namespace, value: object)
| |- warning: sending 'object' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'object' to actor-isolated instance method 'publishValue(key:namespace:value:)' risks causing data races between actor-isolated and task-isolated uses
55 | }
56 | }
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:64:14: 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
62 | try FileManager.default.removeItem(at: fileURL)
63 | }
64 | Task {
| `- 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
65 | await observerManager.publishRemoval(namespace: namespace, key: key)
| `- note: closure captures 'self' which is accessible to code in the current task
66 | }
67 | }
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:72:14: 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
70 | let dirURL = rootDir.appendingPathComponent(namespace)
71 | try FileManager.default.removeItem(at: dirURL)
72 | Task {
| `- 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
73 | await observerManager.publishRemoval(namespace: namespace)
| `- note: closure captures 'self' which is accessible to code in the current task
74 | }
75 | }
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:87:30: warning: sending 'existingValue' risks causing data races; this is an error in the Swift 6 language mode
85 | let existingValue = try await read(key: key, namespace: namespace, objectType: objectType)
86 | return AsyncThrowingStream { continuation in
87 | continuation.yield(existingValue)
| |- warning: sending 'existingValue' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'existingValue' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
88 | let callbackID = UUID().uuidString
89 | observer.registerCallback(id: callbackID) { data in
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:91:38: warning: task-isolated value of type 'T' passed as a strongly transferred parameter; later accesses could race; this is an error in the Swift 6 language mode
89 | observer.registerCallback(id: callbackID) { data in
90 | if let d = data, let typed = d as? T {
91 | continuation.yield(typed)
| `- warning: task-isolated value of type 'T' passed as a strongly transferred parameter; later accesses could race; this is an error in the Swift 6 language mode
92 | } else if data == nil {
93 | continuation.yield(nil)
[7/11] Compiling SwiftFileStore ObjectStore+Expiry.swift
[8/11] Compiling SwiftFileStore JSONDataRepresentable.swift
[9/11] Emitting module SwiftFileStore
/host/spi-builder-workspace/Sources/SwiftFileStore/FileObjectStore.swift:126:1: warning: extension declares a conformance of imported type 'String' to imported protocol 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
124 | }
125 |
126 | extension String: Error {}
| |- warning: extension declares a conformance of imported type 'String' to imported protocol 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
127 |
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:18:17: warning: non-sendable type 'T?' returned by actor-isolated instance method 'read(key:namespace:objectType:)' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
16 | }
17 |
18 | public func read<T>(key: String, namespace: String, objectType _: T.Type) async throws -> T? where T: DataRepresentable {
| | `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
| `- warning: non-sendable type 'T?' returned by actor-isolated instance method 'read(key:namespace:objectType:)' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
19 | objects[namespace]?[key].flatMap { try? T.from(data: $0) }
20 | }
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:22:17: warning: non-sendable type 'T' in parameter of the protocol requirement satisfied by actor-isolated instance method 'write(key:namespace:object:)' cannot cross actor boundary; this is an error in the Swift 6 language mode
20 | }
21 |
22 | public func write<T>(key: String, namespace: String, object: T) async throws where T: DataRepresentable {
| `- warning: non-sendable type 'T' in parameter of the protocol requirement satisfied by actor-isolated instance method 'write(key:namespace:object:)' cannot cross actor boundary; this is an error in the Swift 6 language mode
23 | let data = try object.serialize()
24 | objects[namespace, default: [:]][key] = data
/host/spi-builder-workspace/Sources/SwiftFileStore/ObjectStore.swift:36:16: note: consider making generic parameter 'T' conform to the 'Sendable' protocol
34 | /// - namespace: namespace of the object, such as "Cats"
35 | /// - object: The object to write
36 | func write<T>(key: String, namespace: String, object: T) async throws where T: DataRepresentable
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
37 |
38 | /// Remove an object from storage
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:42:17: warning: non-sendable type 'AsyncThrowingStream<T?, any Error>' returned by actor-isolated instance method 'observe(key:namespace:objectType:)' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
40 | }
41 |
42 | public func observe<T>(key: String, namespace: String, objectType: T.Type) async -> AsyncThrowingStream<T?, Error> where T: DataRepresentable {
| | `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
| `- warning: non-sendable type 'AsyncThrowingStream<T?, any Error>' returned by actor-isolated instance method 'observe(key:namespace:objectType:)' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
43 | let observer = await observerManager.getObserver(key: key, namespace: namespace)
44 | do {
/host/spi-builder-workspace/Sources/SwiftFileStore/PersistenceLog.swift:54:17: warning: non-sendable type 'Self.Element' in parameter of the protocol requirement satisfied by actor-isolated instance method 'append(element:)' cannot cross actor boundary; this is an error in the Swift 6 language mode
52 | }
53 |
54 | public func append(element: ElementType) async throws {
| `- warning: non-sendable type 'Self.Element' in parameter of the protocol requirement satisfied by actor-isolated instance method 'append(element:)' cannot cross actor boundary; this is an error in the Swift 6 language mode
55 | try fileHandle.seekToEnd()
56 | let data = try element.serialize()
/host/spi-builder-workspace/Sources/SwiftFileStore/PersistenceLog.swift:62:17: warning: non-sendable type '[ElementType]' returned by actor-isolated instance method 'flush()' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
15 | }
16 |
17 | public actor PersistenceLogImpl<ElementType>: PersistenceLog where ElementType: DataRepresentable {
| `- note: consider making generic parameter 'ElementType' conform to the 'Sendable' protocol
18 | public typealias Element = ElementType
19 |
:
60 | }
61 |
62 | public func flush() async throws -> [ElementType] {
| `- warning: non-sendable type '[ElementType]' returned by actor-isolated instance method 'flush()' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
63 | try fileHandle.seek(toOffset: 0)
64 | let fileData = try fileHandle.readToEnd()
[10/11] Compiling SwiftFileStore MemoryObjectStore.swift
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:18:17: warning: non-sendable type 'T?' returned by actor-isolated instance method 'read(key:namespace:objectType:)' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
16 | }
17 |
18 | public func read<T>(key: String, namespace: String, objectType _: T.Type) async throws -> T? where T: DataRepresentable {
| | `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
| `- warning: non-sendable type 'T?' returned by actor-isolated instance method 'read(key:namespace:objectType:)' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
19 | objects[namespace]?[key].flatMap { try? T.from(data: $0) }
20 | }
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:22:17: warning: non-sendable type 'T' in parameter of the protocol requirement satisfied by actor-isolated instance method 'write(key:namespace:object:)' cannot cross actor boundary; this is an error in the Swift 6 language mode
20 | }
21 |
22 | public func write<T>(key: String, namespace: String, object: T) async throws where T: DataRepresentable {
| `- warning: non-sendable type 'T' in parameter of the protocol requirement satisfied by actor-isolated instance method 'write(key:namespace:object:)' cannot cross actor boundary; this is an error in the Swift 6 language mode
23 | let data = try object.serialize()
24 | objects[namespace, default: [:]][key] = data
/host/spi-builder-workspace/Sources/SwiftFileStore/ObjectStore.swift:36:16: note: consider making generic parameter 'T' conform to the 'Sendable' protocol
34 | /// - namespace: namespace of the object, such as "Cats"
35 | /// - object: The object to write
36 | func write<T>(key: String, namespace: String, object: T) async throws where T: DataRepresentable
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
37 |
38 | /// Remove an object from storage
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:42:17: warning: non-sendable type 'AsyncThrowingStream<T?, any Error>' returned by actor-isolated instance method 'observe(key:namespace:objectType:)' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
40 | }
41 |
42 | public func observe<T>(key: String, namespace: String, objectType: T.Type) async -> AsyncThrowingStream<T?, Error> where T: DataRepresentable {
| | `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
| `- warning: non-sendable type 'AsyncThrowingStream<T?, any Error>' returned by actor-isolated instance method 'observe(key:namespace:objectType:)' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
43 | let observer = await observerManager.getObserver(key: key, namespace: namespace)
44 | do {
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:43:46: warning: non-sendable type 'Observer' returned by call to actor-isolated function cannot cross actor boundary; this is an error in the Swift 6 language mode
41 |
42 | public func observe<T>(key: String, namespace: String, objectType: T.Type) async -> AsyncThrowingStream<T?, Error> where T: DataRepresentable {
43 | let observer = await observerManager.getObserver(key: key, namespace: namespace)
| `- warning: non-sendable type 'Observer' returned by call to actor-isolated function cannot cross actor boundary; this is an error in the Swift 6 language mode
44 | do {
45 | let existingValue = try await read(key: key, namespace: namespace, objectType: objectType)
/host/spi-builder-workspace/Sources/SwiftFileStore/Observer.swift:7:13: note: class 'Observer' does not conform to the 'Sendable' protocol
5 | import Foundation
6 |
7 | final class Observer {
| `- note: class 'Observer' does not conform to the 'Sendable' protocol
8 | let key: String
9 | let namespace: String
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:59:21: warning: capture of 'observer' with non-sendable type 'Observer' in a `@Sendable` closure; this is an error in the Swift 6 language mode
57 | }
58 | continuation.onTermination = { @Sendable _ in
59 | observer.callbacks.removeValue(forKey: callbackID)
| `- warning: capture of 'observer' with non-sendable type 'Observer' in a `@Sendable` closure; this is an error in the Swift 6 language mode
60 | }
61 | }
/host/spi-builder-workspace/Sources/SwiftFileStore/Observer.swift:7:13: note: class 'Observer' does not conform to the 'Sendable' protocol
5 | import Foundation
6 |
7 | final class Observer {
| `- note: class 'Observer' does not conform to the 'Sendable' protocol
8 | let key: String
9 | let namespace: String
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:25:31: warning: sending 'object' risks causing data races; this is an error in the Swift 6 language mode
23 | let data = try object.serialize()
24 | objects[namespace, default: [:]][key] = data
25 | await observerManager.publishValue(key: key, namespace: namespace, value: object)
| |- warning: sending 'object' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending 'self'-isolated 'object' to actor-isolated instance method 'publishValue(key:namespace:value:)' risks causing data races between actor-isolated and 'self'-isolated uses
26 | }
27 |
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:47:30: warning: sending 'existingValue' risks causing data races; this is an error in the Swift 6 language mode
45 | let existingValue = try await read(key: key, namespace: namespace, objectType: objectType)
46 | return AsyncThrowingStream { continuation in
47 | continuation.yield(existingValue)
| |- warning: sending 'existingValue' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'existingValue' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
48 | let callbackID = UUID().uuidString
49 | observer.registerCallback(id: callbackID) { data in
/host/spi-builder-workspace/Sources/SwiftFileStore/MemoryObjectStore.swift:51:38: warning: task-isolated value of type 'T' passed as a strongly transferred parameter; later accesses could race; this is an error in the Swift 6 language mode
49 | observer.registerCallback(id: callbackID) { data in
50 | if let d = data, let typed = d as? T {
51 | continuation.yield(typed)
| `- warning: task-isolated value of type 'T' passed as a strongly transferred parameter; later accesses could race; this is an error in the Swift 6 language mode
52 | } else if data == nil {
53 | continuation.yield(nil)
[11/11] Compiling SwiftFileStore PersistenceLog.swift
/host/spi-builder-workspace/Sources/SwiftFileStore/PersistenceLog.swift:54:17: warning: non-sendable type 'Self.Element' in parameter of the protocol requirement satisfied by actor-isolated instance method 'append(element:)' cannot cross actor boundary; this is an error in the Swift 6 language mode
52 | }
53 |
54 | public func append(element: ElementType) async throws {
| `- warning: non-sendable type 'Self.Element' in parameter of the protocol requirement satisfied by actor-isolated instance method 'append(element:)' cannot cross actor boundary; this is an error in the Swift 6 language mode
55 | try fileHandle.seekToEnd()
56 | let data = try element.serialize()
/host/spi-builder-workspace/Sources/SwiftFileStore/PersistenceLog.swift:62:17: warning: non-sendable type '[ElementType]' returned by actor-isolated instance method 'flush()' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
15 | }
16 |
17 | public actor PersistenceLogImpl<ElementType>: PersistenceLog where ElementType: DataRepresentable {
| `- note: consider making generic parameter 'ElementType' conform to the 'Sendable' protocol
18 | public typealias Element = ElementType
19 |
:
60 | }
61 |
62 | public func flush() async throws -> [ElementType] {
| `- warning: non-sendable type '[ElementType]' returned by actor-isolated instance method 'flush()' satisfying protocol requirement cannot cross actor boundary; this is an error in the Swift 6 language mode
63 | try fileHandle.seek(toOffset: 0)
64 | let fileData = try fileHandle.readToEnd()
Build complete! (13.58s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "SwiftFileStore",
"name" : "SwiftFileStore",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "14.0"
},
{
"name" : "watchos",
"version" : "8.0"
}
],
"products" : [
{
"name" : "SwiftFileStore",
"targets" : [
"SwiftFileStore"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftFileStoreTests",
"module_type" : "SwiftTarget",
"name" : "SwiftFileStoreTests",
"path" : "Tests/SwiftFileStoreTests",
"sources" : [
"FileObjectStoreTests.swift",
"MemoryObjectStoreTests.swift",
"PersistenceLogTests.swift",
"TestObject.swift",
"XCTestCase+.swift"
],
"target_dependencies" : [
"SwiftFileStore"
],
"type" : "test"
},
{
"c99name" : "SwiftFileStore",
"module_type" : "SwiftTarget",
"name" : "SwiftFileStore",
"path" : "Sources/SwiftFileStore",
"product_memberships" : [
"SwiftFileStore"
],
"sources" : [
"FileObjectStore.swift",
"JSONDataRepresentable.swift",
"MemoryObjectStore.swift",
"ObjectStore+Expiry.swift",
"ObjectStore.swift",
"Observer.swift",
"ObserverManager.swift",
"PersistenceLog.swift"
],
"type" : "library"
}
],
"tools_version" : "5.6"
}
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:081dcf4fb829aea9d08447f4790431afbdfbcc335bfeed728ca69c6f181ae2aa
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Done.