Build Information
Successful build of DitheringEngine, reference v1.9.0 (897dbf
), with Swift 6.0 for macOS (SPM) on 20 Apr 2025 15:30:31 UTC.
Swift 6 data race errors: 6
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
========================================
RunAll
========================================
Builder version: 4.60.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Eskils/DitheringEngine.git
Reference: v1.9.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Eskils/DitheringEngine
* tag v1.9.0 -> FETCH_HEAD
HEAD is now at 897dbfe [#14] Dithering Engine 1.9.0
Cloned https://github.com/Eskils/DitheringEngine.git
Revision (git rev-parse @):
897dbfed946ca23ad9c467fdadf8de8260557572
SUCCESS checkout https://github.com/Eskils/DitheringEngine.git at v1.9.0
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"dependencies": [
{
"identity": "ditheringengine",
"name": "DitheringEngine",
"url": "https://github.com/Eskils/DitheringEngine.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/DitheringEngine",
"dependencies": [
]
}
]
}
Fetching https://github.com/Eskils/DitheringEngine.git
[1/1246] Fetching ditheringengine
Fetched https://github.com/Eskils/DitheringEngine.git from cache (1.53s)
Creating working copy for https://github.com/Eskils/DitheringEngine.git
Working copy of https://github.com/Eskils/DitheringEngine.git resolved at v1.9.0 (897dbfe)
warning: '.resolve-product-dependencies': dependency 'ditheringengine' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $PWD
https://github.com/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" : [
"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",
"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.2.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] Write sources
[0/3] Copying PrivacyInfo.xcprivacy
[2/3] Write swift-version-5BDAB9E9C0126B9D.txt
[4/56] Emitting module DitheringEngine
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:102: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
100 | }
101 |
102 | 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: annotate 'setting' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 | }
104 |
/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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 | 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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 | public func toFloat() -> Float { self }
29 | public func toUInt8() -> UInt8 { UInt8(self) }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:366: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
364 |
365 | /// Default video dithering.
366 | 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: annotate 'none' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
367 |
368 | /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:371: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
369 | /// Adds an increased wait time in the begining.
370 | /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
371 | 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: annotate 'precalculateDitheredColorForAllColors' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
372 |
373 | /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:374: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
372 |
373 | /// Does not transfer audio from the original video file.
374 | 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: annotate 'removeAudio' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
375 |
376 |
[5/61] Compiling DitheringEngine Dither-JarvisJudiceNinke.swift
[6/61] Compiling DitheringEngine Dither-Noise.swift
[7/61] Compiling DitheringEngine Dither-None.swift
[8/61] Compiling DitheringEngine Dither-Ordered.swift
[9/61] Compiling DitheringEngine Dither-WhiteNoise.swift
[10/61] Compiling DitheringEngine DitherMethods.swift
[11/61] Compiling DitheringEngine DitherMehtod.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:102: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
100 | }
101 |
102 | 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: annotate 'setting' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 | }
104 |
[12/61] Compiling DitheringEngine Dither-Atkinson.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:102: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
100 | }
101 |
102 | 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: annotate 'setting' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 | }
104 |
[13/61] Compiling DitheringEngine Dither-Bayer.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:102: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
100 | }
101 |
102 | 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: annotate 'setting' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 | }
104 |
[14/61] Compiling DitheringEngine Dither-CleanThreshold.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:102: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
100 | }
101 |
102 | 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: annotate 'setting' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 | }
104 |
[15/61] Compiling DitheringEngine Dither-ErrorDiffusion.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:102: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
100 | }
101 |
102 | 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: annotate 'setting' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 | }
104 |
[16/61] Compiling DitheringEngine Dither-FloydSteinberg.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/DitherMehtod.swift:102: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
100 | }
101 |
102 | 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: annotate 'setting' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 | }
104 |
[17/61] Compiling DitheringEngine Palette-Grayscale.swift
[18/61] Compiling DitheringEngine Palette-Intellivision.swift
[19/61] Compiling DitheringEngine Palette-Quantized.swift
[20/61] Compiling DitheringEngine Palettes.swift
[21/61] Compiling DitheringEngine SettingsConfiguration.swift
[22/61] Compiling DitheringEngine Apple2SettingsConfiguration.swift
[23/61] Compiling DitheringEngine OrderedDitheringThresholdConfiguration.swift
[24/61] Compiling DitheringEngine Palette.swift
[25/61] Compiling DitheringEngine Palette-Apple2.swift
[26/61] Compiling DitheringEngine Palette-BlackAndWhite.swift
[27/61] Compiling DitheringEngine Palette-CGA.swift
[28/61] Compiling DitheringEngine Palette-GameBoy.swift
[29/61] Compiling DitheringEngine BayerSettingsConfiguration.swift
[30/61] Compiling DitheringEngine CGASettingsConfiguration.swift
[31/61] Compiling DitheringEngine CustomPaletteSettingsConfiguration.swift
[32/61] Compiling DitheringEngine DitherMethodSettingsConfiguration.swift
[33/61] Compiling DitheringEngine EmptySettingsConfiguration.swift
[34/61] Compiling DitheringEngine CGImageDataTransformer.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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 | 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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 | public func toFloat() -> Float { self }
29 | public func toUInt8() -> UInt8 { UInt8(self) }
[35/61] Compiling DitheringEngine WhiteNoiseGenerator.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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 | 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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 | public func toFloat() -> Float { self }
29 | public func toUInt8() -> UInt8 { UInt8(self) }
[36/61] Compiling DitheringEngine clamp.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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 | 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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 | public func toFloat() -> Float { self }
29 | public func toUInt8() -> UInt8 { UInt8(self) }
[37/61] Compiling DitheringEngine convertColorspace.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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 | 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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 | public func toFloat() -> Float { self }
29 | public func toUInt8() -> UInt8 { UInt8(self) }
[38/61] Compiling DitheringEngine equallySpacedColors.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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 | 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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 | public func toFloat() -> Float { self }
29 | public func toUInt8() -> UInt8 { UInt8(self) }
[39/61] 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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
21 | 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: annotate 'one' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
28 | public func toFloat() -> Float { self }
29 | public func toUInt8() -> UInt8 { UInt8(self) }
[40/61] Compiling DitheringEngine DitheringEngine.swift
[41/61] Compiling DitheringEngine ErrorDiffusionDitheringCustomization.swift
[42/61] Compiling DitheringEngine AnyPublisher+Extension.swift
[43/61] Compiling DitheringEngine Array+Extension.swift
[44/61] Compiling DitheringEngine Numeric+Extension.swift
[45/61] Compiling DitheringEngine SIMD3+Extension.swift
[46/61] Compiling DitheringEngine FloydSteinbergSettingsConfiguration.swift
[47/61] Compiling DitheringEngine NoiseDitheringSettingsConfiguration.swift
[48/61] Compiling DitheringEngine PaletteSelectionSettingsConfiguration.swift
[49/61] Compiling DitheringEngine QuantizedColorSettingsConfiguration.swift
[50/61] Compiling DitheringEngine WhiteNoiseSettingsConfiguration.swift
[51/61] Compiling DitheringEngine ThresholdMap.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:366: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
364 |
365 | /// Default video dithering.
366 | 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: annotate 'none' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
367 |
368 | /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:371: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
369 | /// Adds an increased wait time in the begining.
370 | /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
371 | 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: annotate 'precalculateDitheredColorForAllColors' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
372 |
373 | /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:374: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
372 |
373 | /// Does not transfer audio from the original video file.
374 | 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: annotate 'removeAudio' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
375 |
376 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | completion(idempotency, results)
| `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
258 | }
259 | }
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:263:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
264 | results[i] = result
265 | } catch {
:
273 |
274 | extension VideoDitheringEngine {
275 | struct WorkItemContext {
| `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
276 | private let ditheringEngine: DitheringEngine
277 | private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:263:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
264 | results[i] = result
265 | } 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:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
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:264:21: warning: mutation of captured var 'results' in concurrently-executing code
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
264 | results[i] = result
| `- warning: mutation of captured var 'results' in concurrently-executing code
265 | } catch {
266 | print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:60: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:86: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:158:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
158 | 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
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
160 | return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:167:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
165 | if wasCanceled {
166 | frames.cancel()
167 | 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
168 | videoAssembler.cancelVideoGeneration()
169 | completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:169:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
167 | audioSamples?.cancel()
168 | videoAssembler.cancelVideoGeneration()
169 | 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
170 | return
171 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:174:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
172 |
173 | print("Finished adding all frames")
174 | 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
175 | transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
176 | print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:254:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
252 | defer {
253 | DispatchQueue.main.async {
254 | 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
255 | if responses == numThreads {
256 | responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
[52/61] Compiling DitheringEngine VideoAssembler.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:366: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
364 |
365 | /// Default video dithering.
366 | 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: annotate 'none' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
367 |
368 | /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:371: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
369 | /// Adds an increased wait time in the begining.
370 | /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
371 | 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: annotate 'precalculateDitheredColorForAllColors' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
372 |
373 | /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:374: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
372 |
373 | /// Does not transfer audio from the original video file.
374 | 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: annotate 'removeAudio' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
375 |
376 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | completion(idempotency, results)
| `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
258 | }
259 | }
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:263:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
264 | results[i] = result
265 | } catch {
:
273 |
274 | extension VideoDitheringEngine {
275 | struct WorkItemContext {
| `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
276 | private let ditheringEngine: DitheringEngine
277 | private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:263:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
264 | results[i] = result
265 | } 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:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
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:264:21: warning: mutation of captured var 'results' in concurrently-executing code
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
264 | results[i] = result
| `- warning: mutation of captured var 'results' in concurrently-executing code
265 | } catch {
266 | print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:60: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:86: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:158:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
158 | 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
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
160 | return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:167:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
165 | if wasCanceled {
166 | frames.cancel()
167 | 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
168 | videoAssembler.cancelVideoGeneration()
169 | completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:169:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
167 | audioSamples?.cancel()
168 | videoAssembler.cancelVideoGeneration()
169 | 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
170 | return
171 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:174:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
172 |
173 | print("Finished adding all frames")
174 | 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
175 | transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
176 | print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:254:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
252 | defer {
253 | DispatchQueue.main.async {
254 | 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
255 | if responses == numThreads {
256 | responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
[53/61] Compiling DitheringEngine VideoDescription.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:366: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
364 |
365 | /// Default video dithering.
366 | 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: annotate 'none' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
367 |
368 | /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:371: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
369 | /// Adds an increased wait time in the begining.
370 | /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
371 | 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: annotate 'precalculateDitheredColorForAllColors' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
372 |
373 | /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:374: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
372 |
373 | /// Does not transfer audio from the original video file.
374 | 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: annotate 'removeAudio' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
375 |
376 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | completion(idempotency, results)
| `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
258 | }
259 | }
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:263:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
264 | results[i] = result
265 | } catch {
:
273 |
274 | extension VideoDitheringEngine {
275 | struct WorkItemContext {
| `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
276 | private let ditheringEngine: DitheringEngine
277 | private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:263:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
264 | results[i] = result
265 | } 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:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
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:264:21: warning: mutation of captured var 'results' in concurrently-executing code
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
264 | results[i] = result
| `- warning: mutation of captured var 'results' in concurrently-executing code
265 | } catch {
266 | print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:60: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:86: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:158:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
158 | 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
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
160 | return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:167:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
165 | if wasCanceled {
166 | frames.cancel()
167 | 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
168 | videoAssembler.cancelVideoGeneration()
169 | completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:169:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
167 | audioSamples?.cancel()
168 | videoAssembler.cancelVideoGeneration()
169 | 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
170 | return
171 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:174:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
172 |
173 | print("Finished adding all frames")
174 | 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
175 | transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
176 | print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:254:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
252 | defer {
253 | DispatchQueue.main.async {
254 | 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
255 | if responses == numThreads {
256 | responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
[54/61] Compiling DitheringEngine VideoDitheringEngine.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:366: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
364 |
365 | /// Default video dithering.
366 | 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: annotate 'none' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
367 |
368 | /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:371: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
369 | /// Adds an increased wait time in the begining.
370 | /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
371 | 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: annotate 'precalculateDitheredColorForAllColors' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
372 |
373 | /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:374: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
372 |
373 | /// Does not transfer audio from the original video file.
374 | 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: annotate 'removeAudio' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
375 |
376 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | completion(idempotency, results)
| `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
258 | }
259 | }
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:263:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
264 | results[i] = result
265 | } catch {
:
273 |
274 | extension VideoDitheringEngine {
275 | struct WorkItemContext {
| `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
276 | private let ditheringEngine: DitheringEngine
277 | private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:263:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
264 | results[i] = result
265 | } 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:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
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:264:21: warning: mutation of captured var 'results' in concurrently-executing code
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
264 | results[i] = result
| `- warning: mutation of captured var 'results' in concurrently-executing code
265 | } catch {
266 | print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:60: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:86: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:158:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
158 | 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
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
160 | return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:167:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
165 | if wasCanceled {
166 | frames.cancel()
167 | 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
168 | videoAssembler.cancelVideoGeneration()
169 | completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:169:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
167 | audioSamples?.cancel()
168 | videoAssembler.cancelVideoGeneration()
169 | 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
170 | return
171 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:174:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
172 |
173 | print("Finished adding all frames")
174 | 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
175 | transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
176 | print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:254:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
252 | defer {
253 | DispatchQueue.main.async {
254 | 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
255 | if responses == numThreads {
256 | responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
[55/61] Compiling DitheringEngine resource_bundle_accessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:366: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
364 |
365 | /// Default video dithering.
366 | 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: annotate 'none' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
367 |
368 | /// Makes an indexed map of all colors to dithered color.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:371: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
369 | /// Adds an increased wait time in the begining.
370 | /// Might be faster with large LUTCollections. Do not use with LUT which is already index based.
371 | 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: annotate 'precalculateDitheredColorForAllColors' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
372 |
373 | /// Does not transfer audio from the original video file.
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:374: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
356 | }
357 |
358 | public struct VideoDitherOptions: OptionSet {
| `- note: consider making struct 'VideoDitherOptions' conform to the 'Sendable' protocol
359 | public let rawValue: Int
360 |
:
372 |
373 | /// Does not transfer audio from the original video file.
374 | 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: annotate 'removeAudio' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
375 |
376 |
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: capture of 'completion' with non-sendable type '(Int, [CVPixelBuffer?]) -> Void' (aka '(Int, Array<Optional<CVBuffer>>) -> ()') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
255 | if responses == numThreads {
256 | responses += 1
257 | completion(idempotency, results)
| `- warning: capture of 'results' with non-sendable type '[CVPixelBuffer?]' (aka 'Array<Optional<CVBuffer>>') in a `@Sendable` closure
258 | }
259 | }
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:263:38: warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'context' with non-sendable type 'VideoDitheringEngine.WorkItemContext' in a `@Sendable` closure
264 | results[i] = result
265 | } catch {
:
273 |
274 | extension VideoDitheringEngine {
275 | struct WorkItemContext {
| `- note: consider making struct 'WorkItemContext' conform to the 'Sendable' protocol
276 | private let ditheringEngine: DitheringEngine
277 | private let context: CIContext
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:263:74: warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
261 |
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
| `- warning: capture of 'pixelBuffer' with non-sendable type 'CVPixelBuffer' (aka 'CVBuffer') in a `@Sendable` closure
264 | results[i] = result
265 | } 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:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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'
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257: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
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
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:264:21: warning: mutation of captured var 'results' in concurrently-executing code
262 | do {
263 | let result = try context.scaleAndDither(pixelBuffer: pixelBuffer)
264 | results[i] = result
| `- warning: mutation of captured var 'results' in concurrently-executing code
265 | } catch {
266 | print("Failed to scale and dither frame: \(error)")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:17: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:60: warning: sending 'workItemContexts' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:157:86: warning: sending 'frames' risks causing data races; this is an error in the Swift 6 language mode
155 |
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
| |- 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
158 | if let progressHandler {
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:158:28: warning: sending 'progressHandler' risks causing data races; this is an error in the Swift 6 language mode
156 | DispatchQueue.main.async {
157 | dispatchUntilEmpty(queue: queue, contexts: workItemContexts, frames: frames, videoAssembler: videoAssembler) { batchNumber in
158 | 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
159 | let progress = min(1, Float(batchNumber) / Float(numberOfBatches))
160 | return progressHandler(progress)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:167:25: warning: sending 'audioSamples' risks causing data races; this is an error in the Swift 6 language mode
165 | if wasCanceled {
166 | frames.cancel()
167 | 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
168 | videoAssembler.cancelVideoGeneration()
169 | completionHandler(VideoDitheringError.cancelled)
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:169:25: warning: sending 'completionHandler' risks causing data races; this is an error in the Swift 6 language mode
167 | audioSamples?.cancel()
168 | videoAssembler.cancelVideoGeneration()
169 | 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
170 | return
171 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:174:43: warning: sending 'options' risks causing data races; this is an error in the Swift 6 language mode
172 |
173 | print("Finished adding all frames")
174 | 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
175 | transferAudio(audioSamples: audioSamples, videoAssembler: videoAssembler)
176 | print("Finished adding audio")
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:254:25: warning: sending 'responses' risks causing data races; this is an error in the Swift 6 language mode
252 | defer {
253 | DispatchQueue.main.async {
254 | 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
255 | if responses == numThreads {
256 | responses += 1
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
/Users/admin/builder/spi-builder-workspace/Sources/DitheringEngine/Video/VideoDitheringEngine.swift:257:53: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
255 | if responses == numThreads {
256 | responses += 1
257 | 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
258 | }
259 | }
[56/61] Compiling DitheringEngine ImageDescription.swift
[57/61] Compiling DitheringEngine LUT.swift
[58/61] Compiling DitheringEngine LUTCollection.swift
[59/61] Compiling DitheringEngine LUTPalette.swift
[60/61] Compiling DitheringEngine MetalOrderedDithering.swift
[61/61] Compiling DitheringEngine Nameable.swift
Build complete! (17.16s)
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" : [
"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",
"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.