The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of DitheringEngine, reference 1.10.0 (0197a1), with Swift 6.1 for macOS (SPM) on 11 Nov 2025 12:22:17 UTC.

Swift 6 data race errors: 6

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: 4.68.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Eskils/DitheringEngine.git
Reference: 1.10.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Eskils/DitheringEngine
 * tag               1.10.0     -> FETCH_HEAD
HEAD is now at 0197a14 Merge pull request #15 from Eskils/develop
Cloned https://github.com/Eskils/DitheringEngine.git
Revision (git rev-parse @):
0197a146b3f62fa9003f55129ec610043e109390
SUCCESS checkout https://github.com/Eskils/DitheringEngine.git at 1.10.0
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/Eskils/DitheringEngine.git
https://github.com/Eskils/DitheringEngine.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "DitheringEngine",
  "name" : "DitheringEngine",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "maccatalyst",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    }
  ],
  "products" : [
    {
      "name" : "DitheringEngine",
      "targets" : [
        "DitheringEngine"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "DitheringEngineTests",
      "module_type" : "SwiftTarget",
      "name" : "DitheringEngineTests",
      "path" : "Tests/DitheringEngineTests",
      "sources" : [
        "DitheringEngineTests.swift",
        "SettingsCodableTests.swift",
        "TestingHelpers.swift",
        "TestsError.swift"
      ],
      "target_dependencies" : [
        "DitheringEngine"
      ],
      "type" : "test"
    },
    {
      "c99name" : "DitheringEngine",
      "module_type" : "SwiftTarget",
      "name" : "DitheringEngine",
      "path" : "Sources/DitheringEngine",
      "product_memberships" : [
        "DitheringEngine"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/PrivacyInfo.xcprivacy",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "CustomPaletteSettings.swift",
        "DitherMehtod.swift",
        "DitherMethods/Dither-Atkinson.swift",
        "DitherMethods/Dither-Bayer.swift",
        "DitherMethods/Dither-CleanThreshold.swift",
        "DitherMethods/Dither-ErrorDiffusion.swift",
        "DitherMethods/Dither-FloydSteinberg.swift",
        "DitherMethods/Dither-JarvisJudiceNinke.swift",
        "DitherMethods/Dither-Noise.swift",
        "DitherMethods/Dither-None.swift",
        "DitherMethods/Dither-Ordered.swift",
        "DitherMethods/Dither-WhiteNoise.swift",
        "DitherMethods/DitherMethods.swift",
        "DitheringEngine.swift",
        "ErrorDiffusionDitheringCustomization.swift",
        "Extensions/AnyPublisher+Extension.swift",
        "Extensions/Array+Extension.swift",
        "Extensions/Numeric+Extension.swift",
        "Extensions/SIMD3+Extension.swift",
        "Helpers/CGImageDataTransformer.swift",
        "Helpers/WhiteNoiseGenerator.swift",
        "Helpers/clamp.swift",
        "Helpers/convertColorspace.swift",
        "Helpers/equallySpacedColors.swift",
        "ImageColor.swift",
        "ImageDescription.swift",
        "ImageDescriptionFormat.swift",
        "LUT.swift",
        "LUTCollection.swift",
        "LUTPalette.swift",
        "Metal/MetalOrderedDithering.swift",
        "Nameable.swift",
        "OrderedDitheringThresholdConfiguration.swift",
        "Palette.swift",
        "Palettes/Palette-Apple2.swift",
        "Palettes/Palette-BlackAndWhite.swift",
        "Palettes/Palette-CGA.swift",
        "Palettes/Palette-GameBoy.swift",
        "Palettes/Palette-Grayscale.swift",
        "Palettes/Palette-Intellivision.swift",
        "Palettes/Palette-Quantized.swift",
        "Palettes/Palettes.swift",
        "SettingsConfiguration.swift",
        "SettingsConfigurations/Apple2SettingsConfiguration.swift",
        "SettingsConfigurations/BayerSettingsConfiguration.swift",
        "SettingsConfigurations/CGASettingsConfiguration.swift",
        "SettingsConfigurations/CustomPaletteSettingsConfiguration.swift",
        "SettingsConfigurations/DitherMethodSettingsConfiguration.swift",
        "SettingsConfigurations/EmptySettingsConfiguration.swift",
        "SettingsConfigurations/FloydSteinbergSettingsConfiguration.swift",
        "SettingsConfigurations/NoiseDitheringSettingsConfiguration.swift",
        "SettingsConfigurations/PaletteSelectionSettingsConfiguration.swift",
        "SettingsConfigurations/QuantizedColorSettingsConfiguration.swift",
        "SettingsConfigurations/WhiteNoiseSettingsConfiguration.swift",
        "ThresholdMap.swift",
        "Video/VideoAssembler.swift",
        "Video/VideoDescription.swift",
        "Video/VideoDitheringEngine.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.8"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/3] Copying PrivacyInfo.xcprivacy
[0/3] Write sources
[2/3] Write swift-version-2F0A5646E1D333AE.txt
[4/58] Emitting module DitheringEngine
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:106:23: warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
104 |     }
105 |
106 |     public static var setting = DitherMethodSettingsConfiguration()
    |                       |- warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'setting' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'setting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
107 | }
108 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:20:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | extension UInt8: ImageColor {
20 |     public static var one: UInt8 = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |     public func toFloat() -> Float { Float(self) }
22 |     public func toUInt8() -> UInt8 { self }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:27:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
25 |
26 | extension Float: ImageColor {
27 |     public static var one: Float = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 |     public func toFloat() -> Float { self }
29 |     public func toUInt8() -> UInt8 { self.isNaN ? 0 : UInt8(self) }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:439:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
437 |
438 |     /// Default video dithering.
439 |     public static let none = Self([])
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
440 |
441 |     /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:444:23: warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
442 |     /// Adds an increased wait time in the begining.
443 |     /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
444 |     public static let precalculateDitheredColorForAllColors = Self(rawValue: 1 << 0)
    |                       |- warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'precalculateDitheredColorForAllColors' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
445 |
446 |     /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:447:23: warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
445 |
446 |     /// Does not transfer audio from the original video file.
447 |     public static let removeAudio = Self(rawValue: 1 << 1)
    |                       |- warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'removeAudio' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
448 | }
449 |
[5/63] Compiling DitheringEngine Dither-FloydSteinberg.swift
[6/63] Compiling DitheringEngine Dither-JarvisJudiceNinke.swift
[7/63] Compiling DitheringEngine Dither-Noise.swift
[8/63] Compiling DitheringEngine Dither-None.swift
[9/63] Compiling DitheringEngine Dither-Ordered.swift
[10/63] Compiling DitheringEngine Dither-WhiteNoise.swift
[11/63] Compiling DitheringEngine CustomPaletteSettings.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:106:23: warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
104 |     }
105 |
106 |     public static var setting = DitherMethodSettingsConfiguration()
    |                       |- warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'setting' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'setting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
107 | }
108 |
[12/63] Compiling DitheringEngine DitherMehtod.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:106:23: warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
104 |     }
105 |
106 |     public static var setting = DitherMethodSettingsConfiguration()
    |                       |- warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'setting' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'setting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
107 | }
108 |
[13/63] Compiling DitheringEngine Dither-Atkinson.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:106:23: warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
104 |     }
105 |
106 |     public static var setting = DitherMethodSettingsConfiguration()
    |                       |- warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'setting' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'setting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
107 | }
108 |
[14/63] Compiling DitheringEngine Dither-Bayer.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:106:23: warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
104 |     }
105 |
106 |     public static var setting = DitherMethodSettingsConfiguration()
    |                       |- warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'setting' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'setting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
107 | }
108 |
[15/63] Compiling DitheringEngine Dither-CleanThreshold.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:106:23: warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
104 |     }
105 |
106 |     public static var setting = DitherMethodSettingsConfiguration()
    |                       |- warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'setting' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'setting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
107 | }
108 |
[16/63] Compiling DitheringEngine Dither-ErrorDiffusion.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:106:23: warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
104 |     }
105 |
106 |     public static var setting = DitherMethodSettingsConfiguration()
    |                       |- warning: static property 'setting' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'setting' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'setting' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
107 | }
108 |
[17/63] Compiling DitheringEngine MetalOrderedDithering.swift
[18/63] Compiling DitheringEngine Nameable.swift
[19/63] Compiling DitheringEngine OrderedDitheringThresholdConfiguration.swift
[20/63] Compiling DitheringEngine Palette.swift
[21/63] Compiling DitheringEngine Palette-Apple2.swift
[22/63] Compiling DitheringEngine Palette-BlackAndWhite.swift
[23/63] Compiling DitheringEngine Palette-CGA.swift
[24/63] Compiling DitheringEngine Palette-GameBoy.swift
[25/63] Compiling DitheringEngine Palette-Grayscale.swift
[26/63] Compiling DitheringEngine Palette-Intellivision.swift
[27/63] Compiling DitheringEngine Palette-Quantized.swift
[28/63] Compiling DitheringEngine Palettes.swift
[29/63] Compiling DitheringEngine SIMD3+Extension.swift
[30/63] Compiling DitheringEngine CGImageDataTransformer.swift
[31/63] Compiling DitheringEngine WhiteNoiseGenerator.swift
[32/63] Compiling DitheringEngine clamp.swift
[33/63] Compiling DitheringEngine convertColorspace.swift
[34/63] Compiling DitheringEngine equallySpacedColors.swift
[35/63] Compiling DitheringEngine SettingsConfiguration.swift
[36/63] Compiling DitheringEngine Apple2SettingsConfiguration.swift
[37/63] Compiling DitheringEngine BayerSettingsConfiguration.swift
[38/63] Compiling DitheringEngine CGASettingsConfiguration.swift
[39/63] Compiling DitheringEngine CustomPaletteSettingsConfiguration.swift
[40/63] Compiling DitheringEngine DitherMethodSettingsConfiguration.swift
[41/63] Compiling DitheringEngine DitherMethods.swift
[42/63] Compiling DitheringEngine DitheringEngine.swift
[43/63] Compiling DitheringEngine ErrorDiffusionDitheringCustomization.swift
[44/63] Compiling DitheringEngine AnyPublisher+Extension.swift
[45/63] Compiling DitheringEngine Array+Extension.swift
[46/63] Compiling DitheringEngine Numeric+Extension.swift
[47/63] Compiling DitheringEngine ImageColor.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:20:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | extension UInt8: ImageColor {
20 |     public static var one: UInt8 = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |     public func toFloat() -> Float { Float(self) }
22 |     public func toUInt8() -> UInt8 { self }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:27:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
25 |
26 | extension Float: ImageColor {
27 |     public static var one: Float = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 |     public func toFloat() -> Float { self }
29 |     public func toUInt8() -> UInt8 { self.isNaN ? 0 : UInt8(self) }
[48/63] Compiling DitheringEngine ImageDescription.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:20:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | extension UInt8: ImageColor {
20 |     public static var one: UInt8 = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |     public func toFloat() -> Float { Float(self) }
22 |     public func toUInt8() -> UInt8 { self }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:27:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
25 |
26 | extension Float: ImageColor {
27 |     public static var one: Float = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 |     public func toFloat() -> Float { self }
29 |     public func toUInt8() -> UInt8 { self.isNaN ? 0 : UInt8(self) }
[49/63] Compiling DitheringEngine ImageDescriptionFormat.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:20:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | extension UInt8: ImageColor {
20 |     public static var one: UInt8 = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |     public func toFloat() -> Float { Float(self) }
22 |     public func toUInt8() -> UInt8 { self }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:27:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
25 |
26 | extension Float: ImageColor {
27 |     public static var one: Float = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 |     public func toFloat() -> Float { self }
29 |     public func toUInt8() -> UInt8 { self.isNaN ? 0 : UInt8(self) }
[50/63] Compiling DitheringEngine LUT.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:20:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | extension UInt8: ImageColor {
20 |     public static var one: UInt8 = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |     public func toFloat() -> Float { Float(self) }
22 |     public func toUInt8() -> UInt8 { self }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:27:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
25 |
26 | extension Float: ImageColor {
27 |     public static var one: Float = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 |     public func toFloat() -> Float { self }
29 |     public func toUInt8() -> UInt8 { self.isNaN ? 0 : UInt8(self) }
[51/63] Compiling DitheringEngine LUTCollection.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:20:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | extension UInt8: ImageColor {
20 |     public static var one: UInt8 = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |     public func toFloat() -> Float { Float(self) }
22 |     public func toUInt8() -> UInt8 { self }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:27:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
25 |
26 | extension Float: ImageColor {
27 |     public static var one: Float = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 |     public func toFloat() -> Float { self }
29 |     public func toUInt8() -> UInt8 { self.isNaN ? 0 : UInt8(self) }
[52/63] Compiling DitheringEngine LUTPalette.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:20:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
18 |
19 | extension UInt8: ImageColor {
20 |     public static var one: UInt8 = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 |     public func toFloat() -> Float { Float(self) }
22 |     public func toUInt8() -> UInt8 { self }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/ImageColor.swift:27:23: warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
25 |
26 | extension Float: ImageColor {
27 |     public static var one: Float = 1
   |                       |- warning: static property 'one' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'one' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'one' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 |     public func toFloat() -> Float { self }
29 |     public func toUInt8() -> UInt8 { self.isNaN ? 0 : UInt8(self) }
[53/63] Compiling DitheringEngine ThresholdMap.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:439:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
437 |
438 |     /// Default video dithering.
439 |     public static let none = Self([])
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
440 |
441 |     /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:444:23: warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
442 |     /// Adds an increased wait time in the begining.
443 |     /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
444 |     public static let precalculateDitheredColorForAllColors = Self(rawValue: 1 << 0)
    |                       |- warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'precalculateDitheredColorForAllColors' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
445 |
446 |     /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:447:23: warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
445 |
446 |     /// Does not transfer audio from the original video file.
447 |     public static let removeAudio = Self(rawValue: 1 << 1)
    |                       |- warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'removeAudio' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
448 | }
449 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                      `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
    :
336 |
337 | extension VideoDitheringEngine {
338 |     struct WorkItemContext {
    |            `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
339 |         private let ditheringEngine: DitheringEngine
340 |         private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                                                          `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
CoreVideo.CVBuffer:1:14: note: class 'CVBuffer' does not conform to the 'Sendable' protocol
1 | public class CVBuffer : _CFObject {
  |              `- note: class 'CVBuffer' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:327:21: warning: mutation of captured var 'results' in concurrently-executing code
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
327 |                     results[i] = result
    |                     `- warning: mutation of captured var 'results' in concurrently-executing code
328 |                 } catch {
329 |                     print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:191:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
189 |
190 |             DispatchQueue.main.async {
191 |                 dispatchUntilEmpty(
    |                 |- 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
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:193:31: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
191 |                 dispatchUntilEmpty(
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
    |                               |- warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
    |                               `- note: task-isolated 'workItemContexts' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
194 |                     frames: frames,
195 |                     videoAssembler: videoAssembler
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:194:29: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
194 |                     frames: frames,
    |                             |- warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'frames' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:197:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
197 |                     if let progressHandler {
    |                            |- warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'progressHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
198 |                         let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
199 |                         return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:206:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
204 |                     if wasCanceled {
205 |                         frames.cancel()
206 |                         audioSamples?.cancel()
    |                         |- warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'audioSamples' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:208:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
206 |                         audioSamples?.cancel()
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
    |                         |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
209 |                         return
210 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:213:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
211 |
212 |                     print("Finished adding all frames")
213 |                     if let audioSamples, !options.contains(.removeAudio) {
    |                                           |- warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
    |                                           `- note: task-isolated 'options' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
214 |                         transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
215 |                         print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:317:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
315 |                 defer {
316 |                     DispatchQueue.main.async {
317 |                         responses += 1
    |                         |- warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'responses' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
318 |                         if responses == numThreads {
319 |                             responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     |- warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
    |                                                     `- note: task-isolated 'results' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
[54/63] Compiling DitheringEngine VideoAssembler.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:439:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
437 |
438 |     /// Default video dithering.
439 |     public static let none = Self([])
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
440 |
441 |     /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:444:23: warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
442 |     /// Adds an increased wait time in the begining.
443 |     /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
444 |     public static let precalculateDitheredColorForAllColors = Self(rawValue: 1 << 0)
    |                       |- warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'precalculateDitheredColorForAllColors' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
445 |
446 |     /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:447:23: warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
445 |
446 |     /// Does not transfer audio from the original video file.
447 |     public static let removeAudio = Self(rawValue: 1 << 1)
    |                       |- warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'removeAudio' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
448 | }
449 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                      `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
    :
336 |
337 | extension VideoDitheringEngine {
338 |     struct WorkItemContext {
    |            `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
339 |         private let ditheringEngine: DitheringEngine
340 |         private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                                                          `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
CoreVideo.CVBuffer:1:14: note: class 'CVBuffer' does not conform to the 'Sendable' protocol
1 | public class CVBuffer : _CFObject {
  |              `- note: class 'CVBuffer' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:327:21: warning: mutation of captured var 'results' in concurrently-executing code
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
327 |                     results[i] = result
    |                     `- warning: mutation of captured var 'results' in concurrently-executing code
328 |                 } catch {
329 |                     print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:191:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
189 |
190 |             DispatchQueue.main.async {
191 |                 dispatchUntilEmpty(
    |                 |- 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
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:193:31: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
191 |                 dispatchUntilEmpty(
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
    |                               |- warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
    |                               `- note: task-isolated 'workItemContexts' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
194 |                     frames: frames,
195 |                     videoAssembler: videoAssembler
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:194:29: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
194 |                     frames: frames,
    |                             |- warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'frames' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:197:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
197 |                     if let progressHandler {
    |                            |- warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'progressHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
198 |                         let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
199 |                         return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:206:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
204 |                     if wasCanceled {
205 |                         frames.cancel()
206 |                         audioSamples?.cancel()
    |                         |- warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'audioSamples' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:208:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
206 |                         audioSamples?.cancel()
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
    |                         |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
209 |                         return
210 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:213:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
211 |
212 |                     print("Finished adding all frames")
213 |                     if let audioSamples, !options.contains(.removeAudio) {
    |                                           |- warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
    |                                           `- note: task-isolated 'options' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
214 |                         transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
215 |                         print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:317:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
315 |                 defer {
316 |                     DispatchQueue.main.async {
317 |                         responses += 1
    |                         |- warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'responses' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
318 |                         if responses == numThreads {
319 |                             responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     |- warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
    |                                                     `- note: task-isolated 'results' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
[55/63] Compiling DitheringEngine VideoDescription.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:439:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
437 |
438 |     /// Default video dithering.
439 |     public static let none = Self([])
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
440 |
441 |     /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:444:23: warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
442 |     /// Adds an increased wait time in the begining.
443 |     /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
444 |     public static let precalculateDitheredColorForAllColors = Self(rawValue: 1 << 0)
    |                       |- warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'precalculateDitheredColorForAllColors' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
445 |
446 |     /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:447:23: warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
445 |
446 |     /// Does not transfer audio from the original video file.
447 |     public static let removeAudio = Self(rawValue: 1 << 1)
    |                       |- warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'removeAudio' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
448 | }
449 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                      `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
    :
336 |
337 | extension VideoDitheringEngine {
338 |     struct WorkItemContext {
    |            `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
339 |         private let ditheringEngine: DitheringEngine
340 |         private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                                                          `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
CoreVideo.CVBuffer:1:14: note: class 'CVBuffer' does not conform to the 'Sendable' protocol
1 | public class CVBuffer : _CFObject {
  |              `- note: class 'CVBuffer' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:327:21: warning: mutation of captured var 'results' in concurrently-executing code
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
327 |                     results[i] = result
    |                     `- warning: mutation of captured var 'results' in concurrently-executing code
328 |                 } catch {
329 |                     print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:191:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
189 |
190 |             DispatchQueue.main.async {
191 |                 dispatchUntilEmpty(
    |                 |- 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
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:193:31: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
191 |                 dispatchUntilEmpty(
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
    |                               |- warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
    |                               `- note: task-isolated 'workItemContexts' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
194 |                     frames: frames,
195 |                     videoAssembler: videoAssembler
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:194:29: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
194 |                     frames: frames,
    |                             |- warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'frames' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:197:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
197 |                     if let progressHandler {
    |                            |- warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'progressHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
198 |                         let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
199 |                         return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:206:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
204 |                     if wasCanceled {
205 |                         frames.cancel()
206 |                         audioSamples?.cancel()
    |                         |- warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'audioSamples' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:208:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
206 |                         audioSamples?.cancel()
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
    |                         |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
209 |                         return
210 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:213:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
211 |
212 |                     print("Finished adding all frames")
213 |                     if let audioSamples, !options.contains(.removeAudio) {
    |                                           |- warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
    |                                           `- note: task-isolated 'options' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
214 |                         transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
215 |                         print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:317:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
315 |                 defer {
316 |                     DispatchQueue.main.async {
317 |                         responses += 1
    |                         |- warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'responses' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
318 |                         if responses == numThreads {
319 |                             responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     |- warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
    |                                                     `- note: task-isolated 'results' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
[56/63] Compiling DitheringEngine VideoDitheringEngine.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:439:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
437 |
438 |     /// Default video dithering.
439 |     public static let none = Self([])
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
440 |
441 |     /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:444:23: warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
442 |     /// Adds an increased wait time in the begining.
443 |     /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
444 |     public static let precalculateDitheredColorForAllColors = Self(rawValue: 1 << 0)
    |                       |- warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'precalculateDitheredColorForAllColors' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
445 |
446 |     /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:447:23: warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
445 |
446 |     /// Does not transfer audio from the original video file.
447 |     public static let removeAudio = Self(rawValue: 1 << 1)
    |                       |- warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'removeAudio' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
448 | }
449 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                      `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
    :
336 |
337 | extension VideoDitheringEngine {
338 |     struct WorkItemContext {
    |            `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
339 |         private let ditheringEngine: DitheringEngine
340 |         private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                                                          `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
CoreVideo.CVBuffer:1:14: note: class 'CVBuffer' does not conform to the 'Sendable' protocol
1 | public class CVBuffer : _CFObject {
  |              `- note: class 'CVBuffer' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:327:21: warning: mutation of captured var 'results' in concurrently-executing code
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
327 |                     results[i] = result
    |                     `- warning: mutation of captured var 'results' in concurrently-executing code
328 |                 } catch {
329 |                     print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:191:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
189 |
190 |             DispatchQueue.main.async {
191 |                 dispatchUntilEmpty(
    |                 |- 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
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:193:31: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
191 |                 dispatchUntilEmpty(
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
    |                               |- warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
    |                               `- note: task-isolated 'workItemContexts' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
194 |                     frames: frames,
195 |                     videoAssembler: videoAssembler
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:194:29: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
194 |                     frames: frames,
    |                             |- warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'frames' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:197:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
197 |                     if let progressHandler {
    |                            |- warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'progressHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
198 |                         let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
199 |                         return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:206:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
204 |                     if wasCanceled {
205 |                         frames.cancel()
206 |                         audioSamples?.cancel()
    |                         |- warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'audioSamples' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:208:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
206 |                         audioSamples?.cancel()
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
    |                         |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
209 |                         return
210 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:213:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
211 |
212 |                     print("Finished adding all frames")
213 |                     if let audioSamples, !options.contains(.removeAudio) {
    |                                           |- warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
    |                                           `- note: task-isolated 'options' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
214 |                         transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
215 |                         print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:317:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
315 |                 defer {
316 |                     DispatchQueue.main.async {
317 |                         responses += 1
    |                         |- warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'responses' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
318 |                         if responses == numThreads {
319 |                             responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     |- warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
    |                                                     `- note: task-isolated 'results' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
[57/63] Compiling DitheringEngine resource_bundle_accessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:439:23: warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
437 |
438 |     /// Default video dithering.
439 |     public static let none = Self([])
    |                       |- warning: static property 'none' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'none' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
440 |
441 |     /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:444:23: warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
442 |     /// Adds an increased wait time in the begining.
443 |     /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
444 |     public static let precalculateDitheredColorForAllColors = Self(rawValue: 1 << 0)
    |                       |- warning: static property 'precalculateDitheredColorForAllColors' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'precalculateDitheredColorForAllColors' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
445 |
446 |     /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:447:23: warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
429 | }
430 |
431 | public struct VideoDitherOptions: OptionSet {
    |               `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
432 |     public let rawValue: Int
433 |
    :
445 |
446 |     /// Does not transfer audio from the original video file.
447 |     public static let removeAudio = Self(rawValue: 1 << 1)
    |                       |- warning: static property 'removeAudio' is not concurrency-safe because non-'Sendable' type 'VideoDitherOptions' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'removeAudio' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
448 | }
449 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a '@Sendable' closure
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a '@Sendable' closure
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                      `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
    :
336 |
337 | extension VideoDitheringEngine {
338 |     struct WorkItemContext {
    |            `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
339 |         private let ditheringEngine: DitheringEngine
340 |         private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:326:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
324 |
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
    |                                                                          `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a '@Sendable' closure
327 |                     results[i] = result
328 |                 } catch {
CoreVideo.CVBuffer:1:14: note: class 'CVBuffer' does not conform to the 'Sendable' protocol
1 | public class CVBuffer : _CFObject {
  |              `- note: class 'CVBuffer' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in an isolated local function; this is an error in the Swift 6 language mode
    |                             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in an isolated local function; this is an error in the Swift 6 language mode
321 |                         }
322 |                     }
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:327:21: warning: mutation of captured var 'results' in concurrently-executing code
325 |                 do {
326 |                     let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
327 |                     results[i] = result
    |                     `- warning: mutation of captured var 'results' in concurrently-executing code
328 |                 } catch {
329 |                     print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:191:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
189 |
190 |             DispatchQueue.main.async {
191 |                 dispatchUntilEmpty(
    |                 |- 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
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:193:31: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
191 |                 dispatchUntilEmpty(
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
    |                               |- warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
    |                               `- note: task-isolated 'workItemContexts' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
194 |                     frames: frames,
195 |                     videoAssembler: videoAssembler
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:194:29: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
192 |                     queue: queue,
193 |                     contexts: workItemContexts,
194 |                     frames: frames,
    |                             |- warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'frames' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:197:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
195 |                     videoAssembler: videoAssembler
196 |                 ) { batchNumber in
197 |                     if let progressHandler {
    |                            |- warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'progressHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
198 |                         let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
199 |                         return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:206:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
204 |                     if wasCanceled {
205 |                         frames.cancel()
206 |                         audioSamples?.cancel()
    |                         |- warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'audioSamples' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:208:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
206 |                         audioSamples?.cancel()
207 |                         videoAssembler.cancelVideoGeneration()
208 |                         completionHandler(VideoDitheringError.cancelled)
    |                         |- warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completionHandler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
209 |                         return
210 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:213:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
211 |
212 |                     print("Finished adding all frames")
213 |                     if let audioSamples, !options.contains(.removeAudio) {
    |                                           |- warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
    |                                           `- note: task-isolated 'options' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
214 |                         transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
215 |                         print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:317:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
315 |                 defer {
316 |                     DispatchQueue.main.async {
317 |                         responses += 1
    |                         |- warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'responses' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
318 |                         if responses == numThreads {
319 |                             responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:320:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
318 |                         if responses == numThreads {
319 |                             responses += 1
320 |                             completion(idempotency, results)
    |                                                     |- warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
    |                                                     `- note: task-isolated 'results' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
321 |                         }
322 |                     }
[58/63] Compiling DitheringEngine EmptySettingsConfiguration.swift
[59/63] Compiling DitheringEngine FloydSteinbergSettingsConfiguration.swift
[60/63] Compiling DitheringEngine NoiseDitheringSettingsConfiguration.swift
[61/63] Compiling DitheringEngine PaletteSelectionSettingsConfiguration.swift
[62/63] Compiling DitheringEngine QuantizedColorSettingsConfiguration.swift
[63/63] Compiling DitheringEngine WhiteNoiseSettingsConfiguration.swift
Build complete! (8.85s)
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/DitheringEngine/Metal/OrderedDithering.metal
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "DitheringEngine",
  "name" : "DitheringEngine",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "maccatalyst",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    }
  ],
  "products" : [
    {
      "name" : "DitheringEngine",
      "targets" : [
        "DitheringEngine"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "DitheringEngineTests",
      "module_type" : "SwiftTarget",
      "name" : "DitheringEngineTests",
      "path" : "Tests/DitheringEngineTests",
      "sources" : [
        "DitheringEngineTests.swift",
        "SettingsCodableTests.swift",
        "TestingHelpers.swift",
        "TestsError.swift"
      ],
      "target_dependencies" : [
        "DitheringEngine"
      ],
      "type" : "test"
    },
    {
      "c99name" : "DitheringEngine",
      "module_type" : "SwiftTarget",
      "name" : "DitheringEngine",
      "path" : "Sources/DitheringEngine",
      "product_memberships" : [
        "DitheringEngine"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/PrivacyInfo.xcprivacy",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "CustomPaletteSettings.swift",
        "DitherMehtod.swift",
        "DitherMethods/Dither-Atkinson.swift",
        "DitherMethods/Dither-Bayer.swift",
        "DitherMethods/Dither-CleanThreshold.swift",
        "DitherMethods/Dither-ErrorDiffusion.swift",
        "DitherMethods/Dither-FloydSteinberg.swift",
        "DitherMethods/Dither-JarvisJudiceNinke.swift",
        "DitherMethods/Dither-Noise.swift",
        "DitherMethods/Dither-None.swift",
        "DitherMethods/Dither-Ordered.swift",
        "DitherMethods/Dither-WhiteNoise.swift",
        "DitherMethods/DitherMethods.swift",
        "DitheringEngine.swift",
        "ErrorDiffusionDitheringCustomization.swift",
        "Extensions/AnyPublisher+Extension.swift",
        "Extensions/Array+Extension.swift",
        "Extensions/Numeric+Extension.swift",
        "Extensions/SIMD3+Extension.swift",
        "Helpers/CGImageDataTransformer.swift",
        "Helpers/WhiteNoiseGenerator.swift",
        "Helpers/clamp.swift",
        "Helpers/convertColorspace.swift",
        "Helpers/equallySpacedColors.swift",
        "ImageColor.swift",
        "ImageDescription.swift",
        "ImageDescriptionFormat.swift",
        "LUT.swift",
        "LUTCollection.swift",
        "LUTPalette.swift",
        "Metal/MetalOrderedDithering.swift",
        "Nameable.swift",
        "OrderedDitheringThresholdConfiguration.swift",
        "Palette.swift",
        "Palettes/Palette-Apple2.swift",
        "Palettes/Palette-BlackAndWhite.swift",
        "Palettes/Palette-CGA.swift",
        "Palettes/Palette-GameBoy.swift",
        "Palettes/Palette-Grayscale.swift",
        "Palettes/Palette-Intellivision.swift",
        "Palettes/Palette-Quantized.swift",
        "Palettes/Palettes.swift",
        "SettingsConfiguration.swift",
        "SettingsConfigurations/Apple2SettingsConfiguration.swift",
        "SettingsConfigurations/BayerSettingsConfiguration.swift",
        "SettingsConfigurations/CGASettingsConfiguration.swift",
        "SettingsConfigurations/CustomPaletteSettingsConfiguration.swift",
        "SettingsConfigurations/DitherMethodSettingsConfiguration.swift",
        "SettingsConfigurations/EmptySettingsConfiguration.swift",
        "SettingsConfigurations/FloydSteinbergSettingsConfiguration.swift",
        "SettingsConfigurations/NoiseDitheringSettingsConfiguration.swift",
        "SettingsConfigurations/PaletteSelectionSettingsConfiguration.swift",
        "SettingsConfigurations/QuantizedColorSettingsConfiguration.swift",
        "SettingsConfigurations/WhiteNoiseSettingsConfiguration.swift",
        "ThresholdMap.swift",
        "Video/VideoAssembler.swift",
        "Video/VideoDescription.swift",
        "Video/VideoDitheringEngine.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.8"
}
Done.