The Swift Package Index logo.Swift Package Index

Build Information

Successful build of DitheringEngine, reference main (0197a1), with Swift 6.1 for macOS (SPM) on 11 Nov 2025 12:25:35 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: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Eskils/DitheringEngine
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
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 main
========================================
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
[1/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/58] 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 |
[6/58] 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 |
[7/58] 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 |
[8/58] 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 |
[9/58] 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 |
[10/58] 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 |
[11/63] Compiling DitheringEngine MetalOrderedDithering.swift
[12/63] Compiling DitheringEngine Nameable.swift
[13/63] Compiling DitheringEngine OrderedDitheringThresholdConfiguration.swift
[14/63] Compiling DitheringEngine Palette.swift
[15/63] Compiling DitheringEngine Palette-Apple2.swift
[16/63] Compiling DitheringEngine Palette-BlackAndWhite.swift
[17/63] Compiling DitheringEngine SettingsConfiguration.swift
[18/63] Compiling DitheringEngine Apple2SettingsConfiguration.swift
[19/63] Compiling DitheringEngine BayerSettingsConfiguration.swift
[20/63] Compiling DitheringEngine CGASettingsConfiguration.swift
[21/63] Compiling DitheringEngine CustomPaletteSettingsConfiguration.swift
[22/63] Compiling DitheringEngine DitherMethodSettingsConfiguration.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 Dither-FloydSteinberg.swift
[30/63] Compiling DitheringEngine Dither-JarvisJudiceNinke.swift
[31/63] Compiling DitheringEngine Dither-Noise.swift
[32/63] Compiling DitheringEngine Dither-None.swift
[33/63] Compiling DitheringEngine Dither-Ordered.swift
[34/63] Compiling DitheringEngine Dither-WhiteNoise.swift
[35/63] Compiling DitheringEngine DitherMethods.swift
[36/63] Compiling DitheringEngine DitheringEngine.swift
[37/63] Compiling DitheringEngine ErrorDiffusionDitheringCustomization.swift
[38/63] Compiling DitheringEngine AnyPublisher+Extension.swift
[39/63] Compiling DitheringEngine Array+Extension.swift
[40/63] Compiling DitheringEngine Numeric+Extension.swift
[41/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) }
[42/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) }
[43/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) }
[44/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) }
[45/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) }
[46/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) }
[47/63] Compiling DitheringEngine SIMD3+Extension.swift
[48/63] Compiling DitheringEngine CGImageDataTransformer.swift
[49/63] Compiling DitheringEngine WhiteNoiseGenerator.swift
[50/63] Compiling DitheringEngine clamp.swift
[51/63] Compiling DitheringEngine convertColorspace.swift
[52/63] Compiling DitheringEngine equallySpacedColors.swift
[53/63] Compiling DitheringEngine EmptySettingsConfiguration.swift
[54/63] Compiling DitheringEngine FloydSteinbergSettingsConfiguration.swift
[55/63] Compiling DitheringEngine NoiseDitheringSettingsConfiguration.swift
[56/63] Compiling DitheringEngine PaletteSelectionSettingsConfiguration.swift
[57/63] Compiling DitheringEngine QuantizedColorSettingsConfiguration.swift
[58/63] Compiling DitheringEngine WhiteNoiseSettingsConfiguration.swift
[59/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 |                     }
[60/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 |                     }
[61/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 |                     }
[62/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 |                     }
[63/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 |                     }
Build complete! (9.30s)
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.