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 RPiLight, reference main (c546e2), with Swift 6.0 for macOS (SPM) on 2 Nov 2024 04:11:23 UTC.

Swift 6 data race errors: 6

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/kaiede/rpilight.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/kaiede/rpilight
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at c546e24 Fix Bootstrap Script for Development Only Use
Cloned https://github.com/kaiede/rpilight.git
Revision (git rev-parse @):
c546e24b00bd0c9bfe9c2f3dc4467f2d388f8b38
SUCCESS checkout https://github.com/kaiede/rpilight.git at main
Fetching https://github.com/Kaiede/SingleBoard.git
Fetching https://github.com/jpsim/Yams.git
Fetching https://github.com/Kaiede/MCP4725.git
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/kareman/Moderator.git
Fetching https://github.com/Kaiede/PCA9685.git
Fetching https://github.com/Kaiede/Ephemeris.git
[3/70] Fetching pca9685
[71/98] Fetching pca9685, mcp4725
[99/756] Fetching pca9685, mcp4725, moderator
[165/966] Fetching pca9685, mcp4725, moderator, ephemeris
[258/1243] Fetching pca9685, mcp4725, moderator, ephemeris, singleboard
[981/4903] Fetching pca9685, mcp4725, moderator, ephemeris, singleboard, swift-log
[1228/14805] Fetching pca9685, mcp4725, moderator, ephemeris, singleboard, swift-log, yams
Fetched https://github.com/Kaiede/SingleBoard.git from cache (0.81s)
[988/14528] Fetching pca9685, mcp4725, moderator, ephemeris, swift-log, yams
Fetched https://github.com/Kaiede/Ephemeris.git from cache (1.87s)
Fetched https://github.com/Kaiede/PCA9685.git from cache (1.87s)
Fetched https://github.com/kareman/Moderator.git from cache (1.87s)
Fetched https://github.com/Kaiede/MCP4725.git from cache (1.91s)
Fetched https://github.com/jpsim/Yams.git from cache (1.91s)
Fetched https://github.com/apple/swift-log.git from cache (1.91s)
Computing version for https://github.com/Kaiede/SingleBoard.git
Computed https://github.com/Kaiede/SingleBoard.git at 1.0.0 (2.81s)
Computing version for https://github.com/Kaiede/MCP4725.git
Computed https://github.com/Kaiede/MCP4725.git at 0.1.0 (0.70s)
Computing version for https://github.com/Kaiede/PCA9685.git
Computed https://github.com/Kaiede/PCA9685.git at 3.0.0 (0.69s)
Computing version for https://github.com/Kaiede/Ephemeris.git
Computed https://github.com/Kaiede/Ephemeris.git at 1.0.2 (0.67s)
Computing version for https://github.com/jpsim/Yams.git
Computed https://github.com/jpsim/Yams.git at 2.0.0 (0.68s)
Computing version for https://github.com/kareman/Moderator.git
Computed https://github.com/kareman/Moderator.git at 0.5.1 (0.69s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.1 (0.49s)
Creating working copy for https://github.com/jpsim/Yams.git
Working copy of https://github.com/jpsim/Yams.git resolved at 2.0.0
Creating working copy for https://github.com/kareman/Moderator.git
Working copy of https://github.com/kareman/Moderator.git resolved at 0.5.1
Creating working copy for https://github.com/Kaiede/SingleBoard.git
Working copy of https://github.com/Kaiede/SingleBoard.git resolved at 1.0.0
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.1
Creating working copy for https://github.com/Kaiede/PCA9685.git
Working copy of https://github.com/Kaiede/PCA9685.git resolved at 3.0.0
Creating working copy for https://github.com/Kaiede/Ephemeris.git
Working copy of https://github.com/Kaiede/Ephemeris.git resolved at 1.0.2
Creating working copy for https://github.com/Kaiede/MCP4725.git
Working copy of https://github.com/Kaiede/MCP4725.git resolved at 0.1.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": "rpilight",
      "name": "RPiLight",
      "url": "https://github.com/kaiede/rpilight.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/rpilight",
      "dependencies": [
        {
          "identity": "moderator",
          "name": "Moderator",
          "url": "https://github.com/kareman/Moderator.git",
          "version": "0.5.1",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Moderator",
          "dependencies": [
          ]
        },
        {
          "identity": "yams",
          "name": "Yams",
          "url": "https://github.com/jpsim/Yams.git",
          "version": "2.0.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Yams",
          "dependencies": [
          ]
        },
        {
          "identity": "swift-log",
          "name": "swift-log",
          "url": "https://github.com/apple/swift-log.git",
          "version": "1.6.1",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-log",
          "dependencies": [
          ]
        },
        {
          "identity": "ephemeris",
          "name": "Ephemeris",
          "url": "https://github.com/Kaiede/Ephemeris.git",
          "version": "1.0.2",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Ephemeris",
          "dependencies": [
          ]
        },
        {
          "identity": "pca9685",
          "name": "PCA9685",
          "url": "https://github.com/Kaiede/PCA9685.git",
          "version": "3.0.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/PCA9685",
          "dependencies": [
            {
              "identity": "singleboard",
              "name": "SingleBoard",
              "url": "https://github.com/Kaiede/SingleBoard.git",
              "version": "1.0.0",
              "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SingleBoard",
              "dependencies": [
              ]
            }
          ]
        },
        {
          "identity": "mcp4725",
          "name": "MCP4725",
          "url": "https://github.com/Kaiede/MCP4725.git",
          "version": "0.1.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/MCP4725",
          "dependencies": [
            {
              "identity": "singleboard",
              "name": "SingleBoard",
              "url": "https://github.com/Kaiede/SingleBoard.git",
              "version": "1.0.0",
              "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SingleBoard",
              "dependencies": [
              ]
            }
          ]
        },
        {
          "identity": "singleboard",
          "name": "SingleBoard",
          "url": "https://github.com/Kaiede/SingleBoard.git",
          "version": "1.0.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SingleBoard",
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/kaiede/rpilight.git
[1/3047] Fetching rpilight
Fetched https://github.com/kaiede/rpilight.git from cache (0.99s)
Fetching https://github.com/apple/swift-log.git from cache
Fetching https://github.com/jpsim/Yams.git from cache
Fetching https://github.com/Kaiede/PCA9685.git from cache
Fetching https://github.com/kareman/Moderator.git from cache
Fetching https://github.com/Kaiede/MCP4725.git from cache
Fetching https://github.com/Kaiede/SingleBoard.git from cache
Fetching https://github.com/Kaiede/Ephemeris.git from cache
Fetched https://github.com/Kaiede/Ephemeris.git from cache (0.54s)
Fetched https://github.com/Kaiede/PCA9685.git from cache (0.62s)
Fetched https://github.com/kareman/Moderator.git from cache (0.62s)
Fetched https://github.com/jpsim/Yams.git from cache (0.62s)
Fetched https://github.com/apple/swift-log.git from cache (0.62s)
Fetched https://github.com/Kaiede/SingleBoard.git from cache (0.62s)
Fetched https://github.com/Kaiede/MCP4725.git from cache (0.62s)
Computing version for https://github.com/Kaiede/SingleBoard.git
Computed https://github.com/Kaiede/SingleBoard.git at 1.0.0 (0.04s)
Computing version for https://github.com/Kaiede/MCP4725.git
Computed https://github.com/Kaiede/MCP4725.git at 0.1.0 (0.03s)
Computing version for https://github.com/Kaiede/PCA9685.git
Computed https://github.com/Kaiede/PCA9685.git at 3.0.0 (0.04s)
Computing version for https://github.com/Kaiede/Ephemeris.git
Computed https://github.com/Kaiede/Ephemeris.git at 1.0.2 (0.03s)
Computing version for https://github.com/jpsim/Yams.git
Computed https://github.com/jpsim/Yams.git at 2.0.0 (0.04s)
Computing version for https://github.com/kareman/Moderator.git
Computed https://github.com/kareman/Moderator.git at 0.5.1 (0.04s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.1 (0.03s)
Creating working copy for https://github.com/kareman/Moderator.git
Working copy of https://github.com/kareman/Moderator.git resolved at 0.5.1
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.1
Creating working copy for https://github.com/Kaiede/SingleBoard.git
Working copy of https://github.com/Kaiede/SingleBoard.git resolved at 1.0.0
Creating working copy for https://github.com/jpsim/Yams.git
Working copy of https://github.com/jpsim/Yams.git resolved at 2.0.0
Creating working copy for https://github.com/Kaiede/PCA9685.git
Working copy of https://github.com/Kaiede/PCA9685.git resolved at 3.0.0
Creating working copy for https://github.com/Kaiede/MCP4725.git
Working copy of https://github.com/Kaiede/MCP4725.git resolved at 0.1.0
Creating working copy for https://github.com/kaiede/rpilight.git
Working copy of https://github.com/kaiede/rpilight.git resolved at main (c546e24)
Creating working copy for https://github.com/Kaiede/Ephemeris.git
Working copy of https://github.com/Kaiede/Ephemeris.git resolved at 1.0.2
Found 7 product dependencies
  - Moderator
  - Yams
  - swift-log
  - Ephemeris
  - PCA9685
  - MCP4725
  - SingleBoard
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/kaiede/rpilight.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
Building for debugging...
[0/21] Write sources
[6/21] Write RPiLight-entitlement.plist
[6/21] Write sources
[11/21] Write swift-version--7754E27361AE5C74.txt
[12/47] Compiling writer.c
[13/47] Compiling parser.c
[14/47] Compiling api.c
[15/47] Compiling reader.c
[16/47] Compiling emitter.c
[17/47] Compiling scanner.c
[19/63] Compiling Logging LogHandler.swift
[20/63] Compiling Logging MetadataProvider.swift
[21/63] Emitting module Logging
[22/63] Compiling Logging Logging.swift
[23/63] Compiling Logging Locks.swift
[24/63] Compiling Moderator SwiftCompat.swift
[25/63] Compiling SingleBoard Pine_Board.swift
[26/63] Emitting module SingleBoard
[27/63] Compiling SingleBoard Chip_Board.swift
[28/63] Compiling Moderator Parsers.swift
[29/63] Compiling Yams Emitter.swift
[30/63] Compiling Yams Encoder.swift
[31/64] Emitting module Yams
[32/64] Compiling Yams Constructor.swift
[33/64] Compiling Yams Decoder.swift
[34/64] Compiling Yams shim.swift
[35/64] Compiling Moderator Moderator.swift
[36/64] Emitting module Moderator
[37/64] Compiling Ephemeris Solar.swift
[38/64] Compiling SingleBoard SingleBoard.swift
[39/64] Compiling Yams Tag.swift
[40/64] Compiling Yams YamlError.swift
[41/64] Compiling Yams Node.swift
[42/64] Compiling Yams Parser.swift
[43/64] Compiling Yams Mark.swift
[44/64] Compiling Yams Node.Mapping.swift
[45/64] Compiling Yams String+Yams.swift
[46/64] Compiling Yams Node.Scalar.swift
[47/64] Compiling Yams Node.Sequence.swift
[48/64] Compiling Yams Representer.swift
[49/64] Compiling Yams Resolver.swift
[50/64] Compiling SingleBoard Raspberry_Board.swift
[51/64] Compiling SingleBoard Raspberry_PWM.swift
[52/64] Emitting module Ephemeris
[53/64] Compiling Ephemeris Date.swift
[54/64] Compiling Ephemeris Lunar.swift
[55/64] Compiling Ephemeris Coordinates.swift
[56/64] Compiling Ephemeris Body.swift
[57/64] Compiling Ephemeris Matrix.swift
[58/64] Compiling SingleBoard GPIO.swift
[59/64] Compiling SingleBoard Extensions.swift
[60/64] Compiling SingleBoard Raspberry_Registers.swift
[61/64] Compiling SingleBoard I2C.swift
[62/68] Compiling PCA9685 PCA9685.swift
[63/68] Emitting module PCA9685
[64/68] Emitting module MCP4725
[65/68] Compiling MCP4725 MCP4725.swift
[66/77] Emitting module LED
[67/77] Compiling LED RaspberryPi.swift
[68/77] Compiling LED PCA9685.swift
[69/77] Compiling LED LEDModule.swift
[70/77] Compiling LED Simulated.swift
[71/77] Compiling LED Types.swift
[72/77] Compiling LED MCP4725.swift
[73/77] Compiling LED Utilities.swift
[74/77] Compiling LED LEDModule_Internal.swift
[75/89] Compiling Service ServiceDescription.swift
[76/90] Compiling Service SwiftExtensions.swift
[77/90] Compiling Service ScheduleDescription.swift
[78/90] Emitting module Service
[79/90] Compiling Service LogUtilities.swift
[80/90] Compiling Service ChannelPoint.swift
[81/90] Compiling Service DayTime.swift
[82/90] Compiling Service Behavior.swift
[83/90] Compiling Service ChannelController.swift
[84/90] Compiling Service Layer.swift
[85/90] Compiling Service LightController.swift
/Users/admin/builder/spi-builder-workspace/Sources/Service/LightController.swift:181:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
179 |     public func setEvent(controller: EventController) {
180 |         self.queue.async {
181 |             self.eventControllers[controller.token] = controller
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
182 |
183 |             if self.isRunning {
/Users/admin/builder/spi-builder-workspace/Sources/Service/LightController.swift:181:35: warning: capture of 'controller' with non-sendable type 'any EventController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
179 |     public func setEvent(controller: EventController) {
180 |         self.queue.async {
181 |             self.eventControllers[controller.token] = controller
    |                                   `- warning: capture of 'controller' with non-sendable type 'any EventController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
182 |
183 |             if self.isRunning {
/Users/admin/builder/spi-builder-workspace/Sources/Service/Event.swift:36:17: note: protocol 'EventController' does not conform to the 'Sendable' protocol
 34 | }
 35 |
 36 | public protocol EventController {
    |                 `- note: protocol 'EventController' does not conform to the 'Sendable' protocol
 37 |     var time: DayTime { get }
 38 |     var token: EventId { get }
/Users/admin/builder/spi-builder-workspace/Sources/Service/LightController.swift:196:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
194 |         self.queue.async {
195 |             log.info("Starting Light Controller")
196 |             self.isRunning = true
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
197 |             self.isRefreshOneShot = true
198 |             self.fireRefresh()
/Users/admin/builder/spi-builder-workspace/Sources/Service/LightController.swift:207:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
205 |     public func setStopHandler(_ closure: StopClosure?) {
206 |         self.queue.async {
207 |             self.stopClosure = closure
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
208 |         }
209 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Service/LightController.swift:207:32: warning: capture of 'closure' with non-sendable type 'StopClosure?' (aka 'Optional<(LightController) -> ()>') in a `@Sendable` closure; this is an error in the Swift 6 language mode
205 |     public func setStopHandler(_ closure: StopClosure?) {
206 |         self.queue.async {
207 |             self.stopClosure = closure
    |                                |- warning: capture of 'closure' with non-sendable type 'StopClosure?' (aka 'Optional<(LightController) -> ()>') 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'
208 |         }
209 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Service/LightController.swift:213:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
211 |     public func stop() {
212 |         self.queue.async {
213 |             self.stopInternal()
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
214 |         }
215 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Service/LightController.swift:219:16: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
217 |     public func invalidateRefreshTimer() {
218 |         self.queue.async {
219 |             if self.isRunning {
    |                `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
220 |                 let now = Date()
221 |                 self.scheduleRefresh(forDate: now)
/Users/admin/builder/spi-builder-workspace/Sources/Service/LightController.swift:279:37: warning: capture of 'self' with non-sendable type 'LightController?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
277 |             self.stopEventInternal()
278 |             DispatchQueue.main.async { [weak self] in
279 |                 if let controller = self {
    |                                     `- warning: capture of 'self' with non-sendable type 'LightController?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
280 |                     controller.stopClosure?(controller)
281 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Service/LightController.swift:279:37: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
277 |             self.stopEventInternal()
278 |             DispatchQueue.main.async { [weak self] in
279 |                 if let controller = self {
    |                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
280 |                     controller.stopClosure?(controller)
281 |                 }
[86/90] Compiling Service Event.swift
[87/90] Compiling Service Timers.swift
[88/95] Compiling RPiLight main.swift
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/main.swift:55:43: warning: converting non-sendable function value to '@Sendable (String) -> any LogHandler' may introduce data races
53 |
54 | // Logger Object
55 | LoggingSystem.bootstrap(ServiceLogHandler.init)
   |                                           `- warning: converting non-sendable function value to '@Sendable (String) -> any LogHandler' may introduce data races
56 | let log = Logger(label: "rpilight")
57 |
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
46 |     }
47 |
48 |     static var logLevelOverride: Logger.Level?
   |                |- warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'logLevelOverride' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'logLevelOverride' 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
49 |     private var handlerLogLevel: Logger.Level = .info
50 |     var logLevel: Logger.Level {
[89/95] Compiling RPiLight ServiceLogHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:32:24: warning: static property 'stdOut' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |
31 | class ServiceLogHandler: LogHandler {
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
   |                        |- warning: static property 'stdOut' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'stdOut' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'stdOut' 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
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
34 |
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:33:24: warning: static property 'stdErr' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | class ServiceLogHandler: LogHandler {
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
   |                        |- warning: static property 'stdErr' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'stdErr' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'stdErr' 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
34 |
35 |     private static var time = DateFormatter(currentWithFormat: "HH:mm:ss.SSS")
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:35:24: warning: static property 'time' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
34 |
35 |     private static var time = DateFormatter(currentWithFormat: "HH:mm:ss.SSS")
   |                        |- warning: static property 'time' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'time' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'time' 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
36 |
37 |     init(label: String) {
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
46 |     }
47 |
48 |     static var logLevelOverride: Logger.Level?
   |                |- warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'logLevelOverride' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'logLevelOverride' 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
49 |     private var handlerLogLevel: Logger.Level = .info
50 |     var logLevel: Logger.Level {
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:31:7: warning: non-final class 'ServiceLogHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
29 | // swiftlint:disable function_parameter_count
30 |
31 | class ServiceLogHandler: LogHandler {
   |       `- warning: non-final class 'ServiceLogHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:41:17: warning: stored property 'label' of 'Sendable'-conforming class 'ServiceLogHandler' is mutable; this is an error in the Swift 6 language mode
39 |     }
40 |
41 |     private var label: String
   |                 `- warning: stored property 'label' of 'Sendable'-conforming class 'ServiceLogHandler' is mutable; this is an error in the Swift 6 language mode
42 |     var metadata: Logger.Metadata = [:]
43 |     subscript(metadataKey key: String) -> Logger.Metadata.Value? {
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:31:7: warning: deprecated default implementation is used to satisfy instance method 'log(level:message:metadata:source:file:function:line:)' required by protocol 'LogHandler': You should implement this method instead of using the default implementation
29 | // swiftlint:disable function_parameter_count
30 |
31 | class ServiceLogHandler: LogHandler {
   |       `- warning: deprecated default implementation is used to satisfy instance method 'log(level:message:metadata:source:file:function:line:)' required by protocol 'LogHandler': You should implement this method instead of using the default implementation
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-log/Sources/Logging/LogHandler.swift:191:17: note: 'log(level:message:metadata:source:file:function:line:)' declared here
133 |     ///     - function: The function the log line was emitted from.
134 |     ///     - line: The line the log message was emitted from.
135 |     func log(level: Logger.Level,
    |          `- note: requirement 'log(level:message:metadata:source:file:function:line:)' declared here
136 |              message: Logger.Message,
137 |              metadata: Logger.Metadata?,
    :
189 | extension LogHandler {
190 |     @available(*, deprecated, message: "You should implement this method instead of using the default implementation")
191 |     public func log(level: Logger.Level,
    |                 `- note: 'log(level:message:metadata:source:file:function:line:)' declared here
192 |                     message: Logger.Message,
193 |                     metadata: Logger.Metadata?,
[90/95] Compiling RPiLight ServiceGlue.swift
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceGlue.swift:54:1: warning: extension declares a conformance of imported type 'LEDChannel' to imported protocol 'Channel'; this will not behave correctly if the owners of 'LED' introduce this conformance in the future
52 | }
53 |
54 | extension LEDChannel: Channel {}
   | |- warning: extension declares a conformance of imported type 'LEDChannel' to imported protocol 'Channel'; this will not behave correctly if the owners of 'LED' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
55 |
56 | extension ServiceControllerDescription: LEDModuleConfig {}
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceGlue.swift:56:1: warning: extension declares a conformance of imported type 'ServiceControllerDescription' to imported protocol 'LEDModuleConfig'; this will not behave correctly if the owners of 'Service' introduce this conformance in the future
54 | extension LEDChannel: Channel {}
55 |
56 | extension ServiceControllerDescription: LEDModuleConfig {}
   | |- warning: extension declares a conformance of imported type 'ServiceControllerDescription' to imported protocol 'LEDModuleConfig'; this will not behave correctly if the owners of 'Service' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
57 |
58 | // MARK: Casting Support between Logging and Service types
[91/95] Emitting module RPiLight
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/main.swift:55:43: warning: converting non-sendable function value to '@Sendable (String) -> any LogHandler' may introduce data races
53 |
54 | // Logger Object
55 | LoggingSystem.bootstrap(ServiceLogHandler.init)
   |                                           `- warning: converting non-sendable function value to '@Sendable (String) -> any LogHandler' may introduce data races
56 | let log = Logger(label: "rpilight")
57 |
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
46 |     }
47 |
48 |     static var logLevelOverride: Logger.Level?
   |                |- warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'logLevelOverride' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'logLevelOverride' 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
49 |     private var handlerLogLevel: Logger.Level = .info
50 |     var logLevel: Logger.Level {
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceGlue.swift:54:1: warning: extension declares a conformance of imported type 'LEDChannel' to imported protocol 'Channel'; this will not behave correctly if the owners of 'LED' introduce this conformance in the future
52 | }
53 |
54 | extension LEDChannel: Channel {}
   | |- warning: extension declares a conformance of imported type 'LEDChannel' to imported protocol 'Channel'; this will not behave correctly if the owners of 'LED' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
55 |
56 | extension ServiceControllerDescription: LEDModuleConfig {}
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceGlue.swift:56:1: warning: extension declares a conformance of imported type 'ServiceControllerDescription' to imported protocol 'LEDModuleConfig'; this will not behave correctly if the owners of 'Service' introduce this conformance in the future
54 | extension LEDChannel: Channel {}
55 |
56 | extension ServiceControllerDescription: LEDModuleConfig {}
   | |- warning: extension declares a conformance of imported type 'ServiceControllerDescription' to imported protocol 'LEDModuleConfig'; this will not behave correctly if the owners of 'Service' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
57 |
58 | // MARK: Casting Support between Logging and Service types
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:32:24: warning: static property 'stdOut' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |
31 | class ServiceLogHandler: LogHandler {
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
   |                        |- warning: static property 'stdOut' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'stdOut' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'stdOut' 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
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
34 |
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:33:24: warning: static property 'stdErr' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | class ServiceLogHandler: LogHandler {
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
   |                        |- warning: static property 'stdErr' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'stdErr' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'stdErr' 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
34 |
35 |     private static var time = DateFormatter(currentWithFormat: "HH:mm:ss.SSS")
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:35:24: warning: static property 'time' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
34 |
35 |     private static var time = DateFormatter(currentWithFormat: "HH:mm:ss.SSS")
   |                        |- warning: static property 'time' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'time' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'time' 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
36 |
37 |     init(label: String) {
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:31:7: warning: non-final class 'ServiceLogHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
29 | // swiftlint:disable function_parameter_count
30 |
31 | class ServiceLogHandler: LogHandler {
   |       `- warning: non-final class 'ServiceLogHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:41:17: warning: stored property 'label' of 'Sendable'-conforming class 'ServiceLogHandler' is mutable; this is an error in the Swift 6 language mode
39 |     }
40 |
41 |     private var label: String
   |                 `- warning: stored property 'label' of 'Sendable'-conforming class 'ServiceLogHandler' is mutable; this is an error in the Swift 6 language mode
42 |     var metadata: Logger.Metadata = [:]
43 |     subscript(metadataKey key: String) -> Logger.Metadata.Value? {
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:31:7: warning: deprecated default implementation is used to satisfy instance method 'log(level:message:metadata:source:file:function:line:)' required by protocol 'LogHandler': You should implement this method instead of using the default implementation
29 | // swiftlint:disable function_parameter_count
30 |
31 | class ServiceLogHandler: LogHandler {
   |       `- warning: deprecated default implementation is used to satisfy instance method 'log(level:message:metadata:source:file:function:line:)' required by protocol 'LogHandler': You should implement this method instead of using the default implementation
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-log/Sources/Logging/LogHandler.swift:191:17: note: 'log(level:message:metadata:source:file:function:line:)' declared here
133 |     ///     - function: The function the log line was emitted from.
134 |     ///     - line: The line the log message was emitted from.
135 |     func log(level: Logger.Level,
    |          `- note: requirement 'log(level:message:metadata:source:file:function:line:)' declared here
136 |              message: Logger.Message,
137 |              metadata: Logger.Metadata?,
    :
189 | extension LogHandler {
190 |     @available(*, deprecated, message: "You should implement this method instead of using the default implementation")
191 |     public func log(level: Logger.Level,
    |                 `- note: 'log(level:message:metadata:source:file:function:line:)' declared here
192 |                     message: Logger.Message,
193 |                     metadata: Logger.Metadata?,
[92/95] Compiling RPiLight LightService.swift
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
46 |     }
47 |
48 |     static var logLevelOverride: Logger.Level?
   |                |- warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'logLevelOverride' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'logLevelOverride' 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
49 |     private var handlerLogLevel: Logger.Level = .info
50 |     var logLevel: Logger.Level {
[92/95] Write Objects.LinkFileList
[93/95] Linking RPiLight
[94/95] Applying RPiLight
Build complete! (35.52s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "moderator",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.5.1",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/kareman/Moderator.git"
    },
    {
      "identity" : "yams",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.0.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/jpsim/Yams.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "ephemeris",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.2",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kaiede/Ephemeris.git"
    },
    {
      "identity" : "pca9685",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "3.0.0",
            "upper_bound" : "4.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kaiede/PCA9685.git"
    },
    {
      "identity" : "mcp4725",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.1.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kaiede/MCP4725.git"
    },
    {
      "identity" : "singleboard",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kaiede/SingleBoard.git"
    }
  ],
  "manifest_display_name" : "RPiLight",
  "name" : "RPiLight",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "RPiLight",
      "targets" : [
        "RPiLight"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "ServiceTests",
      "module_type" : "SwiftTarget",
      "name" : "ServiceTests",
      "path" : "Tests/ServiceTests",
      "sources" : [
        "BehaviorTests.swift",
        "ChannelControllerTests.swift",
        "DayTimeTests.swift",
        "EventTests.swift",
        "LayerTests.swift",
        "LightControllerTests.swift",
        "ScheduleDescriptionTests.swift",
        "ServiceDescriptionTests.swift",
        "SwiftExtensionsTests.swift"
      ],
      "target_dependencies" : [
        "Service"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Service",
      "module_type" : "SwiftTarget",
      "name" : "Service",
      "path" : "Sources/Service",
      "product_dependencies" : [
        "Logging",
        "Ephemeris",
        "Yams"
      ],
      "product_memberships" : [
        "RPiLight"
      ],
      "sources" : [
        "Behavior.swift",
        "ChannelController.swift",
        "ChannelPoint.swift",
        "DayTime.swift",
        "Event.swift",
        "Layer.swift",
        "LightController.swift",
        "LogUtilities.swift",
        "ScheduleDescription.swift",
        "ServiceDescription.swift",
        "SwiftExtensions.swift",
        "Timers.swift"
      ],
      "target_dependencies" : [
        "LED"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RPiLight",
      "module_type" : "SwiftTarget",
      "name" : "RPiLight",
      "path" : "Sources/RPiLight",
      "product_dependencies" : [
        "Moderator"
      ],
      "product_memberships" : [
        "RPiLight"
      ],
      "sources" : [
        "LightService.swift",
        "ServiceGlue.swift",
        "ServiceLogHandler.swift",
        "main.swift"
      ],
      "target_dependencies" : [
        "Service"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "LEDTests",
      "module_type" : "SwiftTarget",
      "name" : "LEDTests",
      "path" : "Tests/LEDTests",
      "sources" : [
        "ChannelTests.swift",
        "ModuleTests.swift",
        "TypeTests.swift"
      ],
      "target_dependencies" : [
        "LED"
      ],
      "type" : "test"
    },
    {
      "c99name" : "LED",
      "module_type" : "SwiftTarget",
      "name" : "LED",
      "path" : "Sources/LED",
      "product_dependencies" : [
        "Logging",
        "MCP4725",
        "PCA9685",
        "SingleBoard"
      ],
      "product_memberships" : [
        "RPiLight"
      ],
      "sources" : [
        "LEDModule.swift",
        "LEDModule_Internal.swift",
        "MCP4725.swift",
        "PCA9685.swift",
        "RaspberryPi.swift",
        "Simulated.swift",
        "Types.swift",
        "Utilities.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.0"
}
Done.