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 VideoFrames, reference main (3de476), with Swift 6.0 for macOS (SPM) on 5 Nov 2024 09:30:33 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete

Build Log

========================================
RunAll
========================================
Builder version: 4.56.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/heestand-xyz/VideoFrames.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/heestand-xyz/VideoFrames
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 3de476e Frame Generator Cleanup
Cloned https://github.com/heestand-xyz/VideoFrames.git
Revision (git rev-parse @):
3de476e958b765699eb2f98ca42336acfc262f49
SUCCESS checkout https://github.com/heestand-xyz/VideoFrames.git at main
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "videoframes",
      "name": "VideoFrames",
      "url": "https://github.com/heestand-xyz/VideoFrames.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/VideoFrames",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/heestand-xyz/VideoFrames.git
[1/324] Fetching videoframes
Fetched https://github.com/heestand-xyz/VideoFrames.git from cache (1.24s)
Creating working copy for https://github.com/heestand-xyz/VideoFrames.git
Working copy of https://github.com/heestand-xyz/VideoFrames.git resolved at main (3de476e)
warning: '.resolve-product-dependencies': dependency 'videoframes' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/heestand-xyz/VideoFrames.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version--7754E27361AE5C74.txt
[3/6] Emitting module VideoFrames
[4/6] Compiling VideoFrames ToVideo.swift
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:28:20: warning: unknown operating system for build configuration 'os'
 26 |             return .h264
 27 |         case .proRes:
 28 |             #if os(xrOS)
    |                    |- warning: unknown operating system for build configuration 'os'
    |                    |- note: did you mean 'tvOS'?
    |                    `- note: did you mean 'iOS'?
 29 |             print("VideoFrames - Warning: ProRes is not supported in visionOS. Will fallback to h264.")
 30 |             return .h264
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:55:28: warning: capture of 'images' with non-sendable type '[_Image]' (aka 'Array<NSImage>') in a `@Sendable` closure; this is an error in the Swift 6 language mode
 53 |             do {
 54 |                 try convertFramesToVideo(
 55 |                     count: images.count,
    |                            `- warning: capture of 'images' with non-sendable type '[_Image]' (aka 'Array<NSImage>') in a `@Sendable` closure; this is an error in the Swift 6 language mode
 56 |                     image: { images[$0] },
 57 |                     fps: fps,
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:59:29: warning: capture of 'format' with non-sendable type 'VideoFormat' in a `@Sendable` closure; this is an error in the Swift 6 language mode
  7 | #endif
  8 |
  9 | public enum VideoFormat: String, CaseIterable {
    |             `- note: consider making enum 'VideoFormat' conform to the 'Sendable' protocol
 10 |     case mov
 11 |     case mp4
    :
 57 |                     fps: fps,
 58 |                     kbps: kbps,
 59 |                     format: format,
    |                             `- warning: capture of 'format' with non-sendable type 'VideoFormat' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 60 |                     codec: codec,
 61 |                     url: url,
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:60:28: warning: capture of 'codec' with non-sendable type 'VideoCodec' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 18 | }
 19 |
 20 | public enum VideoCodec: String, CaseIterable {
    |             `- note: consider making enum 'VideoCodec' conform to the 'Sendable' protocol
 21 |     case h264
 22 |     case proRes
    :
 58 |                     kbps: kbps,
 59 |                     format: format,
 60 |                     codec: codec,
    |                            `- warning: capture of 'codec' with non-sendable type 'VideoCodec' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 61 |                     url: url,
 62 |                     frame: { index in
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:63:25: warning: capture of 'frame' with non-sendable type '((Int) -> ())?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 61 |                     url: url,
 62 |                     frame: { index in
 63 |                         frame?(index)
    |                         |- warning: capture of 'frame' with non-sendable type '((Int) -> ())?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 64 |                     }, completion: { result in
 65 |
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:56:30: warning: capture of 'images' with non-sendable type '[_Image]' (aka 'Array<NSImage>') in an isolated closure; this is an error in the Swift 6 language mode
 54 |                 try convertFramesToVideo(
 55 |                     count: images.count,
 56 |                     image: { images[$0] },
    |                              `- warning: capture of 'images' with non-sendable type '[_Image]' (aka 'Array<NSImage>') in an isolated closure; this is an error in the Swift 6 language mode
 57 |                     fps: fps,
 58 |                     kbps: kbps,
Swift.Array:1:23: note: generic struct 'Array' does not conform to the 'Sendable' protocol
1 | @frozen public struct Array<Element> : _DestructorSafeContainer {
  |                       `- note: generic struct 'Array' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:63:25: warning: capture of 'frame' with non-sendable type '((Int) -> ())?' in an isolated closure; this is an error in the Swift 6 language mode
 61 |                     url: url,
 62 |                     frame: { index in
 63 |                         frame?(index)
    |                         |- warning: capture of 'frame' with non-sendable type '((Int) -> ())?' in an isolated closure; this is an error in the Swift 6 language mode
    |                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 64 |                     }, completion: { result in
 65 |
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:149:15: warning: capture of 'input' with non-sendable type 'AVAssetWriterInput' in a `@Sendable` closure; this is an error in the Swift 6 language mode
147 |
148 |     input.requestMediaDataWhenReady(on: queue, using: {
149 |         while input.isReadyForMoreMediaData && frameIndex < count {
    |               `- warning: capture of 'input' with non-sendable type 'AVAssetWriterInput' in a `@Sendable` closure; this is an error in the Swift 6 language mode
150 |             let time: CMTime = CMTimeMake(value: Int64(frameIndex * 1_000),
151 |                                           timescale: Int32(fps * 1_000))
AVFoundation.AVAssetWriterInput:2:12: note: class 'AVAssetWriterInput' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetWriterInput : NSObject {
   |            `- note: class 'AVAssetWriterInput' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:2:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
  1 | import Foundation
  2 | import AVFoundation
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'AVFoundation'
  3 | #if os(macOS)
  4 | import AppKit
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:153:58: warning: capture of 'image' with non-sendable type '(Int) throws -> (_Image)' (aka '(Int) throws -> (NSImage)') in a `@Sendable` closure; this is an error in the Swift 6 language mode
151 |                                           timescale: Int32(fps * 1_000))
152 |             do {
153 |                 let image: _Image = frameIndex > 0 ? try image(frameIndex) : imageZero
    |                                                          |- warning: capture of 'image' with non-sendable type '(Int) throws -> (_Image)' (aka '(Int) throws -> (NSImage)') in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                                                          `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
154 |                 let pixelBuffer: CVPixelBuffer = try getPixelBuffer(from: image)
155 |                 adaptor.append(pixelBuffer, withPresentationTime: time)
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:153:78: warning: capture of 'imageZero' with non-sendable type '_Image' (aka 'NSImage') in a `@Sendable` closure; this is an error in the Swift 6 language mode
151 |                                           timescale: Int32(fps * 1_000))
152 |             do {
153 |                 let image: _Image = frameIndex > 0 ? try image(frameIndex) : imageZero
    |                                                                              `- warning: capture of 'imageZero' with non-sendable type '_Image' (aka 'NSImage') in a `@Sendable` closure; this is an error in the Swift 6 language mode
154 |                 let pixelBuffer: CVPixelBuffer = try getPixelBuffer(from: image)
155 |                 adaptor.append(pixelBuffer, withPresentationTime: time)
AppKit.NSImage:1:12: note: class 'NSImage' does not conform to the 'Sendable' protocol
  1 | open class NSImage : NSObject {
    |            `- note: class 'NSImage' does not conform to the 'Sendable' protocol
  2 |     public /*not inherited*/ init?(named name: NSImage.Name)
  3 |     @available(*, unavailable, renamed: "init(named:)", message: "Not available in Swift")
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:155:17: warning: capture of 'adaptor' with non-sendable type 'AVAssetWriterInputPixelBufferAdaptor' in a `@Sendable` closure; this is an error in the Swift 6 language mode
153 |                 let image: _Image = frameIndex > 0 ? try image(frameIndex) : imageZero
154 |                 let pixelBuffer: CVPixelBuffer = try getPixelBuffer(from: image)
155 |                 adaptor.append(pixelBuffer, withPresentationTime: time)
    |                 `- warning: capture of 'adaptor' with non-sendable type 'AVAssetWriterInputPixelBufferAdaptor' in a `@Sendable` closure; this is an error in the Swift 6 language mode
156 |                 frame(frameIndex)
157 |                 frameIndex += 1
AVFoundation.AVAssetWriterInputPixelBufferAdaptor:2:12: note: class 'AVAssetWriterInputPixelBufferAdaptor' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetWriterInputPixelBufferAdaptor : NSObject {
   |            `- note: class 'AVAssetWriterInputPixelBufferAdaptor' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:156:17: warning: capture of 'frame' with non-sendable type '(Int) -> ()' in a `@Sendable` closure; this is an error in the Swift 6 language mode
154 |                 let pixelBuffer: CVPixelBuffer = try getPixelBuffer(from: image)
155 |                 adaptor.append(pixelBuffer, withPresentationTime: time)
156 |                 frame(frameIndex)
    |                 |- warning: capture of 'frame' with non-sendable type '(Int) -> ()' in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
157 |                 frameIndex += 1
158 |             } catch {
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:159:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a `@Sendable` closure; this is an error in the Swift 6 language mode
157 |                 frameIndex += 1
158 |             } catch {
159 |                 completion(.failure(error))
    |                 |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
160 |                 return
161 |             }
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:165:9: warning: capture of 'writer' with non-sendable type 'AVAssetWriter' in a `@Sendable` closure; this is an error in the Swift 6 language mode
163 |         guard frameIndex >= count else { return }
164 |         input.markAsFinished()
165 |         writer.finishWriting {
    |         `- warning: capture of 'writer' with non-sendable type 'AVAssetWriter' in a `@Sendable` closure; this is an error in the Swift 6 language mode
166 |             guard writer.error == nil else {
167 |                 completion(.failure(writer.error!))
AVFoundation.AVAssetWriter:2:12: note: class 'AVAssetWriter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetWriter : NSObject {
   |            `- note: class 'AVAssetWriter' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:149:48: warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
147 |
148 |     input.requestMediaDataWhenReady(on: queue, using: {
149 |         while input.isReadyForMoreMediaData && frameIndex < count {
    |                                                `- warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
150 |             let time: CMTime = CMTimeMake(value: Int64(frameIndex * 1_000),
151 |                                           timescale: Int32(fps * 1_000))
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:150:56: warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
148 |     input.requestMediaDataWhenReady(on: queue, using: {
149 |         while input.isReadyForMoreMediaData && frameIndex < count {
150 |             let time: CMTime = CMTimeMake(value: Int64(frameIndex * 1_000),
    |                                                        `- warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
151 |                                           timescale: Int32(fps * 1_000))
152 |             do {
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:153:37: warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
151 |                                           timescale: Int32(fps * 1_000))
152 |             do {
153 |                 let image: _Image = frameIndex > 0 ? try image(frameIndex) : imageZero
    |                                     `- warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
154 |                 let pixelBuffer: CVPixelBuffer = try getPixelBuffer(from: image)
155 |                 adaptor.append(pixelBuffer, withPresentationTime: time)
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:153:64: warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
151 |                                           timescale: Int32(fps * 1_000))
152 |             do {
153 |                 let image: _Image = frameIndex > 0 ? try image(frameIndex) : imageZero
    |                                                                `- warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
154 |                 let pixelBuffer: CVPixelBuffer = try getPixelBuffer(from: image)
155 |                 adaptor.append(pixelBuffer, withPresentationTime: time)
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:156:23: warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
154 |                 let pixelBuffer: CVPixelBuffer = try getPixelBuffer(from: image)
155 |                 adaptor.append(pixelBuffer, withPresentationTime: time)
156 |                 frame(frameIndex)
    |                       `- warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
157 |                 frameIndex += 1
158 |             } catch {
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:157:17: warning: mutation of captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
155 |                 adaptor.append(pixelBuffer, withPresentationTime: time)
156 |                 frame(frameIndex)
157 |                 frameIndex += 1
    |                 `- warning: mutation of captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
158 |             } catch {
159 |                 completion(.failure(error))
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:163:15: warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
161 |             }
162 |         }
163 |         guard frameIndex >= count else { return }
    |               `- warning: reference to captured var 'frameIndex' in concurrently-executing code; this is an error in the Swift 6 language mode
164 |         input.markAsFinished()
165 |         writer.finishWriting {
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:166:19: warning: capture of 'writer' with non-sendable type 'AVAssetWriter' in a `@Sendable` closure; this is an error in the Swift 6 language mode
164 |         input.markAsFinished()
165 |         writer.finishWriting {
166 |             guard writer.error == nil else {
    |                   `- warning: capture of 'writer' with non-sendable type 'AVAssetWriter' in a `@Sendable` closure; this is an error in the Swift 6 language mode
167 |                 completion(.failure(writer.error!))
168 |                 return
AVFoundation.AVAssetWriter:2:12: note: class 'AVAssetWriter' does not conform to the 'Sendable' protocol
 1 | @available(macOS 10.7, *)
 2 | open class AVAssetWriter : NSObject {
   |            `- note: class 'AVAssetWriter' does not conform to the 'Sendable' protocol
 3 |     @available(*, unavailable)
 4 |     public convenience init()
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToVideo.swift:167:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a `@Sendable` closure; this is an error in the Swift 6 language mode
165 |         writer.finishWriting {
166 |             guard writer.error == nil else {
167 |                 completion(.failure(writer.error!))
    |                 |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
168 |                 return
169 |             }
[5/6] Compiling VideoFrames ToFrames.swift
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToFrames.swift:39:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 37 |     let frameCount = asset.info.frameCount
 38 |     return AsyncThrowingStream { stream in
 39 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 40 |             for index in 0..<frameCount {
 41 |                 do {
 42 |                     let image: _Image = try await getFrame(at: index, info: asset.info, with: asset.generator)
    |                                                                             `- note: closure captures 'asset' which is accessible to code in the current task
 43 |                     stream.yield(image)
 44 |                 } catch {
/Users/admin/builder/spi-builder-workspace/Sources/VideoFrames/ToFrames.swift:43:28: warning: sending 'image' risks causing data races; this is an error in the Swift 6 language mode
 41 |                 do {
 42 |                     let image: _Image = try await getFrame(at: index, info: asset.info, with: asset.generator)
 43 |                     stream.yield(image)
    |                            |- warning: sending 'image' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'image' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
 44 |                 } catch {
 45 |                     stream.finish(throwing: error)
[6/6] Compiling VideoFrames Shared.swift
Build complete! (11.72s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "VideoFrames",
  "name" : "VideoFrames",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "15.0"
    },
    {
      "name" : "tvos",
      "version" : "15.0"
    },
    {
      "name" : "macos",
      "version" : "12.0"
    },
    {
      "name" : "visionos",
      "version" : "1.0"
    }
  ],
  "products" : [
    {
      "name" : "VideoFrames",
      "targets" : [
        "VideoFrames"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "VideoFramesTests",
      "module_type" : "SwiftTarget",
      "name" : "VideoFramesTests",
      "path" : "Tests/VideoFramesTests",
      "sources" : [
        "VideoFramesTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "VideoFrames"
      ],
      "type" : "test"
    },
    {
      "c99name" : "VideoFrames",
      "module_type" : "SwiftTarget",
      "name" : "VideoFrames",
      "path" : "Sources/VideoFrames",
      "product_memberships" : [
        "VideoFrames"
      ],
      "sources" : [
        "Shared.swift",
        "ToFrames.swift",
        "ToVideo.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.