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