The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of SimpleRoulette, reference main (e66a70), with Swift 6.0 for macOS (SPM) on 3 Nov 2024 17:20:58 UTC.

Swift 6 data race errors: 8

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

Build Log

========================================
RunAll
========================================
Builder version: 4.56.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/fummicc1/SimpleRoulette.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/fummicc1/SimpleRoulette
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at e66a70d place content according to its degree. (#48)
Cloned https://github.com/fummicc1/SimpleRoulette.git
Revision (git rev-parse @):
e66a70ddbe04a1e892c7a45e908e8e4d96126a0c
SUCCESS checkout https://github.com/fummicc1/SimpleRoulette.git at main
Fetching https://github.com/apple/swift-docc-plugin
[1/2038] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (1.25s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.0.0 (0.74s)
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.0.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": "simpleroulette",
      "name": "SimpleRoulette",
      "url": "https://github.com/fummicc1/SimpleRoulette.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SimpleRoulette",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/fummicc1/SimpleRoulette.git
[1/14888] Fetching simpleroulette
Fetched https://github.com/fummicc1/SimpleRoulette.git from cache (4.99s)
Creating working copy for https://github.com/fummicc1/SimpleRoulette.git
Working copy of https://github.com/fummicc1/SimpleRoulette.git resolved at main (e66a70d)
warning: '.resolve-product-dependencies': dependency 'simpleroulette' 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/fummicc1/SimpleRoulette.git
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
[1/1] Compiling plugin Swift-DocC
[2/2] Compiling plugin Swift-DocC Preview
Building for debugging...
[2/4] Write sources
[3/4] Write swift-version--7754E27361AE5C74.txt
[5/17] Compiling SimpleRoulette RouletteSpeed.swift
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:20:23: warning: static property 'slow' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
   :
18 |
19 |     /// Rotate 1 cycle per second.
20 |     public static let slow: Self = .init(floatLiteral: 360)
   |                       |- warning: static property 'slow' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'slow' 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
21 |     /// Rotate 2 cycle per second.
22 |     public static let normal: Self = .init(floatLiteral: 720)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:22:23: warning: static property 'normal' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
   :
20 |     public static let slow: Self = .init(floatLiteral: 360)
21 |     /// Rotate 2 cycle per second.
22 |     public static let normal: Self = .init(floatLiteral: 720)
   |                       |- warning: static property 'normal' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'normal' 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
23 |     /// Rotate 4 cycle per second.
24 |     public static let fast: Self = .init(floatLiteral: 1440)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:24:23: warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
   :
22 |     public static let normal: Self = .init(floatLiteral: 720)
23 |     /// Rotate 4 cycle per second.
24 |     public static let fast: Self = .init(floatLiteral: 1440)
   |                       |- warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'fast' 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
25 |     /// Not rotate at all.
26 |     public static let idle: Self = .init(floatLiteral: 0)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:26:23: warning: static property 'idle' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
   :
24 |     public static let fast: Self = .init(floatLiteral: 1440)
25 |     /// Not rotate at all.
26 |     public static let idle: Self = .init(floatLiteral: 0)
   |                       |- warning: static property 'idle' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'idle' 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 |     /// Decide speed randomly
[6/18] Compiling SimpleRoulette RouletteWorker.swift
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteWorker.swift:34:30: warning: capture of 'self' with non-sendable type 'RouletteWorker?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 9 | import SwiftUI
10 |
11 | public class RouletteWorker {
   |              `- note: class 'RouletteWorker' does not conform to the 'Sendable' protocol
12 |
13 |     private var value: Double = 0
   :
32 |
33 |         let timer = Timer(timeInterval: 0.001, repeats: true) { [weak self] _ in
34 |             guard let self = self else {
   |                              `- warning: capture of 'self' with non-sendable type 'RouletteWorker?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
35 |                 return
36 |             }
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteWorker.swift:37:27: warning: capture of 'speed' with non-sendable type 'RouletteSpeed' in a `@Sendable` closure; this is an error in the Swift 6 language mode
35 |                 return
36 |             }
37 |             self.value += speed.value * 0.001
   |                           `- warning: capture of 'speed' with non-sendable type 'RouletteSpeed' in a `@Sendable` closure; this is an error in the Swift 6 language mode
38 |             callback(self.value)
39 |
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:12:15: note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteWorker.swift:38:13: warning: capture of 'callback' with non-sendable type '(Double) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
36 |             }
37 |             self.value += speed.value * 0.001
38 |             callback(self.value)
   |             |- warning: capture of 'callback' with non-sendable type '(Double) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
   |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
39 |
40 |             if var automaticallyStopAfter = self.automaticallyStopAfter {
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteWorker.swift:43:21: warning: capture of 'onEnd' with non-sendable type '() -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
41 |                 automaticallyStopAfter -= 0.001
42 |                 if automaticallyStopAfter <= 0 {
43 |                     onEnd()
   |                     |- warning: capture of 'onEnd' with non-sendable type '() -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
44 |                 }
45 |                 self.automaticallyStopAfter = automaticallyStopAfter
[7/18] Compiling SimpleRoulette RouletteState.swift
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:26:23: warning: static property 'idle' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
   :
24 |     public static let fast: Self = .init(floatLiteral: 1440)
25 |     /// Not rotate at all.
26 |     public static let idle: Self = .init(floatLiteral: 0)
   |                       |- warning: static property 'idle' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'idle' 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 |     /// Decide speed randomly
[8/18] Compiling SimpleRoulette SlotRouletteWorker.swift
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteWorker.swift:28:13: warning: capture of 'self' with non-sendable type 'SlotRouletteWorker' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 9 | import SwiftUI
10 |
11 | public class SlotRouletteWorker {
   |              `- note: class 'SlotRouletteWorker' does not conform to the 'Sendable' protocol
12 |
13 |     private var value: Int = 0
   :
26 |         }
27 |         timer = Timer.scheduledTimer(withTimeInterval: 1 / speed.value, repeats: true, block: { timer in
28 |             self.value += 1
   |             `- warning: capture of 'self' with non-sendable type 'SlotRouletteWorker' in a `@Sendable` closure; this is an error in the Swift 6 language mode
29 |             callback(self.value)
30 |         })
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteWorker.swift:29:13: warning: capture of 'callback' with non-sendable type '(Int) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
27 |         timer = Timer.scheduledTimer(withTimeInterval: 1 / speed.value, repeats: true, block: { timer in
28 |             self.value += 1
29 |             callback(self.value)
   |             |- warning: capture of 'callback' with non-sendable type '(Int) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
   |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         })
31 |     }
[9/18] Compiling SimpleRoulette SlotRouletteView.swift
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteSpeed.swift:18:23: warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |
17 |     /// increase 1° per second.
18 |     public static var normal = SlotRouletteSpeed(floatLiteral: 360)
   |                       |- warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'normal' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'normal' 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
19 |     /// increase 0.5° per second.
20 |     public static var slow = SlotRouletteSpeed(floatLiteral: 180)
[10/18] Compiling SimpleRoulette SlotRouletteSpeed.swift
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteSpeed.swift:18:23: warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |
17 |     /// increase 1° per second.
18 |     public static var normal = SlotRouletteSpeed(floatLiteral: 360)
   |                       |- warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'normal' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'normal' 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
19 |     /// increase 0.5° per second.
20 |     public static var slow = SlotRouletteSpeed(floatLiteral: 180)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteSpeed.swift:20:23: warning: static property 'slow' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |     public static var normal = SlotRouletteSpeed(floatLiteral: 360)
19 |     /// increase 0.5° per second.
20 |     public static var slow = SlotRouletteSpeed(floatLiteral: 180)
   |                       |- warning: static property 'slow' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'slow' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'slow' 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
21 |     /// increase 2° per second.
22 |     public static var hight = SlotRouletteSpeed(floatLiteral: 720)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteSpeed.swift:22:23: warning: static property 'hight' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 |     public static var slow = SlotRouletteSpeed(floatLiteral: 180)
21 |     /// increase 2° per second.
22 |     public static var hight = SlotRouletteSpeed(floatLiteral: 720)
   |                       |- warning: static property 'hight' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'hight' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'hight' 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
23 |
24 |     /// Decide speed randomly in range [0.5°, 2°] per second.
[11/18] Compiling SimpleRoulette PartData.swift
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/PartData.swift:64:25: warning: static property 'currentIndex' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 62 | public struct PartData: Identifiable, Hashable {
 63 |
 64 |     internal static var currentIndex: Int = 0
    |                         |- warning: static property 'currentIndex' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                         |- note: convert 'currentIndex' to a 'let' constant to make 'Sendable' shared state immutable
    |                         |- note: annotate 'currentIndex' 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
 65 |
 66 |     public static func == (lhs: PartData, rhs: PartData) -> Bool {
[12/18] Compiling SimpleRoulette RouletteView.swift
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteSpeed.swift:18:23: warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |
17 |     /// increase 1° per second.
18 |     public static var normal = SlotRouletteSpeed(floatLiteral: 360)
   |                       |- warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'normal' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'normal' 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
19 |     /// increase 0.5° per second.
20 |     public static var slow = SlotRouletteSpeed(floatLiteral: 180)
[13/18] Compiling SimpleRoulette SlotRouletteModel.swift
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteSpeed.swift:18:23: warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |
17 |     /// increase 1° per second.
18 |     public static var normal = SlotRouletteSpeed(floatLiteral: 360)
   |                       |- warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'normal' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'normal' 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
19 |     /// increase 0.5° per second.
20 |     public static var slow = SlotRouletteSpeed(floatLiteral: 180)
[14/18] Emitting module SimpleRoulette
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteSpeed.swift:18:23: warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
16 |
17 |     /// increase 1° per second.
18 |     public static var normal = SlotRouletteSpeed(floatLiteral: 360)
   |                       |- warning: static property 'normal' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'normal' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'normal' 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
19 |     /// increase 0.5° per second.
20 |     public static var slow = SlotRouletteSpeed(floatLiteral: 180)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteSpeed.swift:20:23: warning: static property 'slow' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |     public static var normal = SlotRouletteSpeed(floatLiteral: 360)
19 |     /// increase 0.5° per second.
20 |     public static var slow = SlotRouletteSpeed(floatLiteral: 180)
   |                       |- warning: static property 'slow' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'slow' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'slow' 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
21 |     /// increase 2° per second.
22 |     public static var hight = SlotRouletteSpeed(floatLiteral: 720)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Slot/SlotRouletteSpeed.swift:22:23: warning: static property 'hight' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
20 |     public static var slow = SlotRouletteSpeed(floatLiteral: 180)
21 |     /// increase 2° per second.
22 |     public static var hight = SlotRouletteSpeed(floatLiteral: 720)
   |                       |- warning: static property 'hight' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'hight' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'hight' 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
23 |
24 |     /// Decide speed randomly in range [0.5°, 2°] per second.
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/PartData.swift:64:25: warning: static property 'currentIndex' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 62 | public struct PartData: Identifiable, Hashable {
 63 |
 64 |     internal static var currentIndex: Int = 0
    |                         |- warning: static property 'currentIndex' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                         |- note: convert 'currentIndex' to a 'let' constant to make 'Sendable' shared state immutable
    |                         |- note: annotate 'currentIndex' 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
 65 |
 66 |     public static func == (lhs: PartData, rhs: PartData) -> Bool {
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:20:23: warning: static property 'slow' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
   :
18 |
19 |     /// Rotate 1 cycle per second.
20 |     public static let slow: Self = .init(floatLiteral: 360)
   |                       |- warning: static property 'slow' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'slow' 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
21 |     /// Rotate 2 cycle per second.
22 |     public static let normal: Self = .init(floatLiteral: 720)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:22:23: warning: static property 'normal' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
   :
20 |     public static let slow: Self = .init(floatLiteral: 360)
21 |     /// Rotate 2 cycle per second.
22 |     public static let normal: Self = .init(floatLiteral: 720)
   |                       |- warning: static property 'normal' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'normal' 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
23 |     /// Rotate 4 cycle per second.
24 |     public static let fast: Self = .init(floatLiteral: 1440)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:24:23: warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
   :
22 |     public static let normal: Self = .init(floatLiteral: 720)
23 |     /// Rotate 4 cycle per second.
24 |     public static let fast: Self = .init(floatLiteral: 1440)
   |                       |- warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'fast' 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
25 |     /// Not rotate at all.
26 |     public static let idle: Self = .init(floatLiteral: 0)
/Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Sources/Types/RouletteSpeed.swift:26:23: warning: static property 'idle' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
10 | /// - ``RouletteSpeed/idle``: never rotates.
11 | /// - ``RouletteSpeed/random()``: decide the speed in random.
12 | public struct RouletteSpeed: ExpressibleByFloatLiteral, Hashable {
   |               `- note: consider making struct 'RouletteSpeed' conform to the 'Sendable' protocol
13 |     var value: Double
14 |
   :
24 |     public static let fast: Self = .init(floatLiteral: 1440)
25 |     /// Not rotate at all.
26 |     public static let idle: Self = .init(floatLiteral: 0)
   |                       |- warning: static property 'idle' is not concurrency-safe because non-'Sendable' type 'RouletteSpeed' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: annotate 'idle' 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 |     /// Decide speed randomly
[15/18] Compiling SimpleRoulette Color+Ex.swift
[16/18] Compiling SimpleRoulette RouletteInternalView.swift
[17/18] Compiling SimpleRoulette RouletteModel.swift
[18/18] Compiling SimpleRoulette RoulettePart.swift
Build complete! (34.42s)
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/Sources/SimpleRoulette/Info.plist
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-docc-plugin"
    }
  ],
  "manifest_display_name" : "SimpleRoulette",
  "name" : "SimpleRoulette",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "14.0"
    },
    {
      "name" : "macos",
      "version" : "11.0"
    }
  ],
  "products" : [
    {
      "name" : "SimpleRoulette",
      "targets" : [
        "SimpleRoulette"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SimpleRouletteTests",
      "module_type" : "SwiftTarget",
      "name" : "SimpleRouletteTests",
      "path" : "Tests/SimpleRouletteTests",
      "sources" : [
        "MockTarget.swift",
        "RouletteDataDelegateMock.swift",
        "Types/PartDataTests.swift",
        "Types/RouletteStateTests.swift"
      ],
      "target_dependencies" : [
        "SimpleRoulette"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SimpleRoulette",
      "module_type" : "SwiftTarget",
      "name" : "SimpleRoulette",
      "path" : "Sources/SimpleRoulette",
      "product_memberships" : [
        "SimpleRoulette"
      ],
      "sources" : [
        "Sources/Ex/Color+Ex.swift",
        "Sources/Pie/RouletteInternalView.swift",
        "Sources/Pie/RouletteModel.swift",
        "Sources/Pie/RoulettePart.swift",
        "Sources/Pie/RouletteView.swift",
        "Sources/Slot/SlotRouletteModel.swift",
        "Sources/Slot/SlotRouletteSpeed.swift",
        "Sources/Slot/SlotRouletteView.swift",
        "Sources/Slot/SlotRouletteWorker.swift",
        "Sources/Types/PartData.swift",
        "Sources/Types/RouletteSpeed.swift",
        "Sources/Types/RouletteState.swift",
        "Sources/Types/RouletteWorker.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.5"
}
Done.