The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of metal-tools, reference main (e24169), with Swift 6.1 for macOS (SPM) on 30 Apr 2025 12:38:25 UTC.

Swift 6 data race errors: 2

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.61.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/computer-graphics-tools/metal-tools.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/computer-graphics-tools/metal-tools
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at e241697 remove simd tools dependency
Cloned https://github.com/computer-graphics-tools/metal-tools.git
Revision (git rev-parse @):
e2416976e87b1e73f3ac601305b45cd8c6ff3977
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/computer-graphics-tools/metal-tools.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/computer-graphics-tools/metal-tools.git
https://github.com/computer-graphics-tools/metal-tools.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "metal-tools",
  "name" : "metal-tools",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "maccatalyst",
      "version" : "13.0"
    }
  ],
  "products" : [
    {
      "name" : "MetalTools",
      "targets" : [
        "MetalTools"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MetalComputeTools",
      "targets" : [
        "MetalComputeTools"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MetalRenderingTools",
      "targets" : [
        "MetalRenderingTools"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "MetalTools",
      "module_type" : "SwiftTarget",
      "name" : "MetalTools",
      "path" : "Sources/MetalTools",
      "product_memberships" : [
        "MetalTools",
        "MetalComputeTools",
        "MetalRenderingTools"
      ],
      "sources" : [
        "CodableContainer/MTLTextureCodableContainer.swift",
        "CodableContainer/MTLTextureDescriptorCodableContainer.swift",
        "Extensions/CoreVideo/CVPixelBuffer+MTLTexture.swift",
        "Extensions/CoreVideo/CVPixelFormat+Extensions.swift",
        "Extensions/Foundation/Decoder+MTLDevice.swift",
        "Extensions/Metal/MTLBlitCommandEncoder/MTLBlitCommandEncoder+Copy.swift",
        "Extensions/Metal/MTLBuffer/MTLBuffer+Contents.swift",
        "Extensions/Metal/MTLCPUCacheMode/MTLCPUCacheMode+Codable.swift",
        "Extensions/Metal/MTLClearColor/MTLClearColor+Clear.swift",
        "Extensions/Metal/MTLCommandBuffer/MTLCommandBuffer+Dispatching.swift",
        "Extensions/Metal/MTLCommandBuffer/MTLCommandBuffer+ExecutionTime.swift",
        "Extensions/Metal/MTLCommandQueue/MTLCommandQueue+Schedule.swift",
        "Extensions/Metal/MTLCompileOptions/MTLCompileOptions+Extensions.swift",
        "Extensions/Metal/MTLComputeCommandEncoder/MTLComputeCommandEncoder+Arguments.swift",
        "Extensions/Metal/MTLComputeCommandEncoder/MTLComputeCommandEncoder+Dispatch.swift",
        "Extensions/Metal/MTLComputePipelineState/MTLComputePipelineState+Threads.swift",
        "Extensions/Metal/MTLDevice/MTLDevice+Convenience.swift",
        "Extensions/Metal/MTLDevice/MTLDevice+Features.swift",
        "Extensions/Metal/MTLDevice/MTLDevice+IsDiscrete.swift",
        "Extensions/Metal/MTLDevice/MTLDevice+MTLTexture.swift",
        "Extensions/Metal/MTLFunctionConstantValues/MTLFunctionConstantValues+SetValue.swift",
        "Extensions/Metal/MTLHeap/MTLHeap+Convenience.swift",
        "Extensions/Metal/MTLLibrary/MTLLibrary+PipelineState.swift",
        "Extensions/Metal/MTLOrigin/MTLOrigin+Clamp.swift",
        "Extensions/Metal/MTLOrigin/MTLOrigin+Codable.swift",
        "Extensions/Metal/MTLOrigin/MTLOrigin+Convenience.swift",
        "Extensions/Metal/MTLOrigin/MTLOrigin+Equitable.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+CGBitmapInfo.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+CVPixelFormat.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+Codable.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+ColorSpace.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+Extensions.swift",
        "Extensions/Metal/MTLRegion/MTLRegion+Area.swift",
        "Extensions/Metal/MTLRegion/MTLRegion+Clamp.swift",
        "Extensions/Metal/MTLRegion/MTLRegion+Codable.swift",
        "Extensions/Metal/MTLRegion/MTLRegion+Equitable.swift",
        "Extensions/Metal/MTLRenderCommandEncoder/MTLRenderCommandEncoder+SetValue.swift",
        "Extensions/Metal/MTLRenderPassAttachmentDescriptor/MTLRenderPassAttachmentDescriptor+Extensions.swift",
        "Extensions/Metal/MTLRenderPipelineColorAttachmentDescriptor/MTLRenderPipelineColorAttachmentDescriptor+BlendingMode.swift",
        "Extensions/Metal/MTLResource/MTLResource+AccessibleOnCPU.swift",
        "Extensions/Metal/MTLResourceOptions/MTLResourceOptions+Extensions.swift",
        "Extensions/Metal/MTLSize/MTLSize+Clamp.swift",
        "Extensions/Metal/MTLSize/MTLSize+Codable.swift",
        "Extensions/Metal/MTLSize/MTLSize+Convenience.swift",
        "Extensions/Metal/MTLSize/MTLSwize+Equitable.swift",
        "Extensions/Metal/MTLSizeAndAlign/MTLSizeAndAlign+Extensions.swift",
        "Extensions/Metal/MTLStorageMode/MTLStorageMode+Extensions.swift",
        "Extensions/Metal/MTLTexture/MTLTexture+Array.swift",
        "Extensions/Metal/MTLTexture/MTLTexture+Codable.swift",
        "Extensions/Metal/MTLTexture/MTLTexture+Extensions.swift",
        "Extensions/Metal/MTLTexture/MTLTexture+Image.swift",
        "Extensions/Metal/MTLTextureDescriptor/MTLTextureDescriptor+Copy.swift",
        "Extensions/Metal/MTLTextureDescriptor/MTLTextureDescriptor+Encodable.swift",
        "Extensions/Metal/MTLTextureType/MTLTextureType+Codable.swift",
        "Extensions/Metal/MTLTextureUsage/MTLTextureUsage+Codable.swift",
        "Extensions/Metal/MTLVertexAttributeDescriptor/MTLVertexAttributeDescriptor+Extensions.swift",
        "Extensions/Metal/MTLVertexBufferLayoutDescriptor/MTLVertexAttributeDescriptorArray+Extensions.swift",
        "Extensions/MetalPerformanceShaders/MPSNNGraph/MPSNNGraph+Functors.swift",
        "Extensions/MetalPerformanceShaders/MPSUnaryImageKernel/MPSUnaryImageKernel+Functors.swift",
        "Extensions/MetalTools/MTLContext+Capture.swift",
        "Extensions/MetalTools/MTLContext+CommandQueue.swift",
        "Extensions/MetalTools/MTLContext+Device.swift",
        "MTLContext.swift",
        "Metal.swift",
        "MetalError.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalRenderingToolsSharedTypes",
      "module_type" : "ClangTarget",
      "name" : "MetalRenderingToolsSharedTypes",
      "path" : "Sources/MetalRenderingToolsSharedTypes",
      "product_memberships" : [
        "MetalRenderingTools"
      ],
      "sources" : [
        "MetalRenderingToolsSharedTypes.c"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalRenderingTools",
      "module_type" : "SwiftTarget",
      "name" : "MetalRenderingTools",
      "path" : "Sources/MetalRenderingTools",
      "product_memberships" : [
        "MetalRenderingTools"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/Common/Common.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/LinesRenderer/LinesRenderer.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/MaskRenderer/MaskRenderer.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/PointsRenderer/PointsRenderer.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/RectangleRender/RectangleRender.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/SimpleGeometryRender/SimpleGeometryRender.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/TextRender/TextRender.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Resources/HelveticaNeue.mtlfontatlas",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "Core/GlyphDescriptor.swift",
        "Core/MTLFontAtlasProvider.swift",
        "Core/MTLIndexBuffer.swift",
        "Core/TextMesh.swift",
        "Extensions/Metal/MTLRenderCommandEncoder+Draw.swift",
        "Extensions/UIKit/UIFont+Rect.swift",
        "MTLFontAtlas/MTLFontAtlas.swift",
        "MTLFontAtlas/MTLFontAtlasCodableContainer.swift",
        "MTLFontAtlas/MTLFontAtlasDescriptor.swift",
        "MetalTools.swift",
        "Renderers/BoundingBoxesRenderer/BoundingBoxesRenderer.swift.swift",
        "Renderers/LabelRender/LabelRender.swift",
        "Renderers/LinesRenderer/LinesRenderer.swift",
        "Renderers/MaskRenderer/MaskRenderer.swift",
        "Renderers/PointsRenderer/PointsRenderer.swift",
        "Renderers/RectangleRender/RectangleRender.swift",
        "Renderers/SimpleGeometryRender/SimpleGeometryRender.swift",
        "Renderers/TextRender/TextRender.swift"
      ],
      "target_dependencies" : [
        "MetalRenderingToolsSharedTypes",
        "MetalComputeTools"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalComputeToolsTestsResources",
      "module_type" : "SwiftTarget",
      "name" : "MetalComputeToolsTestsResources",
      "path" : "Tests/MetalComputeToolsTestsResources",
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Tests/MetalComputeToolsTestsResources/Shared",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "Extensions/Foundation/Bundle+TestsResources.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalComputeToolsTests",
      "module_type" : "SwiftTarget",
      "name" : "MetalComputeToolsTests",
      "path" : "Tests/MetalComputeToolsTests",
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Tests/MetalComputeToolsTests/Shaders/Shaders.metal",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "BitonicSortTests.swift",
        "Encoders/SwitchDataFormatEncoder.swift",
        "EuclideanDistanceTests.swift",
        "Extensions/CoreGraphics/CGImage+Extensions.swift",
        "Extensions/Metal/MTLPixelFormat+Extensions.swift",
        "IntegralImageTests.swift",
        "TextureCachingTests.swift"
      ],
      "target_dependencies" : [
        "MetalComputeTools",
        "MetalComputeToolsTestsResources"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MetalComputeToolsSharedTypes",
      "module_type" : "ClangTarget",
      "name" : "MetalComputeToolsSharedTypes",
      "path" : "Sources/MetalComputeToolsSharedTypes",
      "product_memberships" : [
        "MetalComputeTools",
        "MetalRenderingTools"
      ],
      "sources" : [
        "MetalComputeToolsSharedTypes.c"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalComputeTools",
      "module_type" : "SwiftTarget",
      "name" : "MetalComputeTools",
      "path" : "Sources/MetalComputeTools",
      "product_memberships" : [
        "MetalComputeTools",
        "MetalRenderingTools"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/BitonicSort/BitonicSort.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/EuclideanDistance/EuclideanDistance.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/IntegralImage/IntegralImage.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/LookUpTable/LookUpTable.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/MaskGuidedBlur/MaskGuidedBlur.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/QuantizeDistanceField/QuantizeDistanceField.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/RGBAToYCbCr/RGBAToYCbCr.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/StdMeanNormalization/StdMeanNormalization.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureAddConstant/TextureAddConstant.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureAffineCrop/TextureAffineCrop.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureCopy/TextureCopy.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureDifferenceHighlight/TextureDifferenceHighlight.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureDivideByConstant/TextureDivideByConstant.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureInterpolation/TextureInterpolation.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMask/TextureMask.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMaskedMix/TextureMaskedMix.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMax/TextureMax.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMean/TextureMean.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMin/TextureMin.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMix/TextureMix.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMultiplyAdd/TextureMultiplyAdd.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureResize/TextureResize.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureWeightedMix/TextureWeightedMix.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/YCbCrToRGBA/YCbCrToRGBA.metal",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Extensions/SIMD/float3x3+Extensions.swift",
        "Kernels/BitonicSort/BitonicSort.swift",
        "Kernels/BitonicSort/BitonicSortFinalPass.swift",
        "Kernels/BitonicSort/BitonicSortFirstPass.swift",
        "Kernels/BitonicSort/BitonicSortGeneralPass.swift",
        "Kernels/EuclideanDistance/EuclideanDistance.swift",
        "Kernels/IntegralImage/IntegralImage.swift",
        "Kernels/LookUpTable/LookUpTable.swift",
        "Kernels/MPSUnaryImageKernels/MPSUnaryImageKernels.swift",
        "Kernels/MaskGuidedBlur/MaskGuidedBlur.swift",
        "Kernels/QuantizeDistanceField/QuantizeDistanceField.swift",
        "Kernels/RGBAToYCbCr/RGBAToYCbCr.swift",
        "Kernels/StdMeanNormalization/StdMeanNormalization.swift",
        "Kernels/TextureAddConstant/TextureAddConstant.swift",
        "Kernels/TextureAffineCrop/TextureAffineCrop.swift",
        "Kernels/TextureCopy/TextureCopy.swift",
        "Kernels/TextureDifferenceHighlight/TextureDifferenceHighlight.swift",
        "Kernels/TextureDivideByConstant/TextureDivideByConstant.swift",
        "Kernels/TextureInterpolation/TextureInterpolation.swift",
        "Kernels/TextureMask/TextureMask.swift",
        "Kernels/TextureMaskedMix/TextureMaskedMix.swift",
        "Kernels/TextureMax/TextureMax.swift",
        "Kernels/TextureMean/TextureMean.swift",
        "Kernels/TextureMin/TextureMin.swift",
        "Kernels/TextureMix/TextureMix.swift",
        "Kernels/TextureMultiplyAdd/TextureMultiplyAdd.swift",
        "Kernels/TextureNormalization/TextureNormalization.swift",
        "Kernels/TextureResize/TextureResize.swift",
        "Kernels/TextureWeightedMix/TextureWeightedMix.swift",
        "Kernels/YCbCrToRGBA/YCbCrToRGBA.swift",
        "MetalTools.swift"
      ],
      "target_dependencies" : [
        "MetalComputeToolsSharedTypes",
        "MetalTools"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/40] Write sources
[2/40] Copying BitonicSort.metal
[3/40] Copying EuclideanDistance.metal
[3/40] Copying TextRender.metal
[5/40] Copying SimpleGeometryRender.metal
[5/40] Copying TextureMean.metal
[7/40] Copying RectangleRender.metal
[7/40] Copying PointsRenderer.metal
[7/40] Copying MaskRenderer.metal
[7/40] Copying LinesRenderer.metal
[10/40] Copying Common.metal
[10/40] Copying HelveticaNeue.mtlfontatlas
[10/40] Copying YCbCrToRGBA.metal
[10/40] Copying TextureWeightedMix.metal
[14/40] Copying TextureResize.metal
[14/40] Copying TextureMix.metal
[14/40] Copying TextureMultiplyAdd.metal
[14/40] Copying TextureMin.metal
[15/40] Copying TextureMaskedMix.metal
[20/40] Copying TextureMax.metal
[20/40] Copying Shared
[20/40] Copying TextureMask.metal
[20/40] Copying TextureInterpolation.metal
[20/40] Copying TextureCopy.metal
[21/40] Copying TextureAffineCrop.metal
[21/40] Copying TextureDivideByConstant.metal
[21/40] Copying TextureDifferenceHighlight.metal
[21/40] Copying TextureAddConstant.metal
[29/40] Copying StdMeanNormalization.metal
[29/40] Copying RGBAToYCbCr.metal
[29/40] Write sources
[30/40] Copying QuantizeDistanceField.metal
[31/40] Write sources
[31/40] Copying MaskGuidedBlur.metal
[31/40] Copying IntegralImage.metal
[31/40] Copying LookUpTable.metal
[37/40] Write swift-version-2F0A5646E1D333AE.txt
[38/103] Compiling MetalComputeToolsSharedTypes MetalComputeToolsSharedTypes.c
[39/103] Compiling MetalRenderingToolsSharedTypes MetalRenderingToolsSharedTypes.c
[41/103] Emitting module MetalComputeToolsTestsResources
[42/103] Compiling MetalComputeToolsTestsResources Bundle+TestsResources.swift
[43/103] Compiling MetalComputeToolsTestsResources resource_bundle_accessor.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[44/103] Emitting module MetalTools
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:40:1: error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
38 |
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
   | |- error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
42 |
Foundation.JSONDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class JSONDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:41:1: error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
   | |- error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
42 |
Foundation.PropertyListDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class PropertyListDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:10:23: warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:1:50: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 1 | @_documentation(visibility: internal) @_exported import Metal
   |                                                  `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 2 | @_documentation(visibility: internal) @_exported import MetalKit
 3 | @_documentation(visibility: internal) @_exported import MetalPerformanceShaders
   :
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       |- note: add '@MainActor' to make static property 'device' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:16:23: warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
14 |     ///
15 |     /// On macOS and Mac Catalyst, this property provides the first low-power Metal device found. If no low-power device is available, this value will be `nil`.
16 |     public static let lowPowerDevice: MTLDevice? = MTLCopyAllDevices().first { $0.isLowPower }
   |                       |- warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'lowPowerDevice' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |     #endif // os(macOS) || targetEnvironment(macCatalyst)
18 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
[45/109] Compiling MetalTools MTLSize+Clamp.swift
[46/109] Compiling MetalTools MTLSize+Codable.swift
[47/109] Compiling MetalTools MTLSize+Convenience.swift
[48/109] Compiling MetalTools MTLSwize+Equitable.swift
[49/109] Compiling MetalTools MTLSizeAndAlign+Extensions.swift
[50/109] Compiling MetalTools MTLStorageMode+Extensions.swift
[51/109] Compiling MetalTools MTLComputeCommandEncoder+Dispatch.swift
[52/109] Compiling MetalTools MTLComputePipelineState+Threads.swift
[53/109] Compiling MetalTools MTLDevice+Convenience.swift
[54/109] Compiling MetalTools MTLDevice+Features.swift
[55/109] Compiling MetalTools MTLDevice+IsDiscrete.swift
[56/109] Compiling MetalTools MTLDevice+MTLTexture.swift
[57/109] Compiling MetalTools MTLFunctionConstantValues+SetValue.swift
[58/109] Compiling MetalTools MTLCPUCacheMode+Codable.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Metal/MTLCommandQueue/MTLCommandQueue+Schedule.swift:66:34: warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
64 |                     continuation.resume(throwing: error)
65 |                 } else {
66 |                     continuation.resume(returning: retVal)
   |                                  |- warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
   |                                  `- note: task-isolated 'retVal' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
67 |                 }
68 |             }
[59/109] Compiling MetalTools MTLClearColor+Clear.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Metal/MTLCommandQueue/MTLCommandQueue+Schedule.swift:66:34: warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
64 |                     continuation.resume(throwing: error)
65 |                 } else {
66 |                     continuation.resume(returning: retVal)
   |                                  |- warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
   |                                  `- note: task-isolated 'retVal' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
67 |                 }
68 |             }
[60/109] Compiling MetalTools MTLCommandBuffer+Dispatching.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Metal/MTLCommandQueue/MTLCommandQueue+Schedule.swift:66:34: warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
64 |                     continuation.resume(throwing: error)
65 |                 } else {
66 |                     continuation.resume(returning: retVal)
   |                                  |- warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
   |                                  `- note: task-isolated 'retVal' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
67 |                 }
68 |             }
[61/109] Compiling MetalTools MTLCommandBuffer+ExecutionTime.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Metal/MTLCommandQueue/MTLCommandQueue+Schedule.swift:66:34: warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
64 |                     continuation.resume(throwing: error)
65 |                 } else {
66 |                     continuation.resume(returning: retVal)
   |                                  |- warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
   |                                  `- note: task-isolated 'retVal' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
67 |                 }
68 |             }
[62/109] Compiling MetalTools MTLCommandQueue+Schedule.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Metal/MTLCommandQueue/MTLCommandQueue+Schedule.swift:66:34: warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
64 |                     continuation.resume(throwing: error)
65 |                 } else {
66 |                     continuation.resume(returning: retVal)
   |                                  |- warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
   |                                  `- note: task-isolated 'retVal' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
67 |                 }
68 |             }
[63/109] Compiling MetalTools MTLCompileOptions+Extensions.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Metal/MTLCommandQueue/MTLCommandQueue+Schedule.swift:66:34: warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
64 |                     continuation.resume(throwing: error)
65 |                 } else {
66 |                     continuation.resume(returning: retVal)
   |                                  |- warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
   |                                  `- note: task-isolated 'retVal' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
67 |                 }
68 |             }
[64/109] Compiling MetalTools MTLComputeCommandEncoder+Arguments.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Metal/MTLCommandQueue/MTLCommandQueue+Schedule.swift:66:34: warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
64 |                     continuation.resume(throwing: error)
65 |                 } else {
66 |                     continuation.resume(returning: retVal)
   |                                  |- warning: sending 'retVal' risks causing data races; this is an error in the Swift 6 language mode
   |                                  `- note: task-isolated 'retVal' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
67 |                 }
68 |             }
[65/109] Compiling MetalTools MTLRegion+Equitable.swift
[66/109] Compiling MetalTools MTLRenderCommandEncoder+SetValue.swift
[67/109] Compiling MetalTools MTLRenderPassAttachmentDescriptor+Extensions.swift
[68/109] Compiling MetalTools MTLRenderPipelineColorAttachmentDescriptor+BlendingMode.swift
[69/109] Compiling MetalTools MTLResource+AccessibleOnCPU.swift
[70/109] Compiling MetalTools MTLResourceOptions+Extensions.swift
[71/109] Compiling MetalTools MTLHeap+Convenience.swift
[72/109] Compiling MetalTools MTLLibrary+PipelineState.swift
[73/109] Compiling MetalTools MTLOrigin+Clamp.swift
[74/109] Compiling MetalTools MTLOrigin+Codable.swift
[75/109] Compiling MetalTools MTLOrigin+Convenience.swift
[76/109] Compiling MetalTools MTLOrigin+Equitable.swift
[77/109] Compiling MetalTools MTLPixelFormat+CGBitmapInfo.swift
[78/109] Compiling MetalTools MTLPixelFormat+CVPixelFormat.swift
[79/109] Compiling MetalTools MTLPixelFormat+Codable.swift
[80/109] Compiling MetalTools MTLPixelFormat+ColorSpace.swift
[81/109] Compiling MetalTools MTLPixelFormat+Extensions.swift
[82/109] Compiling MetalTools MTLRegion+Area.swift
[83/109] Compiling MetalTools MTLRegion+Clamp.swift
[84/109] Compiling MetalTools MTLRegion+Codable.swift
[85/109] Compiling MetalTools MTLTextureType+Codable.swift
[86/109] Compiling MetalTools MTLTextureUsage+Codable.swift
[87/109] Compiling MetalTools MTLVertexAttributeDescriptor+Extensions.swift
[88/109] Compiling MetalTools MTLVertexAttributeDescriptorArray+Extensions.swift
[89/109] Compiling MetalTools MPSNNGraph+Functors.swift
[90/109] Compiling MetalTools MPSUnaryImageKernel+Functors.swift
[91/109] Compiling MetalTools MTLContext+Capture.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:10:23: warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:1:50: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 1 | @_documentation(visibility: internal) @_exported import Metal
   |                                                  `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 2 | @_documentation(visibility: internal) @_exported import MetalKit
 3 | @_documentation(visibility: internal) @_exported import MetalPerformanceShaders
   :
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       |- note: add '@MainActor' to make static property 'device' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:16:23: warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
14 |     ///
15 |     /// On macOS and Mac Catalyst, this property provides the first low-power Metal device found. If no low-power device is available, this value will be `nil`.
16 |     public static let lowPowerDevice: MTLDevice? = MTLCopyAllDevices().first { $0.isLowPower }
   |                       |- warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'lowPowerDevice' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |     #endif // os(macOS) || targetEnvironment(macCatalyst)
18 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
[92/109] Compiling MetalTools MTLContext+CommandQueue.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:10:23: warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:1:50: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 1 | @_documentation(visibility: internal) @_exported import Metal
   |                                                  `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 2 | @_documentation(visibility: internal) @_exported import MetalKit
 3 | @_documentation(visibility: internal) @_exported import MetalPerformanceShaders
   :
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       |- note: add '@MainActor' to make static property 'device' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:16:23: warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
14 |     ///
15 |     /// On macOS and Mac Catalyst, this property provides the first low-power Metal device found. If no low-power device is available, this value will be `nil`.
16 |     public static let lowPowerDevice: MTLDevice? = MTLCopyAllDevices().first { $0.isLowPower }
   |                       |- warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'lowPowerDevice' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |     #endif // os(macOS) || targetEnvironment(macCatalyst)
18 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
[93/109] Compiling MetalTools MTLContext+Device.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:10:23: warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:1:50: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 1 | @_documentation(visibility: internal) @_exported import Metal
   |                                                  `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 2 | @_documentation(visibility: internal) @_exported import MetalKit
 3 | @_documentation(visibility: internal) @_exported import MetalPerformanceShaders
   :
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       |- note: add '@MainActor' to make static property 'device' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:16:23: warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
14 |     ///
15 |     /// On macOS and Mac Catalyst, this property provides the first low-power Metal device found. If no low-power device is available, this value will be `nil`.
16 |     public static let lowPowerDevice: MTLDevice? = MTLCopyAllDevices().first { $0.isLowPower }
   |                       |- warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'lowPowerDevice' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |     #endif // os(macOS) || targetEnvironment(macCatalyst)
18 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
[94/109] Compiling MetalTools MTLContext.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:10:23: warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:1:50: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 1 | @_documentation(visibility: internal) @_exported import Metal
   |                                                  `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 2 | @_documentation(visibility: internal) @_exported import MetalKit
 3 | @_documentation(visibility: internal) @_exported import MetalPerformanceShaders
   :
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       |- note: add '@MainActor' to make static property 'device' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:16:23: warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
14 |     ///
15 |     /// On macOS and Mac Catalyst, this property provides the first low-power Metal device found. If no low-power device is available, this value will be `nil`.
16 |     public static let lowPowerDevice: MTLDevice? = MTLCopyAllDevices().first { $0.isLowPower }
   |                       |- warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'lowPowerDevice' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |     #endif // os(macOS) || targetEnvironment(macCatalyst)
18 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
[95/109] Compiling MetalTools Metal.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:10:23: warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:1:50: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 1 | @_documentation(visibility: internal) @_exported import Metal
   |                                                  `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 2 | @_documentation(visibility: internal) @_exported import MetalKit
 3 | @_documentation(visibility: internal) @_exported import MetalPerformanceShaders
   :
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       |- note: add '@MainActor' to make static property 'device' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:16:23: warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
14 |     ///
15 |     /// On macOS and Mac Catalyst, this property provides the first low-power Metal device found. If no low-power device is available, this value will be `nil`.
16 |     public static let lowPowerDevice: MTLDevice? = MTLCopyAllDevices().first { $0.isLowPower }
   |                       |- warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'lowPowerDevice' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |     #endif // os(macOS) || targetEnvironment(macCatalyst)
18 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
[96/109] Compiling MetalTools MetalError.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:10:23: warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       `- warning: static property 'device' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:1:50: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 1 | @_documentation(visibility: internal) @_exported import Metal
   |                                                  `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Metal'
 2 | @_documentation(visibility: internal) @_exported import MetalKit
 3 | @_documentation(visibility: internal) @_exported import MetalPerformanceShaders
   :
 8 |     ///
 9 |     /// This property provides the system's default Metal device. If Metal is not supported on the device, this value will be `nil`.
10 |     public static let device: MTLDevice! = MTLCreateSystemDefaultDevice()
   |                       |- note: add '@MainActor' to make static property 'device' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 |
12 |     #if os(macOS) || targetEnvironment(macCatalyst)
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Metal.swift:16:23: warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
14 |     ///
15 |     /// On macOS and Mac Catalyst, this property provides the first low-power Metal device found. If no low-power device is available, this value will be `nil`.
16 |     public static let lowPowerDevice: MTLDevice? = MTLCopyAllDevices().first { $0.isLowPower }
   |                       |- warning: static property 'lowPowerDevice' is not concurrency-safe because non-'Sendable' type '(any MTLDevice)?' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'lowPowerDevice' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |     #endif // os(macOS) || targetEnvironment(macCatalyst)
18 |
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Metal.framework/Headers/MTLDevice.h:434:11: note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 432 |  */
 433 | API_AVAILABLE(macos(10.11), ios(8.0))
 434 | @protocol MTLDevice <NSObject>
     |           `- note: protocol 'MTLDevice' does not conform to the 'Sendable' protocol
 435 |
 436 | /*!
[97/109] Compiling MetalTools MTLTexture+Array.swift
[98/109] Compiling MetalTools MTLTexture+Codable.swift
[99/109] Compiling MetalTools MTLTexture+Extensions.swift
[100/109] Compiling MetalTools MTLTexture+Image.swift
[101/109] Compiling MetalTools MTLTextureDescriptor+Copy.swift
[102/109] Compiling MetalTools MTLTextureDescriptor+Encodable.swift
[103/109] Compiling MetalTools MTLTextureCodableContainer.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:40:1: error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
38 |
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
   | |- error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
42 |
Foundation.JSONDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class JSONDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:41:1: error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
   | |- error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
42 |
Foundation.PropertyListDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class PropertyListDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
[104/109] Compiling MetalTools MTLTextureDescriptorCodableContainer.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:40:1: error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
38 |
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
   | |- error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
42 |
Foundation.JSONDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class JSONDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:41:1: error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
   | |- error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
42 |
Foundation.PropertyListDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class PropertyListDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
[105/109] Compiling MetalTools CVPixelBuffer+MTLTexture.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:40:1: error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
38 |
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
   | |- error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
42 |
Foundation.JSONDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class JSONDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:41:1: error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
   | |- error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
42 |
Foundation.PropertyListDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class PropertyListDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
[106/109] Compiling MetalTools CVPixelFormat+Extensions.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:40:1: error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
38 |
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
   | |- error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
42 |
Foundation.JSONDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class JSONDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:41:1: error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
   | |- error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
42 |
Foundation.PropertyListDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class PropertyListDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
[107/109] Compiling MetalTools Decoder+MTLDevice.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:40:1: error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
38 |
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
   | |- error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
42 |
Foundation.JSONDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class JSONDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:41:1: error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
   | |- error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
42 |
Foundation.PropertyListDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class PropertyListDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
[108/109] Compiling MetalTools MTLBlitCommandEncoder+Copy.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:40:1: error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
38 |
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
   | |- error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
42 |
Foundation.JSONDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class JSONDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:41:1: error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
   | |- error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
42 |
Foundation.PropertyListDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class PropertyListDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
[109/109] Compiling MetalTools MTLBuffer+Contents.swift
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:40:1: error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
38 |
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
   | |- error: type 'JSONDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
42 |
Foundation.JSONDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class JSONDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
/Users/admin/builder/spi-builder-workspace/Sources/MetalTools/Extensions/Foundation/Decoder+MTLDevice.swift:41:1: error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
 8 | /// A protocol for types that can hold coding user info.
 9 | public protocol CodingUserInfoHolder {
10 |     var userInfo: [CodingUserInfoKey : Any] { get set }
   |         `- note: protocol requires property 'userInfo' with type '[CodingUserInfoKey : Any]'
11 | }
12 |
   :
39 | // Conformance to CodingMTLContextHolder
40 | extension JSONDecoder: CodingMTLContextHolder {}
41 | extension PropertyListDecoder: CodingMTLContextHolder {}
   | |- error: type 'PropertyListDecoder' does not conform to protocol 'CodingUserInfoHolder'
   | `- note: add stubs for conformance
42 |
Foundation.PropertyListDecoder.userInfo:2:26: note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
1 | class PropertyListDecoder {
2 | @preconcurrency open var userInfo: [CodingUserInfoKey : any Sendable] { get set }}
  |                          `- note: candidate has non-matching type '[CodingUserInfoKey : any Sendable]'
3 |
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64
[0/1] Planning build
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/64] Emitting module MetalComputeToolsTestsResources
[3/64] Compiling MetalComputeToolsTestsResources Bundle+TestsResources.swift
[4/64] Compiling MetalComputeToolsTestsResources resource_bundle_accessor.swift
[5/64] Compiling MetalTools MTLTextureType+Codable.swift
[6/64] Compiling MetalTools MTLTextureUsage+Codable.swift
[7/64] Compiling MetalTools MTLVertexAttributeDescriptor+Extensions.swift
[8/64] Compiling MetalTools MTLVertexAttributeDescriptorArray+Extensions.swift
[9/64] Compiling MetalTools MPSNNGraph+Functors.swift
[10/64] Compiling MetalTools MPSUnaryImageKernel+Functors.swift
[11/70] Emitting module MetalTools
[12/70] Compiling MetalTools MTLSize+Clamp.swift
[13/70] Compiling MetalTools MTLSize+Codable.swift
[14/70] Compiling MetalTools MTLSize+Convenience.swift
[15/70] Compiling MetalTools MTLSwize+Equitable.swift
[16/70] Compiling MetalTools MTLSizeAndAlign+Extensions.swift
[17/70] Compiling MetalTools MTLStorageMode+Extensions.swift
[18/70] Compiling MetalTools MTLPixelFormat+CVPixelFormat.swift
[19/70] Compiling MetalTools MTLPixelFormat+Codable.swift
[20/70] Compiling MetalTools MTLPixelFormat+ColorSpace.swift
[21/70] Compiling MetalTools MTLPixelFormat+Extensions.swift
[22/70] Compiling MetalTools MTLRegion+Area.swift
[23/70] Compiling MetalTools MTLRegion+Clamp.swift
[24/70] Compiling MetalTools MTLRegion+Codable.swift
[25/70] Compiling MetalTools MTLHeap+Convenience.swift
[26/70] Compiling MetalTools MTLLibrary+PipelineState.swift
[27/70] Compiling MetalTools MTLOrigin+Clamp.swift
[28/70] Compiling MetalTools MTLOrigin+Codable.swift
[29/70] Compiling MetalTools MTLOrigin+Convenience.swift
[30/70] Compiling MetalTools MTLOrigin+Equitable.swift
[31/70] Compiling MetalTools MTLPixelFormat+CGBitmapInfo.swift
[32/70] Compiling MetalTools MTLCPUCacheMode+Codable.swift
[33/70] Compiling MetalTools MTLClearColor+Clear.swift
[34/70] Compiling MetalTools MTLCommandBuffer+Dispatching.swift
[35/70] Compiling MetalTools MTLCommandBuffer+ExecutionTime.swift
[36/70] Compiling MetalTools MTLCommandQueue+Schedule.swift
[37/70] Compiling MetalTools MTLCompileOptions+Extensions.swift
[38/70] Compiling MetalTools MTLComputeCommandEncoder+Arguments.swift
[39/70] Compiling MetalTools MTLTextureCodableContainer.swift
[40/70] Compiling MetalTools MTLTextureDescriptorCodableContainer.swift
[41/70] Compiling MetalTools CVPixelBuffer+MTLTexture.swift
[42/70] Compiling MetalTools CVPixelFormat+Extensions.swift
[43/70] Compiling MetalTools Decoder+MTLDevice.swift
[44/70] Compiling MetalTools MTLBlitCommandEncoder+Copy.swift
[45/70] Compiling MetalTools MTLBuffer+Contents.swift
[46/70] Compiling MetalTools MTLRegion+Equitable.swift
[47/70] Compiling MetalTools MTLRenderCommandEncoder+SetValue.swift
[48/70] Compiling MetalTools MTLRenderPassAttachmentDescriptor+Extensions.swift
[49/70] Compiling MetalTools MTLRenderPipelineColorAttachmentDescriptor+BlendingMode.swift
[50/70] Compiling MetalTools MTLResource+AccessibleOnCPU.swift
[51/70] Compiling MetalTools MTLResourceOptions+Extensions.swift
[52/70] Compiling MetalTools MTLTexture+Array.swift
[53/70] Compiling MetalTools MTLTexture+Codable.swift
[54/70] Compiling MetalTools MTLTexture+Extensions.swift
[55/70] Compiling MetalTools MTLTexture+Image.swift
[56/70] Compiling MetalTools MTLTextureDescriptor+Copy.swift
[57/70] Compiling MetalTools MTLTextureDescriptor+Encodable.swift
[58/70] Compiling MetalTools MTLComputeCommandEncoder+Dispatch.swift
[59/70] Compiling MetalTools MTLComputePipelineState+Threads.swift
[60/70] Compiling MetalTools MTLDevice+Convenience.swift
[61/70] Compiling MetalTools MTLDevice+Features.swift
[62/70] Compiling MetalTools MTLDevice+IsDiscrete.swift
[63/70] Compiling MetalTools MTLDevice+MTLTexture.swift
[64/70] Compiling MetalTools MTLFunctionConstantValues+SetValue.swift
[65/70] Compiling MetalTools MTLContext+Capture.swift
[66/70] Compiling MetalTools MTLContext+CommandQueue.swift
[67/70] Compiling MetalTools MTLContext+Device.swift
[68/70] Compiling MetalTools MTLContext.swift
[69/70] Compiling MetalTools Metal.swift
[70/70] Compiling MetalTools MetalError.swift
[71/100] Emitting module MetalComputeTools
[72/103] Compiling MetalComputeTools TextureMaskedMix.swift
[73/103] Compiling MetalComputeTools TextureMax.swift
[74/103] Compiling MetalComputeTools TextureMean.swift
[75/103] Compiling MetalComputeTools TextureDivideByConstant.swift
[76/103] Compiling MetalComputeTools TextureInterpolation.swift
[77/103] Compiling MetalComputeTools TextureMask.swift
[78/103] Compiling MetalComputeTools TextureNormalization.swift
[79/103] Compiling MetalComputeTools TextureResize.swift
[80/103] Compiling MetalComputeTools TextureWeightedMix.swift
[81/103] Compiling MetalComputeTools BitonicSortGeneralPass.swift
[82/103] Compiling MetalComputeTools EuclideanDistance.swift
[83/103] Compiling MetalComputeTools IntegralImage.swift
[84/103] Compiling MetalComputeTools LookUpTable.swift
[85/103] Compiling MetalComputeTools RGBAToYCbCr.swift
[86/103] Compiling MetalComputeTools StdMeanNormalization.swift
[87/103] Compiling MetalComputeTools TextureAddConstant.swift
[88/103] Compiling MetalComputeTools TextureAffineCrop.swift
[89/103] Compiling MetalComputeTools TextureCopy.swift
[90/103] Compiling MetalComputeTools TextureDifferenceHighlight.swift
[91/103] Compiling MetalComputeTools float3x3+Extensions.swift
[92/103] Compiling MetalComputeTools BitonicSort.swift
[93/103] Compiling MetalComputeTools BitonicSortFinalPass.swift
[94/103] Compiling MetalComputeTools BitonicSortFirstPass.swift
[95/103] Compiling MetalComputeTools YCbCrToRGBA.swift
[96/103] Compiling MetalComputeTools MetalTools.swift
[97/103] Compiling MetalComputeTools resource_bundle_accessor.swift
[98/103] Compiling MetalComputeTools MPSUnaryImageKernels.swift
[99/103] Compiling MetalComputeTools MaskGuidedBlur.swift
[100/103] Compiling MetalComputeTools QuantizeDistanceField.swift
[101/103] Compiling MetalComputeTools TextureMin.swift
[102/103] Compiling MetalComputeTools TextureMix.swift
[103/103] Compiling MetalComputeTools TextureMultiplyAdd.swift
[104/122] Compiling MetalRenderingTools PointsRenderer.swift
[105/122] Compiling MetalRenderingTools RectangleRender.swift
[106/122] Compiling MetalRenderingTools SimpleGeometryRender.swift
[107/122] Compiling MetalRenderingTools TextRender.swift
[108/122] Compiling MetalRenderingTools LinesRenderer.swift
[109/122] Compiling MetalRenderingTools MaskRenderer.swift
[110/122] Compiling MetalRenderingTools MTLFontAtlas.swift
[111/122] Compiling MetalRenderingTools MTLFontAtlasCodableContainer.swift
[112/122] Compiling MetalRenderingTools BoundingBoxesRenderer.swift.swift
[113/122] Compiling MetalRenderingTools LabelRender.swift
[114/122] Compiling MetalRenderingTools MTLRenderCommandEncoder+Draw.swift
[115/122] Compiling MetalRenderingTools UIFont+Rect.swift
[116/122] Compiling MetalRenderingTools MTLIndexBuffer.swift
[117/122] Compiling MetalRenderingTools TextMesh.swift
[118/122] Emitting module MetalRenderingTools
[119/122] Compiling MetalRenderingTools MTLFontAtlasDescriptor.swift
[120/122] Compiling MetalRenderingTools MetalTools.swift
[121/122] Compiling MetalRenderingTools GlyphDescriptor.swift
[122/122] Compiling MetalRenderingTools MTLFontAtlasProvider.swift
[123/123] Compiling MetalRenderingTools resource_bundle_accessor.swift
Build complete! (7.24s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "metal-tools",
  "name" : "metal-tools",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "maccatalyst",
      "version" : "13.0"
    }
  ],
  "products" : [
    {
      "name" : "MetalTools",
      "targets" : [
        "MetalTools"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MetalComputeTools",
      "targets" : [
        "MetalComputeTools"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MetalRenderingTools",
      "targets" : [
        "MetalRenderingTools"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "MetalTools",
      "module_type" : "SwiftTarget",
      "name" : "MetalTools",
      "path" : "Sources/MetalTools",
      "product_memberships" : [
        "MetalTools",
        "MetalComputeTools",
        "MetalRenderingTools"
      ],
      "sources" : [
        "CodableContainer/MTLTextureCodableContainer.swift",
        "CodableContainer/MTLTextureDescriptorCodableContainer.swift",
        "Extensions/CoreVideo/CVPixelBuffer+MTLTexture.swift",
        "Extensions/CoreVideo/CVPixelFormat+Extensions.swift",
        "Extensions/Foundation/Decoder+MTLDevice.swift",
        "Extensions/Metal/MTLBlitCommandEncoder/MTLBlitCommandEncoder+Copy.swift",
        "Extensions/Metal/MTLBuffer/MTLBuffer+Contents.swift",
        "Extensions/Metal/MTLCPUCacheMode/MTLCPUCacheMode+Codable.swift",
        "Extensions/Metal/MTLClearColor/MTLClearColor+Clear.swift",
        "Extensions/Metal/MTLCommandBuffer/MTLCommandBuffer+Dispatching.swift",
        "Extensions/Metal/MTLCommandBuffer/MTLCommandBuffer+ExecutionTime.swift",
        "Extensions/Metal/MTLCommandQueue/MTLCommandQueue+Schedule.swift",
        "Extensions/Metal/MTLCompileOptions/MTLCompileOptions+Extensions.swift",
        "Extensions/Metal/MTLComputeCommandEncoder/MTLComputeCommandEncoder+Arguments.swift",
        "Extensions/Metal/MTLComputeCommandEncoder/MTLComputeCommandEncoder+Dispatch.swift",
        "Extensions/Metal/MTLComputePipelineState/MTLComputePipelineState+Threads.swift",
        "Extensions/Metal/MTLDevice/MTLDevice+Convenience.swift",
        "Extensions/Metal/MTLDevice/MTLDevice+Features.swift",
        "Extensions/Metal/MTLDevice/MTLDevice+IsDiscrete.swift",
        "Extensions/Metal/MTLDevice/MTLDevice+MTLTexture.swift",
        "Extensions/Metal/MTLFunctionConstantValues/MTLFunctionConstantValues+SetValue.swift",
        "Extensions/Metal/MTLHeap/MTLHeap+Convenience.swift",
        "Extensions/Metal/MTLLibrary/MTLLibrary+PipelineState.swift",
        "Extensions/Metal/MTLOrigin/MTLOrigin+Clamp.swift",
        "Extensions/Metal/MTLOrigin/MTLOrigin+Codable.swift",
        "Extensions/Metal/MTLOrigin/MTLOrigin+Convenience.swift",
        "Extensions/Metal/MTLOrigin/MTLOrigin+Equitable.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+CGBitmapInfo.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+CVPixelFormat.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+Codable.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+ColorSpace.swift",
        "Extensions/Metal/MTLPixelFormat/MTLPixelFormat+Extensions.swift",
        "Extensions/Metal/MTLRegion/MTLRegion+Area.swift",
        "Extensions/Metal/MTLRegion/MTLRegion+Clamp.swift",
        "Extensions/Metal/MTLRegion/MTLRegion+Codable.swift",
        "Extensions/Metal/MTLRegion/MTLRegion+Equitable.swift",
        "Extensions/Metal/MTLRenderCommandEncoder/MTLRenderCommandEncoder+SetValue.swift",
        "Extensions/Metal/MTLRenderPassAttachmentDescriptor/MTLRenderPassAttachmentDescriptor+Extensions.swift",
        "Extensions/Metal/MTLRenderPipelineColorAttachmentDescriptor/MTLRenderPipelineColorAttachmentDescriptor+BlendingMode.swift",
        "Extensions/Metal/MTLResource/MTLResource+AccessibleOnCPU.swift",
        "Extensions/Metal/MTLResourceOptions/MTLResourceOptions+Extensions.swift",
        "Extensions/Metal/MTLSize/MTLSize+Clamp.swift",
        "Extensions/Metal/MTLSize/MTLSize+Codable.swift",
        "Extensions/Metal/MTLSize/MTLSize+Convenience.swift",
        "Extensions/Metal/MTLSize/MTLSwize+Equitable.swift",
        "Extensions/Metal/MTLSizeAndAlign/MTLSizeAndAlign+Extensions.swift",
        "Extensions/Metal/MTLStorageMode/MTLStorageMode+Extensions.swift",
        "Extensions/Metal/MTLTexture/MTLTexture+Array.swift",
        "Extensions/Metal/MTLTexture/MTLTexture+Codable.swift",
        "Extensions/Metal/MTLTexture/MTLTexture+Extensions.swift",
        "Extensions/Metal/MTLTexture/MTLTexture+Image.swift",
        "Extensions/Metal/MTLTextureDescriptor/MTLTextureDescriptor+Copy.swift",
        "Extensions/Metal/MTLTextureDescriptor/MTLTextureDescriptor+Encodable.swift",
        "Extensions/Metal/MTLTextureType/MTLTextureType+Codable.swift",
        "Extensions/Metal/MTLTextureUsage/MTLTextureUsage+Codable.swift",
        "Extensions/Metal/MTLVertexAttributeDescriptor/MTLVertexAttributeDescriptor+Extensions.swift",
        "Extensions/Metal/MTLVertexBufferLayoutDescriptor/MTLVertexAttributeDescriptorArray+Extensions.swift",
        "Extensions/MetalPerformanceShaders/MPSNNGraph/MPSNNGraph+Functors.swift",
        "Extensions/MetalPerformanceShaders/MPSUnaryImageKernel/MPSUnaryImageKernel+Functors.swift",
        "Extensions/MetalTools/MTLContext+Capture.swift",
        "Extensions/MetalTools/MTLContext+CommandQueue.swift",
        "Extensions/MetalTools/MTLContext+Device.swift",
        "MTLContext.swift",
        "Metal.swift",
        "MetalError.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalRenderingToolsSharedTypes",
      "module_type" : "ClangTarget",
      "name" : "MetalRenderingToolsSharedTypes",
      "path" : "Sources/MetalRenderingToolsSharedTypes",
      "product_memberships" : [
        "MetalRenderingTools"
      ],
      "sources" : [
        "MetalRenderingToolsSharedTypes.c"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalRenderingTools",
      "module_type" : "SwiftTarget",
      "name" : "MetalRenderingTools",
      "path" : "Sources/MetalRenderingTools",
      "product_memberships" : [
        "MetalRenderingTools"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/Common/Common.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/LinesRenderer/LinesRenderer.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/MaskRenderer/MaskRenderer.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/PointsRenderer/PointsRenderer.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/RectangleRender/RectangleRender.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/SimpleGeometryRender/SimpleGeometryRender.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Renderers/TextRender/TextRender.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalRenderingTools/Resources/HelveticaNeue.mtlfontatlas",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "Core/GlyphDescriptor.swift",
        "Core/MTLFontAtlasProvider.swift",
        "Core/MTLIndexBuffer.swift",
        "Core/TextMesh.swift",
        "Extensions/Metal/MTLRenderCommandEncoder+Draw.swift",
        "Extensions/UIKit/UIFont+Rect.swift",
        "MTLFontAtlas/MTLFontAtlas.swift",
        "MTLFontAtlas/MTLFontAtlasCodableContainer.swift",
        "MTLFontAtlas/MTLFontAtlasDescriptor.swift",
        "MetalTools.swift",
        "Renderers/BoundingBoxesRenderer/BoundingBoxesRenderer.swift.swift",
        "Renderers/LabelRender/LabelRender.swift",
        "Renderers/LinesRenderer/LinesRenderer.swift",
        "Renderers/MaskRenderer/MaskRenderer.swift",
        "Renderers/PointsRenderer/PointsRenderer.swift",
        "Renderers/RectangleRender/RectangleRender.swift",
        "Renderers/SimpleGeometryRender/SimpleGeometryRender.swift",
        "Renderers/TextRender/TextRender.swift"
      ],
      "target_dependencies" : [
        "MetalRenderingToolsSharedTypes",
        "MetalComputeTools"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalComputeToolsTestsResources",
      "module_type" : "SwiftTarget",
      "name" : "MetalComputeToolsTestsResources",
      "path" : "Tests/MetalComputeToolsTestsResources",
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Tests/MetalComputeToolsTestsResources/Shared",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "Extensions/Foundation/Bundle+TestsResources.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalComputeToolsTests",
      "module_type" : "SwiftTarget",
      "name" : "MetalComputeToolsTests",
      "path" : "Tests/MetalComputeToolsTests",
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Tests/MetalComputeToolsTests/Shaders/Shaders.metal",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "BitonicSortTests.swift",
        "Encoders/SwitchDataFormatEncoder.swift",
        "EuclideanDistanceTests.swift",
        "Extensions/CoreGraphics/CGImage+Extensions.swift",
        "Extensions/Metal/MTLPixelFormat+Extensions.swift",
        "IntegralImageTests.swift",
        "TextureCachingTests.swift"
      ],
      "target_dependencies" : [
        "MetalComputeTools",
        "MetalComputeToolsTestsResources"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MetalComputeToolsSharedTypes",
      "module_type" : "ClangTarget",
      "name" : "MetalComputeToolsSharedTypes",
      "path" : "Sources/MetalComputeToolsSharedTypes",
      "product_memberships" : [
        "MetalComputeTools",
        "MetalRenderingTools"
      ],
      "sources" : [
        "MetalComputeToolsSharedTypes.c"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MetalComputeTools",
      "module_type" : "SwiftTarget",
      "name" : "MetalComputeTools",
      "path" : "Sources/MetalComputeTools",
      "product_memberships" : [
        "MetalComputeTools",
        "MetalRenderingTools"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/BitonicSort/BitonicSort.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/EuclideanDistance/EuclideanDistance.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/IntegralImage/IntegralImage.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/LookUpTable/LookUpTable.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/MaskGuidedBlur/MaskGuidedBlur.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/QuantizeDistanceField/QuantizeDistanceField.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/RGBAToYCbCr/RGBAToYCbCr.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/StdMeanNormalization/StdMeanNormalization.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureAddConstant/TextureAddConstant.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureAffineCrop/TextureAffineCrop.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureCopy/TextureCopy.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureDifferenceHighlight/TextureDifferenceHighlight.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureDivideByConstant/TextureDivideByConstant.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureInterpolation/TextureInterpolation.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMask/TextureMask.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMaskedMix/TextureMaskedMix.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMax/TextureMax.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMean/TextureMean.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMin/TextureMin.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMix/TextureMix.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureMultiplyAdd/TextureMultiplyAdd.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureResize/TextureResize.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/TextureWeightedMix/TextureWeightedMix.metal",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/MetalComputeTools/Kernels/YCbCrToRGBA/YCbCrToRGBA.metal",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Extensions/SIMD/float3x3+Extensions.swift",
        "Kernels/BitonicSort/BitonicSort.swift",
        "Kernels/BitonicSort/BitonicSortFinalPass.swift",
        "Kernels/BitonicSort/BitonicSortFirstPass.swift",
        "Kernels/BitonicSort/BitonicSortGeneralPass.swift",
        "Kernels/EuclideanDistance/EuclideanDistance.swift",
        "Kernels/IntegralImage/IntegralImage.swift",
        "Kernels/LookUpTable/LookUpTable.swift",
        "Kernels/MPSUnaryImageKernels/MPSUnaryImageKernels.swift",
        "Kernels/MaskGuidedBlur/MaskGuidedBlur.swift",
        "Kernels/QuantizeDistanceField/QuantizeDistanceField.swift",
        "Kernels/RGBAToYCbCr/RGBAToYCbCr.swift",
        "Kernels/StdMeanNormalization/StdMeanNormalization.swift",
        "Kernels/TextureAddConstant/TextureAddConstant.swift",
        "Kernels/TextureAffineCrop/TextureAffineCrop.swift",
        "Kernels/TextureCopy/TextureCopy.swift",
        "Kernels/TextureDifferenceHighlight/TextureDifferenceHighlight.swift",
        "Kernels/TextureDivideByConstant/TextureDivideByConstant.swift",
        "Kernels/TextureInterpolation/TextureInterpolation.swift",
        "Kernels/TextureMask/TextureMask.swift",
        "Kernels/TextureMaskedMix/TextureMaskedMix.swift",
        "Kernels/TextureMax/TextureMax.swift",
        "Kernels/TextureMean/TextureMean.swift",
        "Kernels/TextureMin/TextureMin.swift",
        "Kernels/TextureMix/TextureMix.swift",
        "Kernels/TextureMultiplyAdd/TextureMultiplyAdd.swift",
        "Kernels/TextureNormalization/TextureNormalization.swift",
        "Kernels/TextureResize/TextureResize.swift",
        "Kernels/TextureWeightedMix/TextureWeightedMix.swift",
        "Kernels/YCbCrToRGBA/YCbCrToRGBA.swift",
        "MetalTools.swift"
      ],
      "target_dependencies" : [
        "MetalComputeToolsSharedTypes",
        "MetalTools"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.