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 SwiftOutdated, reference 0.9.0 (6dbb22), with Swift 6.0 for Linux on 3 Nov 2024 22:31:38 UTC.

Swift 6 data race errors: 0

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.56.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/kiliankoe/swift-outdated.git
Reference: 0.9.0
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
From https://github.com/kiliankoe/swift-outdated
 * tag               0.9.0      -> FETCH_HEAD
HEAD is now at 6dbb22f bump version to 0.9.0
Cloned https://github.com/kiliankoe/swift-outdated.git
Revision (git rev-parse @):
6dbb22f79874b75b5c95daa0a21d66082f6aeefc
SUCCESS checkout https://github.com/kiliankoe/swift-outdated.git at 0.9.0
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.0
Building package at path:  $PWD
https://github.com/kiliankoe/swift-outdated.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:47d26c99ca4f1ac0a332c85fd5b13ff4390e72115219984a57a68fe9d1063a05
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Fetching https://github.com/johnsundell/ShellOut.git
Fetching https://github.com/scottrhoyt/SwiftyTextTable.git
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/mxcl/Version.git
Fetching https://github.com/johnsundell/Files.git
Fetching https://github.com/onevcat/Rainbow.git
[1/929] Fetching swiftytexttable
[930/1217] Fetching swiftytexttable, version
[1057/2448] Fetching swiftytexttable, version, files
[1514/3408] Fetching swiftytexttable, version, files, shellout
[3345/4534] Fetching swiftytexttable, version, files, shellout, rainbow
[3695/8194] Fetching swiftytexttable, version, files, shellout, rainbow, swift-log
Fetched https://github.com/johnsundell/ShellOut.git from cache (0.25s)
[6905/7234] Fetching swiftytexttable, version, files, rainbow, swift-log
Fetching https://github.com/apple/swift-argument-parser.git
Fetched https://github.com/johnsundell/Files.git from cache (0.34s)
Fetched https://github.com/onevcat/Rainbow.git from cache (0.34s)
Fetched https://github.com/mxcl/Version.git from cache (0.34s)
Fetched https://github.com/scottrhoyt/SwiftyTextTable.git from cache (0.34s)
Fetched https://github.com/apple/swift-log.git from cache (0.35s)
[1/12353] Fetching swift-argument-parser
Fetched https://github.com/apple/swift-argument-parser.git from cache (0.65s)
Computing version for https://github.com/scottrhoyt/SwiftyTextTable.git
Computed https://github.com/scottrhoyt/SwiftyTextTable.git at 0.9.0 (1.81s)
Computing version for https://github.com/johnsundell/ShellOut.git
Computed https://github.com/johnsundell/ShellOut.git at 2.3.0 (2.08s)
Computing version for https://github.com/mxcl/Version.git
Computed https://github.com/mxcl/Version.git at 2.1.0 (0.42s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.1 (0.38s)
Computing version for https://github.com/johnsundell/Files.git
Computed https://github.com/johnsundell/Files.git at 4.2.0 (0.42s)
Computing version for https://github.com/onevcat/Rainbow.git
Computed https://github.com/onevcat/Rainbow.git at 3.2.0 (0.69s)
Computing version for https://github.com/apple/swift-argument-parser.git
Computed https://github.com/apple/swift-argument-parser.git at 1.5.0 (0.73s)
Creating working copy for https://github.com/scottrhoyt/SwiftyTextTable.git
Working copy of https://github.com/scottrhoyt/SwiftyTextTable.git resolved at 0.9.0
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.1
Creating working copy for https://github.com/johnsundell/Files.git
Working copy of https://github.com/johnsundell/Files.git resolved at 4.2.0
Creating working copy for https://github.com/johnsundell/ShellOut.git
Working copy of https://github.com/johnsundell/ShellOut.git resolved at 2.3.0
Creating working copy for https://github.com/mxcl/Version.git
Working copy of https://github.com/mxcl/Version.git resolved at 2.1.0
Creating working copy for https://github.com/onevcat/Rainbow.git
Working copy of https://github.com/onevcat/Rainbow.git resolved at 3.2.0
Creating working copy for https://github.com/apple/swift-argument-parser.git
Working copy of https://github.com/apple/swift-argument-parser.git resolved at 1.5.0
[1/1] Compiling plugin GenerateManual
Building for debugging...
[1/24] Write sources
[11/24] Write swift-version-24593BA9C3E375BF.txt
[13/54] Emitting module Files
[14/54] Compiling Rainbow StringGenerator.swift
[15/54] Compiling Rainbow Style.swift
[16/55] Compiling Version Version+Range.swift
[17/55] Compiling Version Version.swift
[18/55] Compiling ArgumentParserToolInfo ToolInfo.swift
[19/55] Compiling Version Version+Codable.swift
[20/55] Emitting module Version
[21/55] Emitting module ArgumentParserToolInfo
[22/55] Compiling Rainbow String+Rainbow.swift
[23/56] Compiling Rainbow XcodeColorsSupport.swift
[24/56] Wrapping AST for ArgumentParserToolInfo for debugging
[26/56] Compiling Logging MetadataProvider.swift
[27/56] Compiling Logging Logging.swift
[28/56] Compiling Logging LogHandler.swift
[29/56] Emitting module Logging
[30/56] Compiling Logging Locks.swift
[31/95] Wrapping AST for Logging for debugging
[33/95] Compiling Version Version+Comparable.swift
[34/95] Compiling Version Version+Foundation.swift
[36/96] Compiling ShellOut ShellOut.swift
[37/96] Emitting module ShellOut
[38/96] Emitting module SwiftyTextTable
[39/96] Compiling SwiftyTextTable TextTable.swift
[40/98] Compiling Rainbow Rainbow.swift
[43/98] Compiling ArgumentParser FishCompletionsGenerator.swift
[44/98] Compiling ArgumentParser ZshCompletionsGenerator.swift
[45/98] Compiling ArgumentParser BashCompletionsGenerator.swift
[46/98] Compiling ArgumentParser CompletionsGenerator.swift
[47/98] Emitting module Rainbow
[48/98] Compiling ArgumentParser Argument.swift
[49/98] Compiling ArgumentParser ArgumentHelp.swift
[56/99] Emitting module ArgumentParser
[57/99] Compiling ArgumentParser ArgumentVisibility.swift
[58/99] Compiling ArgumentParser CompletionKind.swift
[59/99] Compiling ArgumentParser Errors.swift
[60/99] Compiling ArgumentParser Flag.swift
[61/99] Compiling ArgumentParser NameSpecification.swift
[62/99] Compiling ArgumentParser Option.swift
[63/99] Compiling Files Files.swift
[66/100] Compiling ArgumentParser ExpressibleByArgument.swift
[67/100] Compiling ArgumentParser ParsableArguments.swift
[68/100] Compiling ArgumentParser ParsableArgumentsValidation.swift
[69/100] Compiling ArgumentParser ParsableCommand.swift
[70/100] Compiling ArgumentParser ArgumentDecoder.swift
[71/100] Compiling ArgumentParser OptionGroup.swift
[72/100] Compiling ArgumentParser AsyncParsableCommand.swift
[73/100] Compiling ArgumentParser CommandConfiguration.swift
[74/100] Compiling ArgumentParser CommandGroup.swift
[75/100] Compiling ArgumentParser EnumerableFlag.swift
[76/100] Compiling ArgumentParser ArgumentDefinition.swift
[77/100] Compiling ArgumentParser ArgumentSet.swift
[78/100] Compiling ArgumentParser CommandParser.swift
[79/100] Compiling ArgumentParser InputKey.swift
[80/100] Compiling ArgumentParser InputOrigin.swift
[81/100] Compiling ArgumentParser Name.swift
[82/100] Compiling ArgumentParser Parsed.swift
[83/100] Compiling ArgumentParser ParsedValues.swift
[84/100] Compiling ArgumentParser ParserError.swift
[85/100] Compiling ArgumentParser SplitArguments.swift
[86/100] Compiling ArgumentParser DumpHelpGenerator.swift
[87/100] Compiling ArgumentParser HelpCommand.swift
[88/100] Compiling ArgumentParser HelpGenerator.swift
[89/100] Compiling ArgumentParser MessageInfo.swift
[90/100] Compiling ArgumentParser UsageGenerator.swift
[90/100] Wrapping AST for Version for debugging
[91/105] Wrapping AST for SwiftyTextTable for debugging
[92/105] Wrapping AST for ShellOut for debugging
[93/105] Wrapping AST for Rainbow for debugging
[94/105] Wrapping AST for Files for debugging
[96/112] Compiling Outdated Pin.swift
[97/112] Compiling Outdated ConcurrentDictionary.swift
/host/spi-builder-workspace/Sources/Outdated/ConcurrentDictionary.swift:32:17: warning: capture of 'self' with non-sendable type 'ConcurrentDictionary<Key, Value>?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | class ConcurrentDictionary<Key: Hashable, Value>: Collection {
   |       `- note: generic class 'ConcurrentDictionary' does not conform to the 'Sendable' protocol
 4 |     private var dictionary: [Key: Value]
 5 |     private let concurrentQueue = DispatchQueue(label: UUID().uuidString, attributes: .concurrent)
   :
30 |         set(newValue) {
31 |             concurrentQueue.async(flags: .barrier) { [weak self] in
32 |                 self?.dictionary[key] = newValue
   |                 `- warning: capture of 'self' with non-sendable type 'ConcurrentDictionary<Key, Value>?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
33 |             }
34 |         }
/host/spi-builder-workspace/Sources/Outdated/ConcurrentDictionary.swift:32:34: warning: capture of 'key' with non-sendable type 'Key' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | class ConcurrentDictionary<Key: Hashable, Value>: Collection {
   |                            `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
 4 |     private var dictionary: [Key: Value]
 5 |     private let concurrentQueue = DispatchQueue(label: UUID().uuidString, attributes: .concurrent)
   :
30 |         set(newValue) {
31 |             concurrentQueue.async(flags: .barrier) { [weak self] in
32 |                 self?.dictionary[key] = newValue
   |                                  `- warning: capture of 'key' with non-sendable type 'Key' in a `@Sendable` closure; this is an error in the Swift 6 language mode
33 |             }
34 |         }
/host/spi-builder-workspace/Sources/Outdated/ConcurrentDictionary.swift:32:41: warning: capture of 'newValue' with non-sendable type 'Value?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | class ConcurrentDictionary<Key: Hashable, Value>: Collection {
   |                                           `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
 4 |     private var dictionary: [Key: Value]
 5 |     private let concurrentQueue = DispatchQueue(label: UUID().uuidString, attributes: .concurrent)
   :
30 |         set(newValue) {
31 |             concurrentQueue.async(flags: .barrier) { [weak self] in
32 |                 self?.dictionary[key] = newValue
   |                                         `- warning: capture of 'newValue' with non-sendable type 'Value?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
33 |             }
34 |         }
/host/spi-builder-workspace/Sources/Outdated/ConcurrentDictionary.swift:50:13: warning: capture of 'self' with non-sendable type 'ConcurrentDictionary<Key, Value>?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | class ConcurrentDictionary<Key: Hashable, Value>: Collection {
   |       `- note: generic class 'ConcurrentDictionary' does not conform to the 'Sendable' protocol
 4 |     private var dictionary: [Key: Value]
 5 |     private let concurrentQueue = DispatchQueue(label: UUID().uuidString, attributes: .concurrent)
   :
48 |     func removeValue(forKey key: Key) {
49 |         concurrentQueue.async(flags: .barrier) { [weak self] in
50 |             self?.dictionary.removeValue(forKey: key)
   |             `- warning: capture of 'self' with non-sendable type 'ConcurrentDictionary<Key, Value>?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
51 |         }
52 |     }
/host/spi-builder-workspace/Sources/Outdated/ConcurrentDictionary.swift:50:50: warning: capture of 'key' with non-sendable type 'Key' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | class ConcurrentDictionary<Key: Hashable, Value>: Collection {
   |                            `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
 4 |     private var dictionary: [Key: Value]
 5 |     private let concurrentQueue = DispatchQueue(label: UUID().uuidString, attributes: .concurrent)
   :
48 |     func removeValue(forKey key: Key) {
49 |         concurrentQueue.async(flags: .barrier) { [weak self] in
50 |             self?.dictionary.removeValue(forKey: key)
   |                                                  `- warning: capture of 'key' with non-sendable type 'Key' in a `@Sendable` closure; this is an error in the Swift 6 language mode
51 |         }
52 |     }
/host/spi-builder-workspace/Sources/Outdated/ConcurrentDictionary.swift:56:13: warning: capture of 'self' with non-sendable type 'ConcurrentDictionary<Key, Value>?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | class ConcurrentDictionary<Key: Hashable, Value>: Collection {
   |       `- note: generic class 'ConcurrentDictionary' does not conform to the 'Sendable' protocol
 4 |     private var dictionary: [Key: Value]
 5 |     private let concurrentQueue = DispatchQueue(label: UUID().uuidString, attributes: .concurrent)
   :
54 |     func removeAll() {
55 |         concurrentQueue.async(flags: .barrier) { [weak self] in
56 |             self?.dictionary.removeAll()
   |             `- warning: capture of 'self' with non-sendable type 'ConcurrentDictionary<Key, Value>?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
57 |         }
58 |     }
[98/112] Compiling Outdated PackageCollection.swift
[99/112] Emitting module Outdated
[100/112] Compiling Outdated OutdatedPackage.swift
[101/112] Compiling Outdated SwiftPackage.swift
/host/spi-builder-workspace/Sources/Outdated/SwiftPackage.swift:127:30: warning: type 'SwiftPackage' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
  8 | let log = Logger(label: "SwiftOutdated")
  9 |
 10 | public struct SwiftPackage: Hashable {
    |               `- note: consider making struct 'SwiftPackage' conform to the 'Sendable' protocol
 11 |     public let package: String
 12 |     public let repositoryURL: String
    :
125 |     public static func collectVersions(for packages: [SwiftPackage], ignoringPrerelease: Bool, onlyMajorUpdates: Bool) async -> PackageCollection {
126 |         log.info("Collecting versions for \(packages.map { $0.package }.joined(separator: ", ")).")
127 |         let versions = await withTaskGroup(of: (SwiftPackage, [Version]?).self) { group in
    |                              `- warning: type 'SwiftPackage' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
128 |             for package in packages where package.hasResolvedVersion {
129 |                 log.info("Package \(package.package) has resolved version, queueing version fetch.")
/host/spi-builder-workspace/Sources/Outdated/SwiftPackage.swift:127:81: warning: type 'SwiftPackage' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
  8 | let log = Logger(label: "SwiftOutdated")
  9 |
 10 | public struct SwiftPackage: Hashable {
    |               `- note: consider making struct 'SwiftPackage' conform to the 'Sendable' protocol
 11 |     public let package: String
 12 |     public let repositoryURL: String
    :
125 |     public static func collectVersions(for packages: [SwiftPackage], ignoringPrerelease: Bool, onlyMajorUpdates: Bool) async -> PackageCollection {
126 |         log.info("Collecting versions for \(packages.map { $0.package }.joined(separator: ", ")).")
127 |         let versions = await withTaskGroup(of: (SwiftPackage, [Version]?).self) { group in
    |                                                                                 `- warning: type 'SwiftPackage' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
128 |             for package in packages where package.hasResolvedVersion {
129 |                 log.info("Package \(package.package) has resolved version, queueing version fetch.")
/host/spi-builder-workspace/Sources/Outdated/SwiftPackage.swift:130:23: warning: type 'SwiftPackage' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
  8 | let log = Logger(label: "SwiftOutdated")
  9 |
 10 | public struct SwiftPackage: Hashable {
    |               `- note: consider making struct 'SwiftPackage' conform to the 'Sendable' protocol
 11 |     public let package: String
 12 |     public let repositoryURL: String
    :
128 |             for package in packages where package.hasResolvedVersion {
129 |                 log.info("Package \(package.package) has resolved version, queueing version fetch.")
130 |                 group.addTask {
    |                       `- warning: type 'SwiftPackage' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
131 |                     let availableVersions = package.availableVersions()
132 |                     log.info("Found \(availableVersions.count) versions for \(package.package).")
/host/spi-builder-workspace/Sources/Outdated/SwiftPackage.swift:130:31: 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
128 |             for package in packages where package.hasResolvedVersion {
129 |                 log.info("Package \(package.package) has resolved version, queueing version fetch.")
130 |                 group.addTask {
    |                               `- 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
131 |                     let availableVersions = package.availableVersions()
    |                                             `- note: closure captures 'package' which is accessible to code in the current task
132 |                     log.info("Found \(availableVersions.count) versions for \(package.package).")
133 |                     return (package, availableVersions)
[102/112] Compiling Outdated Resolved.swift
[103/113] Compiling ArgumentParser CollectionExtensions.swift
[104/113] Compiling ArgumentParser Platform.swift
[105/113] Compiling ArgumentParser SequenceExtensions.swift
[106/113] Compiling ArgumentParser StringExtensions.swift
[107/113] Compiling ArgumentParser Tree.swift
[109/114] Wrapping AST for Outdated for debugging
[110/114] Wrapping AST for ArgumentParser for debugging
[112/116] Compiling SwiftOutdated SwiftOutdated.swift
/host/spi-builder-workspace/Sources/SwiftOutdated/SwiftOutdated.swift:59:16: warning: capture of 'self' with non-sendable type 'SwiftOutdated' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 9 |
10 | @main
11 | public struct SwiftOutdated: AsyncParsableCommand {
   |               `- note: consider making struct 'SwiftOutdated' conform to the 'Sendable' protocol
12 |     public init() {}
13 |
   :
57 |         LoggingSystem.bootstrap { label in
58 |             var logHandler = StreamLogHandler.standardError(label: label)
59 |             if verbose {
   |                `- warning: capture of 'self' with non-sendable type 'SwiftOutdated' in a `@Sendable` closure; this is an error in the Swift 6 language mode
60 |                 #if DEBUG
61 |                 logHandler.logLevel = .trace
[113/116] Emitting module SwiftOutdated
[114/117] Wrapping AST for SwiftOutdated for debugging
[115/117] Write Objects.LinkFileList
[116/117] Linking swift-outdated
Build complete! (40.00s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-argument-parser",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-argument-parser.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.2",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "version",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.0.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/mxcl/Version.git"
    },
    {
      "identity" : "shellout",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.3.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/johnsundell/ShellOut.git"
    },
    {
      "identity" : "files",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "4.0.0",
            "upper_bound" : "5.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/johnsundell/Files.git"
    },
    {
      "identity" : "swiftytexttable",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.9.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/scottrhoyt/SwiftyTextTable.git"
    },
    {
      "identity" : "rainbow",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "3.0.0",
            "upper_bound" : "4.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/onevcat/Rainbow.git"
    }
  ],
  "manifest_display_name" : "SwiftOutdated",
  "name" : "SwiftOutdated",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.15"
    }
  ],
  "products" : [
    {
      "name" : "swift-outdated",
      "targets" : [
        "SwiftOutdated"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "Outdated",
      "targets" : [
        "Outdated"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SwiftOutdated",
      "module_type" : "SwiftTarget",
      "name" : "SwiftOutdated",
      "path" : "Sources/SwiftOutdated",
      "product_dependencies" : [
        "ArgumentParser",
        "Logging"
      ],
      "product_memberships" : [
        "swift-outdated"
      ],
      "sources" : [
        "SwiftOutdated.swift"
      ],
      "target_dependencies" : [
        "Outdated"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "Outdated",
      "module_type" : "SwiftTarget",
      "name" : "Outdated",
      "path" : "Sources/Outdated",
      "product_dependencies" : [
        "Logging",
        "Files",
        "Rainbow",
        "ShellOut",
        "SwiftyTextTable",
        "Version"
      ],
      "product_memberships" : [
        "swift-outdated",
        "Outdated"
      ],
      "sources" : [
        "ConcurrentDictionary.swift",
        "OutdatedPackage.swift",
        "PackageCollection.swift",
        "Pin.swift",
        "Resolved.swift",
        "SwiftPackage.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.6"
}
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:47d26c99ca4f1ac0a332c85fd5b13ff4390e72115219984a57a68fe9d1063a05
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Done.