Build Information
Successful build of FuturaLog, reference master (088587
), with Swift 6.1 for macOS (SPM) on 25 Apr 2025 03:16:33 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/kaqu/futuralog.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/kaqu/futuralog
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
HEAD is now at 088587a Update README.md
Cloned https://github.com/kaqu/futuralog.git
Revision (git rev-parse @):
088587a555814bd6449253d5d18ddd181c2e6f29
SUCCESS checkout https://github.com/kaqu/futuralog.git at master
========================================
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": "futuralog",
"name": "FuturaLog",
"url": "https://github.com/kaqu/futuralog.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/futuralog",
"dependencies": [
]
}
]
}
Fetching https://github.com/kaqu/futuralog.git
[1/157] Fetching futuralog
Fetched https://github.com/kaqu/futuralog.git from cache (0.57s)
Creating working copy for https://github.com/kaqu/futuralog.git
Working copy of https://github.com/kaqu/futuralog.git resolved at master (088587a)
warning: '.resolve-product-dependencies': dependency 'futuralog' 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/kaqu/futuralog.git
https://github.com/kaqu/futuralog.git
{
"dependencies" : [
],
"manifest_display_name" : "FuturaLog",
"name" : "FuturaLog",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "FuturaLog",
"targets" : [
"FuturaLog"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "FuturaLogTests",
"module_type" : "SwiftTarget",
"name" : "FuturaLogTests",
"path" : "Tests/FuturaLogTests",
"sources" : [
"FuturaLogTests.swift"
],
"target_dependencies" : [
"FuturaLog"
],
"type" : "test"
},
{
"c99name" : "FuturaLog",
"module_type" : "SwiftTarget",
"name" : "FuturaLog",
"path" : "Sources/FuturaLog",
"product_memberships" : [
"FuturaLog"
],
"sources" : [
"CrashHandling/CrashCatcher.swift",
"FlushableTextOutputStream.swift",
"Log.swift",
"LogFormatter.swift",
"LogReceiver.swift",
"LogRecievers/LogFilePrinter.swift",
"LogRecievers/LogFileStorage.swift",
"LogRecievers/LogMemoryStorage.swift",
"LogRecievers/LogPrinter.swift",
"LogStorage.swift",
"Logger.swift",
"Server/FlatLog.swift",
"Server/LogEnvironment.swift",
"Server/LogPackage.swift",
"Server/LogServer.swift"
],
"type" : "library"
}
],
"tools_version" : "4.0"
}
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/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/17] Compiling FuturaLog FlatLog.swift
[4/17] Compiling FuturaLog LogPackage.swift
[5/17] Compiling FuturaLog Logger.swift
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Logger.swift:7:28: warning: static property 'recievers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
5 | public static let sessionID: String = UUID().uuidString
6 |
7 | fileprivate static var recievers: Array<LogReceiver> = []
| |- warning: static property 'recievers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'recievers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'recievers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
8 | fileprivate static let logsQueue = DispatchQueue(label: "futura.log.mainQueue", qos: .utility)
9 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Logger.swift:14:44: warning: capture of 'reciever' with non-sendable type 'any LogReceiver' in a '@Sendable' closure
12 |
13 | static func addReciever(_ reciever: LogReceiver) {
14 | logsQueue.async { recievers.append(reciever) }
| `- warning: capture of 'reciever' with non-sendable type 'any LogReceiver' in a '@Sendable' closure
15 | }
16 |
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/LogReceiver.swift:3:17: note: protocol 'LogReceiver' does not conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public protocol LogReceiver {
| `- note: protocol 'LogReceiver' does not conform to the 'Sendable' protocol
4 |
5 | var allowedCategories: [LogCategory] { get }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Logger.swift:18:58: warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
16 |
17 | static func send(_ log: Log) {
18 | logsQueue.async { recievers.forEach { $0.recieve(log) } }
| `- warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
19 | }
20 |
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:3:15: note: consider making struct 'Log' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct Log : Codable {
| `- note: consider making struct 'Log' conform to the 'Sendable' protocol
4 |
5 | public let category: LogCategory
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Logger.swift:18:58: warning: capture of 'log' with non-sendable type 'Log' in an isolated closure; this is an error in the Swift 6 language mode
16 |
17 | static func send(_ log: Log) {
18 | logsQueue.async { recievers.forEach { $0.recieve(log) } }
| `- warning: capture of 'log' with non-sendable type 'Log' in an isolated closure; this is an error in the Swift 6 language mode
19 | }
20 |
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:3:15: note: consider making struct 'Log' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct Log : Codable {
| `- note: consider making struct 'Log' conform to the 'Sendable' protocol
4 |
5 | public let category: LogCategory
[6/17] Compiling FuturaLog LogReceiver.swift
[7/17] Compiling FuturaLog LogFilePrinter.swift
[8/17] Compiling FuturaLog CrashCatcher.swift
[9/17] Compiling FuturaLog FlushableTextOutputStream.swift
[10/17] Compiling FuturaLog LogFileStorage.swift
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/LogRecievers/LogFileStorage.swift:27:19: warning: capture of 'self' with non-sendable type 'LogFileStorage' in a '@Sendable' closure
2 |
3 | // TODO: add cycling storage, session separated and date separated modes
4 | public final class LogFileStorage : LogReceiver {
| `- note: class 'LogFileStorage' does not conform to the 'Sendable' protocol
5 |
6 | public static let jsonDecoder = JSONDecoder()
:
25 | public func recieve(_ log: Log) {
26 | synchronizationQueue.async {
27 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'self' with non-sendable type 'LogFileStorage' in a '@Sendable' closure
28 | return
29 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/LogRecievers/LogFileStorage.swift:27:51: warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
25 | public func recieve(_ log: Log) {
26 | synchronizationQueue.async {
27 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
28 | return
29 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:3:15: note: consider making struct 'Log' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct Log : Codable {
| `- note: consider making struct 'Log' conform to the 'Sendable' protocol
4 |
5 | public let category: LogCategory
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/LogRecievers/LogMemoryStorage.swift:20:19: warning: capture of 'self' with non-sendable type 'LogMemoryStorage' in a '@Sendable' closure
1 | import Foundation
2 |
3 | public final class LogMemoryStorage : LogReceiver {
| `- note: class 'LogMemoryStorage' does not conform to the 'Sendable' protocol
4 |
5 | fileprivate let synchronizationQueue = DispatchQueue(label: "futura.log.storage.memory.syncQueue")
:
18 | public func recieve(_ log: Log) {
19 | synchronizationQueue.async {
20 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'self' with non-sendable type 'LogMemoryStorage' in a '@Sendable' closure
21 | return
22 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/LogRecievers/LogMemoryStorage.swift:20:51: warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
18 | public func recieve(_ log: Log) {
19 | synchronizationQueue.async {
20 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
21 | return
22 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:3:15: note: consider making struct 'Log' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct Log : Codable {
| `- note: consider making struct 'Log' conform to the 'Sendable' protocol
4 |
5 | public let category: LogCategory
[11/17] Compiling FuturaLog LogMemoryStorage.swift
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/LogRecievers/LogFileStorage.swift:27:19: warning: capture of 'self' with non-sendable type 'LogFileStorage' in a '@Sendable' closure
2 |
3 | // TODO: add cycling storage, session separated and date separated modes
4 | public final class LogFileStorage : LogReceiver {
| `- note: class 'LogFileStorage' does not conform to the 'Sendable' protocol
5 |
6 | public static let jsonDecoder = JSONDecoder()
:
25 | public func recieve(_ log: Log) {
26 | synchronizationQueue.async {
27 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'self' with non-sendable type 'LogFileStorage' in a '@Sendable' closure
28 | return
29 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/LogRecievers/LogFileStorage.swift:27:51: warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
25 | public func recieve(_ log: Log) {
26 | synchronizationQueue.async {
27 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
28 | return
29 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:3:15: note: consider making struct 'Log' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct Log : Codable {
| `- note: consider making struct 'Log' conform to the 'Sendable' protocol
4 |
5 | public let category: LogCategory
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/LogRecievers/LogMemoryStorage.swift:20:19: warning: capture of 'self' with non-sendable type 'LogMemoryStorage' in a '@Sendable' closure
1 | import Foundation
2 |
3 | public final class LogMemoryStorage : LogReceiver {
| `- note: class 'LogMemoryStorage' does not conform to the 'Sendable' protocol
4 |
5 | fileprivate let synchronizationQueue = DispatchQueue(label: "futura.log.storage.memory.syncQueue")
:
18 | public func recieve(_ log: Log) {
19 | synchronizationQueue.async {
20 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'self' with non-sendable type 'LogMemoryStorage' in a '@Sendable' closure
21 | return
22 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/LogRecievers/LogMemoryStorage.swift:20:51: warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
18 | public func recieve(_ log: Log) {
19 | synchronizationQueue.async {
20 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
21 | return
22 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:3:15: note: consider making struct 'Log' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct Log : Codable {
| `- note: consider making struct 'Log' conform to the 'Sendable' protocol
4 |
5 | public let category: LogCategory
[12/17] Compiling FuturaLog Log.swift
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:36:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[LogCategory]' may have shared mutable state; this is an error in the Swift 6 language mode
23 | }
24 |
25 | public enum LogCategory : String, Codable {
| `- note: consider making enum 'LogCategory' conform to the 'Sendable' protocol
26 |
27 | case crash
:
34 | case void // not present in `all` property since void is special type which is ignored by default
35 |
36 | public static let all: [LogCategory] = [.crash, .special, .error, .warning, .debug, .verbose, .info]
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[LogCategory]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
37 | }
38 |
[13/17] Compiling FuturaLog LogFormatter.swift
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:36:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[LogCategory]' may have shared mutable state; this is an error in the Swift 6 language mode
23 | }
24 |
25 | public enum LogCategory : String, Codable {
| `- note: consider making enum 'LogCategory' conform to the 'Sendable' protocol
26 |
27 | case crash
:
34 | case void // not present in `all` property since void is special type which is ignored by default
35 |
36 | public static let all: [LogCategory] = [.crash, .special, .error, .warning, .debug, .verbose, .info]
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[LogCategory]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
37 | }
38 |
[14/17] Compiling FuturaLog LogPrinter.swift
[15/17] Compiling FuturaLog LogStorage.swift
[16/17] Emitting module FuturaLog
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:36:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[LogCategory]' may have shared mutable state; this is an error in the Swift 6 language mode
23 | }
24 |
25 | public enum LogCategory : String, Codable {
| `- note: consider making enum 'LogCategory' conform to the 'Sendable' protocol
26 |
27 | case crash
:
34 | case void // not present in `all` property since void is special type which is ignored by default
35 |
36 | public static let all: [LogCategory] = [.crash, .special, .error, .warning, .debug, .verbose, .info]
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type '[LogCategory]' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
37 | }
38 |
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Logger.swift:7:28: warning: static property 'recievers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
5 | public static let sessionID: String = UUID().uuidString
6 |
7 | fileprivate static var recievers: Array<LogReceiver> = []
| |- warning: static property 'recievers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'recievers' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'recievers' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
8 | fileprivate static let logsQueue = DispatchQueue(label: "futura.log.mainQueue", qos: .utility)
9 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Server/LogEnvironment.swift:22:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'LogEnvironment' to 'Hashable' by implementing 'hash(into:)' instead
20 | extension LogEnvironment : Hashable {
21 |
22 | public var hashValue: Int {
| `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'LogEnvironment' to 'Hashable' by implementing 'hash(into:)' instead
23 | return "\(self.name)\(self.appVersion)\(self.platform ?? "N/A")\(self.osInfo ?? "N/A")\(self.info ?? "N/A")".hashValue
24 | }
[17/17] Compiling FuturaLog LogEnvironment.swift
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Server/LogEnvironment.swift:22:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'LogEnvironment' to 'Hashable' by implementing 'hash(into:)' instead
20 | extension LogEnvironment : Hashable {
21 |
22 | public var hashValue: Int {
| `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'LogEnvironment' to 'Hashable' by implementing 'hash(into:)' instead
23 | return "\(self.name)\(self.appVersion)\(self.platform ?? "N/A")\(self.osInfo ?? "N/A")\(self.info ?? "N/A")".hashValue
24 | }
[18/18] Compiling FuturaLog LogServer.swift
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Server/LogServer.swift:40:19: warning: capture of 'self' with non-sendable type 'LogServer' in a '@Sendable' closure
1 | import Foundation
2 |
3 | public final class LogServer : LogReceiver {
| `- note: class 'LogServer' does not conform to the 'Sendable' protocol
4 |
5 | public static let jsonEncoder: JSONEncoder = {
:
38 | public func recieve(_ log: Log) {
39 | synchronizationQueue.async {
40 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'self' with non-sendable type 'LogServer' in a '@Sendable' closure
41 | return
42 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Server/LogServer.swift:40:51: warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
38 | public func recieve(_ log: Log) {
39 | synchronizationQueue.async {
40 | guard self.allowedCategories.contains(log.category) else {
| `- warning: capture of 'log' with non-sendable type 'Log' in a '@Sendable' closure
41 | return
42 | }
/Users/admin/builder/spi-builder-workspace/Sources/FuturaLog/Log.swift:3:15: note: consider making struct 'Log' conform to the 'Sendable' protocol
1 | import Foundation
2 |
3 | public struct Log : Codable {
| `- note: consider making struct 'Log' conform to the 'Sendable' protocol
4 |
5 | public let category: LogCategory
Build complete! (5.99s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "FuturaLog",
"name" : "FuturaLog",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "FuturaLog",
"targets" : [
"FuturaLog"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "FuturaLogTests",
"module_type" : "SwiftTarget",
"name" : "FuturaLogTests",
"path" : "Tests/FuturaLogTests",
"sources" : [
"FuturaLogTests.swift"
],
"target_dependencies" : [
"FuturaLog"
],
"type" : "test"
},
{
"c99name" : "FuturaLog",
"module_type" : "SwiftTarget",
"name" : "FuturaLog",
"path" : "Sources/FuturaLog",
"product_memberships" : [
"FuturaLog"
],
"sources" : [
"CrashHandling/CrashCatcher.swift",
"FlushableTextOutputStream.swift",
"Log.swift",
"LogFormatter.swift",
"LogReceiver.swift",
"LogRecievers/LogFilePrinter.swift",
"LogRecievers/LogFileStorage.swift",
"LogRecievers/LogMemoryStorage.swift",
"LogRecievers/LogPrinter.swift",
"LogStorage.swift",
"Logger.swift",
"Server/FlatLog.swift",
"Server/LogEnvironment.swift",
"Server/LogPackage.swift",
"Server/LogServer.swift"
],
"type" : "library"
}
],
"tools_version" : "4.0"
}
Done.