Build Information
Successful build of swift-chess, reference 1.0.8 (14d9d9), with Swift 6.4 for macOS (SPM) on 17 Sep 2026 11:57:03 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/dpedley/swift-chess.git
Reference: 1.0.8
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/dpedley/swift-chess
* tag 1.0.8 -> FETCH_HEAD
HEAD is now at 14d9d98 Release prep (#42)
Cloned https://github.com/dpedley/swift-chess.git
Revision (git rev-parse @):
14d9d982c8a509efcfebf696c140b0ec397daf40
SUCCESS checkout https://github.com/dpedley/swift-chess.git at 1.0.8
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.4
Building package at path: $PWD
https://github.com/dpedley/swift-chess.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64
Building for debugging...
[Pre-planning 1 / 96]
[Planning deferred tasks]
[25 / 42]
[26 / 43] Logging
[35 / 70]
[39 / 70]
[41 / 70]
[42 / 70]
[53 / 70] Logging
[54 / 70] Logging
[60 / 71] Logging
[62 / 71] Chess
[72 / 154]
[75 / 154]
[83 / 154]
[85 / 154]
[86 / 154]
[91 / 154]
[94 / 154]
[97 / 154]
[103 / 154]
[106 / 154]
[108 / 154]
[109 / 154]
[120 / 154]
[122 / 154]
[123 / 154]
[126 / 154]
[128 / 154]
[131 / 154]
[133 / 154]
[134 / 154]
[145 / 154] Chess
[146 / 154] Chess
[151 / 154] Chess
Build complete! (12.58 sec)
Fetching https://github.com/apple/swift-log.git
[1/8092] Fetching swift-log
Fetched https://github.com/apple/swift-log.git (1.33s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.15.1 (1.96s)
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.15.1
warning: 'spi-builder-workspace': Invalid Exclude '/Users/admin/builder/spi-builder-workspace/Sources/Chess/PlayChess': File not found.
warning: 'spi-builder-workspace': Invalid Exclude '/Users/admin/builder/spi-builder-workspace/Sources/Chess/PlayChess': File not found.
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/PieceShape+Details.swift:14:13: [1;33mwarning: [1;39mstored property 'artwork' of 'Sendable'-conforming struct 'Details' has non-Sendable type 'PieceArtwork'; this is an error in the Swift 6 language mode[0;0m
[0;36m12 |[0;0m struct Details: Shape {
[0;36m13 |[0;0m var inset: CGFloat = 0.1
[0;36m14 |[0;0m let artwork: PieceArtwork
[0;36m|[0;0m `- [1;33mwarning: [1;39mstored property 'artwork' of 'Sendable'-conforming struct 'Details' has non-Sendable type 'PieceArtwork'; this is an error in the Swift 6 language mode[0;0m
[0;36m15 |[0;0m func path(in rect: CGRect) -> Path {
[0;36m16 |[0;0m return Path { path in
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/PieceArtwork/PieceArtwork.swift:11:15: [1;39mnote: [1;39mconsider making struct 'PieceArtwork' conform to the 'Sendable' protocol[0;0m
[0;36m9 |[0;0m import SwiftUI
[0;36m10 |[0;0m
[0;36m11 |[0;0m public struct PieceArtwork {
[0;36m|[0;0m `- [1;39mnote: [1;39mconsider making struct 'PieceArtwork' conform to the 'Sendable' protocol[0;0m
[0;36m12 |[0;0m let start: CGPoint
[0;36m13 |[0;0m let strokes: [Stroke]
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/PieceShape.swift:13:9: [1;33mwarning: [1;39mstored property 'artwork' of 'Sendable'-conforming struct 'PieceShape' has non-Sendable type 'PieceArtwork'; this is an error in the Swift 6 language mode[0;0m
[0;36m11 |[0;0m struct PieceShape: Shape {
[0;36m12 |[0;0m var inset: CGFloat = 0.1
[0;36m13 |[0;0m let artwork: PieceArtwork
[0;36m|[0;0m `- [1;33mwarning: [1;39mstored property 'artwork' of 'Sendable'-conforming struct 'PieceShape' has non-Sendable type 'PieceArtwork'; this is an error in the Swift 6 language mode[0;0m
[0;36m14 |[0;0m func path(in rect: CGRect) -> Path {
[0;36m15 |[0;0m return Path { path in
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/PieceArtwork/PieceArtwork.swift:11:15: [1;39mnote: [1;39mconsider making struct 'PieceArtwork' conform to the 'Sendable' protocol[0;0m
[0;36m9 |[0;0m import SwiftUI
[0;36m10 |[0;0m
[0;36m11 |[0;0m public struct PieceArtwork {
[0;36m|[0;0m `- [1;39mnote: [1;39mconsider making struct 'PieceArtwork' conform to the 'Sendable' protocol[0;0m
[0;36m12 |[0;0m let start: CGPoint
[0;36m13 |[0;0m let strokes: [Stroke]
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/Sound.swift:9:43: [1;33mwarning: [1;39musing 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead[0;0m [#deprecation]
[0;36m7 |[0;0m /// The sound is handled outside of this library, but for timing the optional
[0;36m8 |[0;0m /// methods are included here.
[0;36m9 |[0;0m public protocol ChessSoundEffectDelegate: class {
[0;36m|[0;0m `- [1;33mwarning: [1;39musing 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead[0;0m [#deprecation]
[0;36m10 |[0;0m func move()
[0;36m11 |[0;0m func capture()
/Users/admin/builder/spi-builder-workspace/Sources/Chess/Player/ChessRobot.swift:57:22: [1;33mwarning: [1;39mweak variable 'weakSelf' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m55 |[0;0m }
[0;36m56 |[0;0m let localBoard = game.board
[0;36m57 |[0;0m weak var weakSelf = self
[0;36m|[0;0m `- [1;33mwarning: [1;39mweak variable 'weakSelf' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m58 |[0;0m weak var weakDelegate = delegate
[0;36m59 |[0;0m let answerDate = Date(timeIntervalSinceNow: responseDelay)
/Users/admin/builder/spi-builder-workspace/Sources/Chess/Player/ChessRobot.swift:58:22: [1;33mwarning: [1;39mweak variable 'weakDelegate' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m56 |[0;0m let localBoard = game.board
[0;36m57 |[0;0m weak var weakSelf = self
[0;36m58 |[0;0m weak var weakDelegate = delegate
[0;36m|[0;0m `- [1;33mwarning: [1;39mweak variable 'weakDelegate' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m59 |[0;0m let answerDate = Date(timeIntervalSinceNow: responseDelay)
[0;36m60 |[0;0m Thread.detachNewThread {
/Users/admin/builder/spi-builder-workspace/Sources/Chess/Player/HumanPlayer.swift:31:26: [1;33mwarning: [1;39mweak variable 'weakDelegate' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m29 |[0;0m game.delegate?.gameAction(.makeMove(move: move))
[0;36m30 |[0;0m } else {
[0;36m31 |[0;0m weak var weakDelegate = game.delegate
[0;36m|[0;0m `- [1;33mwarning: [1;39mweak variable 'weakDelegate' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m32 |[0;0m chessBestMoveCallback = { move in
[0;36m33 |[0;0m guard let delegate = weakDelegate else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Chess/Robots/MindyMaxBot.swift:47:22: [1;33mwarning: [1;39mweak variable 'weakSelf' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m45 |[0;0m strategist.gameModel = board
[0;36m46 |[0;0m strategist.randomSource = GKARC4RandomSource()
[0;36m47 |[0;0m weak var weakSelf = self
[0;36m|[0;0m `- [1;33mwarning: [1;39mweak variable 'weakSelf' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m48 |[0;0m weak var weakDelegate = delegate
[0;36m49 |[0;0m Thread.detachNewThread {
/Users/admin/builder/spi-builder-workspace/Sources/Chess/Robots/MindyMaxBot.swift:48:22: [1;33mwarning: [1;39mweak variable 'weakDelegate' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m46 |[0;0m strategist.randomSource = GKARC4RandomSource()
[0;36m47 |[0;0m weak var weakSelf = self
[0;36m48 |[0;0m weak var weakDelegate = delegate
[0;36m|[0;0m `- [1;33mwarning: [1;39mweak variable 'weakDelegate' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m49 |[0;0m Thread.detachNewThread {
[0;36m50 |[0;0m guard let self = weakSelf, let delegate = weakDelegate else { return }
[#VariableNeverMutated]: <https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated>
[#WeakMutability]: <https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability>
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/PieceShape+Details.swift:14:13: [1;33mwarning: [1;39mstored property 'artwork' of 'Sendable'-conforming struct 'Details' has non-Sendable type 'PieceArtwork'; this is an error in the Swift 6 language mode[0;0m
[0;36m12 |[0;0m struct Details: Shape {
[0;36m13 |[0;0m var inset: CGFloat = 0.1
[0;36m14 |[0;0m let artwork: PieceArtwork
[0;36m|[0;0m `- [1;33mwarning: [1;39mstored property 'artwork' of 'Sendable'-conforming struct 'Details' has non-Sendable type 'PieceArtwork'; this is an error in the Swift 6 language mode[0;0m
[0;36m15 |[0;0m func path(in rect: CGRect) -> Path {
[0;36m16 |[0;0m return Path { path in
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/PieceArtwork/PieceArtwork.swift:11:15: [1;39mnote: [1;39mconsider making struct 'PieceArtwork' conform to the 'Sendable' protocol[0;0m
[0;36m9 |[0;0m import SwiftUI
[0;36m10 |[0;0m
[0;36m11 |[0;0m public struct PieceArtwork {
[0;36m|[0;0m `- [1;39mnote: [1;39mconsider making struct 'PieceArtwork' conform to the 'Sendable' protocol[0;0m
[0;36m12 |[0;0m let start: CGPoint
[0;36m13 |[0;0m let strokes: [Stroke]
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/PieceShape.swift:13:9: [1;33mwarning: [1;39mstored property 'artwork' of 'Sendable'-conforming struct 'PieceShape' has non-Sendable type 'PieceArtwork'; this is an error in the Swift 6 language mode[0;0m
[0;36m11 |[0;0m struct PieceShape: Shape {
[0;36m12 |[0;0m var inset: CGFloat = 0.1
[0;36m13 |[0;0m let artwork: PieceArtwork
[0;36m|[0;0m `- [1;33mwarning: [1;39mstored property 'artwork' of 'Sendable'-conforming struct 'PieceShape' has non-Sendable type 'PieceArtwork'; this is an error in the Swift 6 language mode[0;0m
[0;36m14 |[0;0m func path(in rect: CGRect) -> Path {
[0;36m15 |[0;0m return Path { path in
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/PieceArtwork/PieceArtwork.swift:11:15: [1;39mnote: [1;39mconsider making struct 'PieceArtwork' conform to the 'Sendable' protocol[0;0m
[0;36m9 |[0;0m import SwiftUI
[0;36m10 |[0;0m
[0;36m11 |[0;0m public struct PieceArtwork {
[0;36m|[0;0m `- [1;39mnote: [1;39mconsider making struct 'PieceArtwork' conform to the 'Sendable' protocol[0;0m
[0;36m12 |[0;0m let start: CGPoint
[0;36m13 |[0;0m let strokes: [Stroke]
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/PlayerTitleView.swift:21:18: [1;33mwarning: [1;39m'animation' was deprecated in macOS 12.0: Use withAnimation or animation(_:value:) instead.[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
[0;36m19 |[0;0m Image(systemName: player.iconName())
[0;36m20 |[0;0m .rotationEffect(Angle(degrees: self.thinking ? 360 : 0.0))
[0;36m21 |[0;0m .animation(self.thinking ? foreverAnimation : .default)
[0;36m|[0;0m `- [1;33mwarning: [1;39m'animation' was deprecated in macOS 12.0: Use withAnimation or animation(_:value:) instead.[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration\DeprecatedDeclaration]8;;\]
[0;36m22 |[0;0m Text("\(player.menuName())")
[0;36m23 |[0;0m }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
/Users/admin/builder/spi-builder-workspace/Sources/Chess/Store/ChessStore.swift:44:31: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m38 |[0;0m public func gameAction(_ action: Chess.GameAction) {
[0;36m39 |[0;0m // Process the message on the background, then sink back to the main thread.
[0;36m40 |[0;0m DispatchQueue.global().async {
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m41 |[0;0m self.gameSemaphore.wait()
[0;36m42 |[0;0m self.gamePublisher
[0;36m43 |[0;0m .receive(on: RunLoop.main)
[0;36m44 |[0;0m .sink { [weak self] newGame in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m45 |[0;0m self?.processGameChanges(newGame)
[0;36m46 |[0;0m self?.gameSemaphore.signal()
/Users/admin/builder/spi-builder-workspace/Sources/Chess/Store/ChessStore.swift:58:31: [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m52 |[0;0m public func environmentChange(_ change: ChessEnvironment.EnvironmentChange) {
[0;36m53 |[0;0m // Process the message on the background, then sink back to the main thread.
[0;36m54 |[0;0m DispatchQueue.global().async {
[0;36m|[0;0m |- [1;39mnote: [1;39m'self' implicitly strongly captured here[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39madd 'self' as a capture list item to silence[0;0m
[0;36m55 |[0;0m self.environmentSemaphore.wait()
[0;36m56 |[0;0m self.environmentPublisher
[0;36m57 |[0;0m .receive(on: RunLoop.main)
[0;36m58 |[0;0m .sink { [weak self] newEnvironment in
[0;36m|[0;0m |- [1;33mwarning: [1;39m'weak' ownership of capture 'self' differs from implicitly-captured strong reference in outer scope[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture\ImplicitStrongCapture]8;;\]
[0;36m|[0;0m `- [1;39mnote: [1;39mexplicitly assign the capture list item to silence[0;0m
[0;36m59 |[0;0m self?.processEnvironmentChanges(newEnvironment)
[0;36m60 |[0;0m self?.environmentSemaphore.signal()
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/BoardIconView.swift:36:29: [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m34 |[0;0m GeometryReader { geometry in
[0;36m35 |[0;0m VStack(alignment: .center, spacing: 0) {
[0;36m36 |[0;0m ForEach(0..<height) { yIdx in
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m37 |[0;0m HStack(alignment: .center, spacing: 0) {
[0;36m38 |[0;0m ForEach(0..<width) { xIdx in
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/BoardIconView.swift:38:37: [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m36 |[0;0m ForEach(0..<height) { yIdx in
[0;36m37 |[0;0m HStack(alignment: .center, spacing: 0) {
[0;36m38 |[0;0m ForEach(0..<width) { xIdx in
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m39 |[0;0m Rectangle()
[0;36m40 |[0;0m .fill( (yIdx + xIdx) % 2 == 0 ? color.dark : color.light )
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/ChessSettingsView.swift:49:67: [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m47 |[0;0m Picker(selection: $store.game.playerFactory.white,
[0;36m48 |[0;0m label: Text("White")) {
[0;36m49 |[0;0m ForEach(0 ..< Chess.playerFactory.players.count) {
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m50 |[0;0m PlayerTitleView(player: Chess.playerFactory.players[$0](.white))
[0;36m51 |[0;0m }
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/ChessSettingsView.swift:58:67: [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m56 |[0;0m Picker(selection: $store.game.playerFactory.black,
[0;36m57 |[0;0m label: Text("Black")) {
[0;36m58 |[0;0m ForEach(0 ..< Chess.playerFactory.players.count) {
[0;36m|[0;0m `- [1;33mwarning: [1;39mnon-constant range: argument must be an integer literal[0;0m
[0;36m59 |[0;0m PlayerTitleView(player: Chess.playerFactory.players[$0](.black))
[0;36m60 |[0;0m }
[#ImplicitStrongCapture]: <https://docs.swift.org/compiler/documentation/diagnostics/implicit-strong-capture>
/Users/admin/builder/spi-builder-workspace/Sources/Chess/UI/Sound.swift:9:43: [1;33mwarning: [1;39musing 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead[0;0m [#deprecation]
[0;36m7 |[0;0m /// The sound is handled outside of this library, but for timing the optional
[0;36m8 |[0;0m /// methods are included here.
[0;36m9 |[0;0m public protocol ChessSoundEffectDelegate: class {
[0;36m|[0;0m `- [1;33mwarning: [1;39musing 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead[0;0m [#deprecation]
[0;36m10 |[0;0m func move()
[0;36m11 |[0;0m func capture()
/Users/admin/builder/spi-builder-workspace/Sources/Chess/Robots/MontyCarlo.swift:47:22: [1;33mwarning: [1;39mweak variable 'weakSelf' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m45 |[0;0m strategist.gameModel = board
[0;36m46 |[0;0m strategist.randomSource = GKARC4RandomSource()
[0;36m47 |[0;0m weak var weakSelf = self
[0;36m|[0;0m `- [1;33mwarning: [1;39mweak variable 'weakSelf' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m48 |[0;0m weak var weakDelegate = delegate
[0;36m49 |[0;0m Thread.detachNewThread {
/Users/admin/builder/spi-builder-workspace/Sources/Chess/Robots/MontyCarlo.swift:48:22: [1;33mwarning: [1;39mweak variable 'weakDelegate' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m46 |[0;0m strategist.randomSource = GKARC4RandomSource()
[0;36m47 |[0;0m weak var weakSelf = self
[0;36m48 |[0;0m weak var weakDelegate = delegate
[0;36m|[0;0m `- [1;33mwarning: [1;39mweak variable 'weakDelegate' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\::]8;;https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability\WeakMutability]8;;\]
[0;36m49 |[0;0m Thread.detachNewThread {
[0;36m50 |[0;0m guard let self = weakSelf, let delegate = weakDelegate else { return }
[#VariableNeverMutated]: <https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated>
[#WeakMutability]: <https://docs.swift.org/compiler/documentation/diagnostics/weak-mutability>
Build complete.
{
"dependencies" : [
{
"identity" : "swift-log",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-log.git"
}
],
"manifest_display_name" : "swift-chess",
"name" : "swift-chess",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "11.0"
},
{
"name" : "ios",
"version" : "14.0"
}
],
"products" : [
{
"name" : "Chess",
"targets" : [
"Chess"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "ChessTests",
"module_type" : "SwiftTarget",
"name" : "ChessTests",
"path" : "Tests/ChessTests",
"sources" : [
"BoardAnalysisTests.swift",
"BoardFenTests.swift",
"ChessRobotTests.swift",
"ChessTests.swift",
"GameTests.swift",
"GameplayKitTests.swift",
"MoveTests.swift",
"NamedPositionTests.swift",
"PieceMoveTests.swift",
"PieceWeightTests.swift",
"PositionTests.swift",
"PromotionTests.swift",
"RankAndFileTests.swift",
"XCTestManifests.swift"
],
"target_dependencies" : [
"Chess"
],
"type" : "test"
},
{
"c99name" : "Chess",
"module_type" : "SwiftTarget",
"name" : "Chess",
"path" : "Sources/Chess",
"product_dependencies" : [
"Logging"
],
"product_memberships" : [
"Chess"
],
"sources" : [
"Board/Board+Analysis.swift",
"Board/Board+FEN.swift",
"Board/Board+Game.swift",
"Board/Board+Moves.swift",
"Board/Board.swift",
"Board/BoardVariant+GameplayKit.swift",
"Board/BoardVariant.swift",
"Board/Position+Names.swift",
"Board/Position.swift",
"Board/SingleMoveVariant.swift",
"Board/Square.swift",
"Chess.swift",
"Game/Game+Notation.swift",
"Game/Game+Piece.swift",
"Game/Game+Rules.swift",
"Game/Game.swift",
"Game/GameStatus.swift",
"Game/Move+Names.swift",
"Game/Move.swift",
"Game/Piece.swift",
"Game/PieceType.swift",
"Game/Side+Move.swift",
"Game/Side.swift",
"Game/SideEffect.swift",
"Online/Chess+URL.swift",
"Player/ChessRobot.swift",
"Player/HumanPlayer.swift",
"Player/Player.swift",
"Player/PlayerFactory.swift",
"Robots/CautiousBot.swift",
"Robots/GreedyBot.swift",
"Robots/MindyMaxBot.swift",
"Robots/MontyCarlo.swift",
"Robots/PlaybackBot.swift",
"Robots/Robot+Choices.swift",
"Robots/Robot+Names.swift",
"Robots/Robot+Previews.swift",
"Settings/ChessPreferences.swift",
"Store/ChessEnvironment.swift",
"Store/ChessStore+Preview.swift",
"Store/ChessStore.swift",
"Store/EnvironmentReducer.swift",
"Store/GameActions.swift",
"Store/GameReducer.swift",
"UI/BoardIconView.swift",
"UI/BoardView.swift",
"UI/ChessSettingsView.swift",
"UI/ChessThemes.swift",
"UI/Defaults.swift",
"UI/Extensions/CoreGraphics+RelativeShape.swift",
"UI/Extensions/GridItem+Chess.swift",
"UI/Interactions/PieceDrag.swift",
"UI/PieceArtwork/Bishop.swift",
"UI/PieceArtwork/King.swift",
"UI/PieceArtwork/Knight.swift",
"UI/PieceArtwork/Pawn.swift",
"UI/PieceArtwork/PieceArtwork+Drawing.swift",
"UI/PieceArtwork/PieceArtwork.swift",
"UI/PieceArtwork/Queen.swift",
"UI/PieceArtwork/Rook.swift",
"UI/PieceGlyph.swift",
"UI/PieceShape+Details.swift",
"UI/PieceShape.swift",
"UI/PieceStyle.swift",
"UI/PieceView.swift",
"UI/PlayAsButton.swift",
"UI/PlayPauseButton.swift",
"UI/PlayerTitleView.swift",
"UI/ResetBoardButton.swift",
"UI/Sound.swift",
"UI/SquareBackground.swift",
"UI/SquareMoveHighlight.swift",
"UI/SquareSelected.swift",
"UI/SquareTargeted.swift",
"UI/UI.swift"
],
"type" : "library"
}
],
"tools_version" : "5.3"
}
warning: 'spi-builder-workspace': Invalid Exclude '/Users/admin/builder/spi-builder-workspace/Sources/Chess/PlayChess': File not found.
Done.