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 Kipple, reference main (7b64f9), with Swift 6.1 for Linux on 28 Apr 2025 19:46:58 UTC.

Swift 6 data race errors: 3

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -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 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/bdrelling/Kipple.git
Reference: main
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/bdrelling/Kipple
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 7b64f96 Updated for Concurrency
Cloned https://github.com/bdrelling/Kipple.git
Revision (git rev-parse @):
7b64f96fa67d68b35722029f2ef02a417a911b62
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/bdrelling/Kipple.git at main
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.1
Building package at path:  $PWD
https://github.com/bdrelling/Kipple.git
https://github.com/bdrelling/Kipple.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
  "dependencies" : [
    {
      "identity" : "swift-algorithms",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.2.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-algorithms"
    },
    {
      "identity" : "swift-collections",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.1.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-collections"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.4",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log"
    },
    {
      "identity" : "kippletools",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.5.3",
            "upper_bound" : "0.6.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/bdrelling/KippleTools"
    },
    {
      "identity" : "devicekit",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "5.2.3",
            "upper_bound" : "6.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/devicekit/DeviceKit"
    },
    {
      "identity" : "keychainaccess",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "4.2.2",
            "upper_bound" : "5.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/kishikawakatsumi/KeychainAccess"
    }
  ],
  "manifest_display_name" : "Kipple",
  "name" : "Kipple",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "16.0"
    },
    {
      "name" : "macos",
      "version" : "13.0"
    },
    {
      "name" : "tvos",
      "version" : "16.0"
    },
    {
      "name" : "watchos",
      "version" : "9.0"
    }
  ],
  "products" : [
    {
      "name" : "Kipple",
      "targets" : [
        "Kipple"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleCodable",
      "targets" : [
        "KippleCodable"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleCollections",
      "targets" : [
        "KippleCollections"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleCombine",
      "targets" : [
        "KippleCombine"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleFoundation",
      "targets" : [
        "KippleFoundation"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleDevice",
      "targets" : [
        "KippleDevice"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleKeychain",
      "targets" : [
        "KippleKeychain"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleLocalStorage",
      "targets" : [
        "KippleLocalStorage"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleLogging",
      "targets" : [
        "KippleLogging"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "KippleLoggingTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleLoggingTests",
      "path" : "Tests/KippleLoggingTests",
      "sources" : [
        "Protocols/LogHandlerValidating.swift",
        "Tests/ConsoleLogHandlerTests.swift"
      ],
      "target_dependencies" : [
        "KippleLogging"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleLogging",
      "module_type" : "SwiftTarget",
      "name" : "KippleLogging",
      "path" : "Sources/KippleLogging",
      "product_dependencies" : [
        "Logging"
      ],
      "product_memberships" : [
        "Kipple",
        "KippleLogging"
      ],
      "sources" : [
        "Exports.swift",
        "Extensions/Logger+Convenience.swift",
        "Handlers/ConsoleLogHandler.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleLocalStorageTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleLocalStorageTests",
      "path" : "Tests/KippleLocalStorageTests",
      "sources" : [
        "UserDefaultsExtensionsTests.swift"
      ],
      "target_dependencies" : [
        "KippleLocalStorage"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleLocalStorage",
      "module_type" : "SwiftTarget",
      "name" : "KippleLocalStorage",
      "path" : "Sources/KippleLocalStorage",
      "product_memberships" : [
        "Kipple",
        "KippleLocalStorage"
      ],
      "sources" : [
        "UserDefaults/UserDefaults+Codable.swift",
        "UserDefaults/UserDefaults+Key.swift",
        "UserDefaults/UserDefaults+Mocked.swift",
        "UserDefaults/UserDefaults+RemoveAllObjects.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleKeychain",
      "module_type" : "SwiftTarget",
      "name" : "KippleKeychain",
      "path" : "Sources/KippleKeychain",
      "product_dependencies" : [
        "KeychainAccess"
      ],
      "product_memberships" : [
        "Kipple",
        "KippleKeychain"
      ],
      "sources" : [
        "Exports.swift",
        "Keychain+Default.swift",
        "Keychain+Key.swift"
      ],
      "target_dependencies" : [
        "KippleFoundation"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleFoundationTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleFoundationTests",
      "path" : "Tests/KippleFoundationTests",
      "sources" : [
        "AppInfoTests.swift",
        "BoolExtensionTests.swift",
        "BundleExtensionTests.swift",
        "BundleInfoTests.swift",
        "ComparableExtensionTests.swift",
        "Int64ClampedTests.swift",
        "IntExtensionTests.swift",
        "ModuloTests.swift",
        "NSNumberExtensionTests.swift",
        "ResultExtensionTests.swift",
        "SemanticVersionTests.swift",
        "StringExtensionTests.swift",
        "StringLocalizedErrorExtensionTests.swift",
        "UInt64ClampedTests.swift",
        "URLConvertibleTests.swift"
      ],
      "target_dependencies" : [
        "KippleFoundation"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleFoundation",
      "module_type" : "SwiftTarget",
      "name" : "KippleFoundation",
      "path" : "Sources/KippleFoundation",
      "product_memberships" : [
        "Kipple",
        "KippleFoundation",
        "KippleDevice",
        "KippleKeychain"
      ],
      "sources" : [
        "Extensions/BinaryInteger+Clamped.swift",
        "Extensions/Bool+Convenience.swift",
        "Extensions/Bundle+Convenience.swift",
        "Extensions/Bundle+Key.swift",
        "Extensions/Comparable+Clamped.swift",
        "Extensions/Int+Convenience.swift",
        "Extensions/NSNumber+Boolean.swift",
        "Extensions/Result+Convenience.swift",
        "Extensions/String+Convenience.swift",
        "Extensions/String+LocalizedError.swift",
        "Extensions/Swift+Modulo.swift",
        "Models/AppInfo.swift",
        "Models/BundleInfo.swift",
        "Models/SemanticVersion.swift",
        "Protocols/URLConvertible.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleDeviceTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleDeviceTests",
      "path" : "Tests/KippleDeviceTests",
      "sources" : [
        "DeviceInfoTests.swift"
      ],
      "target_dependencies" : [
        "KippleDevice"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleDevice",
      "module_type" : "SwiftTarget",
      "name" : "KippleDevice",
      "path" : "Sources/KippleDevice",
      "product_dependencies" : [
        "DeviceKit"
      ],
      "product_memberships" : [
        "Kipple",
        "KippleDevice"
      ],
      "sources" : [
        "DeviceFamily.swift",
        "DeviceInfo.swift"
      ],
      "target_dependencies" : [
        "KippleFoundation"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleCombineTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleCombineTests",
      "path" : "Tests/KippleCombineTests",
      "sources" : [
        "PublisherResultTests.swift"
      ],
      "target_dependencies" : [
        "KippleCombine"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleCombine",
      "module_type" : "SwiftTarget",
      "name" : "KippleCombine",
      "path" : "Sources/KippleCombine",
      "product_memberships" : [
        "Kipple",
        "KippleCombine"
      ],
      "sources" : [
        "Publisher+Result.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleCollectionsTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleCollectionsTests",
      "path" : "Tests/KippleCollectionsTests",
      "sources" : [
        "BidirectionalCollectionExtensionTests.swift",
        "InterleavableDictionaryTests.swift"
      ],
      "target_dependencies" : [
        "KippleCollections"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleCollections",
      "module_type" : "SwiftTarget",
      "name" : "KippleCollections",
      "path" : "Sources/KippleCollections",
      "product_dependencies" : [
        "Algorithms",
        "OrderedCollections"
      ],
      "product_memberships" : [
        "Kipple",
        "KippleCollections"
      ],
      "sources" : [
        "Exports.swift",
        "Extensions/Array+RemoveDuplicates.swift",
        "Extensions/BidirectionalCollection+Looping.swift",
        "Extensions/Collection+Convenience.swift",
        "Extensions/RangeReplaceableCollection+Rotating.swift",
        "Protocols/InterleavableDictionary.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleCodableTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleCodableTests",
      "path" : "Tests/KippleCodableTests",
      "sources" : [
        "CodableDefaultTests.swift",
        "CodableIgnoredTests.swift",
        "DecodingErrorCleanedTests.swift",
        "DictionaryExtensionTests.swift",
        "EncodableAsDictionaryTests.swift",
        "EncodablePrettyPrintedTests.swift"
      ],
      "target_dependencies" : [
        "KippleCodable"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleCodable",
      "module_type" : "SwiftTarget",
      "name" : "KippleCodable",
      "path" : "Sources/KippleCodable",
      "product_memberships" : [
        "Kipple",
        "KippleCodable"
      ],
      "sources" : [
        "Errors/CleanedDecodingError.swift",
        "Errors/KippleCodableError.swift",
        "Extensions/DecodingError+Cleaned.swift",
        "Extensions/Dictionary+AsJSONSerializedData.swift",
        "Extensions/Encodable+AsDictionary.swift",
        "Extensions/Encodable+PrettyPrinted.swift",
        "Extensions/JSONDecoder+DecodeCleaned.swift",
        "Extensions/PropertyListDecoder+DecodeCleaned.swift",
        "PropertyWrappers/CodableDefault.swift",
        "PropertyWrappers/CodableDefaultStrategy.swift",
        "PropertyWrappers/CodableIgnored.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Kipple",
      "module_type" : "SwiftTarget",
      "name" : "Kipple",
      "path" : "Sources/Kipple",
      "product_memberships" : [
        "Kipple"
      ],
      "sources" : [
        "Exports.swift"
      ],
      "target_dependencies" : [
        "KippleCodable",
        "KippleCollections",
        "KippleCombine",
        "KippleFoundation",
        "KippleDevice",
        "KippleKeychain",
        "KippleLocalStorage",
        "KippleLogging"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.8"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -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 2>&1
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Fetching https://github.com/devicekit/DeviceKit
Fetching https://github.com/bdrelling/KippleTools
Fetching https://github.com/apple/swift-log
Fetching https://github.com/apple/swift-algorithms
Fetching https://github.com/kishikawakatsumi/KeychainAccess
Fetching https://github.com/apple/swift-collections
[1/720] Fetching kippletools
[721/4556] Fetching kippletools, swift-log
[952/8942] Fetching kippletools, swift-log, keychainaccess
[4208/14845] Fetching kippletools, swift-log, keychainaccess, swift-algorithms
[5774/18894] Fetching kippletools, swift-log, keychainaccess, swift-algorithms, devicekit
[18281/35136] Fetching kippletools, swift-log, keychainaccess, swift-algorithms, devicekit, swift-collections
Fetched https://github.com/bdrelling/KippleTools from cache (1.18s)
Fetched https://github.com/apple/swift-log from cache (1.24s)
Fetched https://github.com/apple/swift-algorithms from cache (1.24s)
Fetched https://github.com/devicekit/DeviceKit from cache (1.24s)
Fetched https://github.com/kishikawakatsumi/KeychainAccess from cache (1.29s)
Fetched https://github.com/apple/swift-collections from cache (1.29s)
Computing version for https://github.com/kishikawakatsumi/KeychainAccess
Computed https://github.com/kishikawakatsumi/KeychainAccess at 4.2.2 (3.15s)
Computing version for https://github.com/bdrelling/KippleTools
Computed https://github.com/bdrelling/KippleTools at 0.5.4 (0.48s)
Fetching https://github.com/nicklockwood/SwiftFormat
Fetching https://github.com/apple/swift-argument-parser
[1/14950] Fetching swift-argument-parser
[11513/61680] Fetching swift-argument-parser, swiftformat
Fetched https://github.com/apple/swift-argument-parser from cache (27.41s)
Fetched https://github.com/nicklockwood/SwiftFormat from cache (28.02s)
Computing version for https://github.com/apple/swift-algorithms
Computed https://github.com/apple/swift-algorithms at 1.2.1 (31.53s)
Fetching https://github.com/apple/swift-numerics.git
[1/5674] Fetching swift-numerics
Fetched https://github.com/apple/swift-numerics.git from cache (0.38s)
Computing version for https://github.com/apple/swift-argument-parser
Computed https://github.com/apple/swift-argument-parser at 1.5.0 (0.80s)
Computing version for https://github.com/apple/swift-numerics.git
Computed https://github.com/apple/swift-numerics.git at 1.0.3 (0.47s)
Computing version for https://github.com/apple/swift-log
Computed https://github.com/apple/swift-log at 1.6.3 (0.43s)
Computing version for https://github.com/apple/swift-collections
Computed https://github.com/apple/swift-collections at 1.1.4 (0.63s)
Computing version for https://github.com/devicekit/DeviceKit
Computed https://github.com/devicekit/DeviceKit at 5.6.0 (0.46s)
Computing version for https://github.com/nicklockwood/SwiftFormat
Computed https://github.com/nicklockwood/SwiftFormat at 0.55.5 (0.76s)
Creating working copy for https://github.com/devicekit/DeviceKit
Working copy of https://github.com/devicekit/DeviceKit resolved at 5.6.0
Creating working copy for https://github.com/apple/swift-log
Working copy of https://github.com/apple/swift-log resolved at 1.6.3
Creating working copy for https://github.com/apple/swift-algorithms
Working copy of https://github.com/apple/swift-algorithms resolved at 1.2.1
Creating working copy for https://github.com/bdrelling/KippleTools
Working copy of https://github.com/bdrelling/KippleTools resolved at 0.5.4
Creating working copy for https://github.com/apple/swift-collections
Working copy of https://github.com/apple/swift-collections resolved at 1.1.4
Creating working copy for https://github.com/apple/swift-argument-parser
Working copy of https://github.com/apple/swift-argument-parser resolved at 1.5.0
Creating working copy for https://github.com/apple/swift-numerics.git
Working copy of https://github.com/apple/swift-numerics.git resolved at 1.0.3
Creating working copy for https://github.com/nicklockwood/SwiftFormat
Working copy of https://github.com/nicklockwood/SwiftFormat resolved at 0.55.5
Creating working copy for https://github.com/kishikawakatsumi/KeychainAccess
Working copy of https://github.com/kishikawakatsumi/KeychainAccess resolved at 4.2.2
warning: 'devicekit': found 2 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /host/spi-builder-workspace/.build/checkouts/DeviceKit/Source/Info.plist
    /host/spi-builder-workspace/.build/checkouts/DeviceKit/Source/Device.swift.gyb
[1/1] Compiling plugin SwiftFormatPlugin
[2/2] Compiling plugin GenerateManual
Building for debugging...
[2/18] Write sources
[16/18] Compiling _NumericsShims _NumericsShims.c
[16/18] Write swift-version-24593BA9C3E375BF.txt
[19/83] Emitting module InternalCollectionsUtilities
[20/85] Emitting module KippleLocalStorage
/host/spi-builder-workspace/Sources/KippleLocalStorage/UserDefaults/UserDefaults+Key.swift:28:16: warning: static property 'codableStore' is not concurrency-safe because non-'Sendable' type 'UserDefaults' may have shared mutable state; this is an error in the Swift 6 language mode
26 |
27 | public extension UserDefaults {
28 |     static let codableStore = UserDefaults(suiteName: "com.kipple.codablestore")!
   |                |- warning: static property 'codableStore' is not concurrency-safe because non-'Sendable' type 'UserDefaults' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: add '@MainActor' to make static property 'codableStore' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
29 | }
30 |
Foundation.UserDefaults:1:12: note: class 'UserDefaults' does not conform to the 'Sendable' protocol
 1 | open class UserDefaults : NSObject {
   |            `- note: class 'UserDefaults' does not conform to the 'Sendable' protocol
 2 |     open class var standard: UserDefaults { get }
 3 |     open class func resetStandardUserDefaults()
/host/spi-builder-workspace/Sources/KippleLocalStorage/UserDefaults/UserDefaults+Mocked.swift:6:16: warning: static property 'mocked' is not concurrency-safe because non-'Sendable' type 'UserDefaults' may have shared mutable state; this is an error in the Swift 6 language mode
 4 |
 5 | extension UserDefaults {
 6 |     static let mocked: UserDefaults = {
   |                |- warning: static property 'mocked' is not concurrency-safe because non-'Sendable' type 'UserDefaults' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: add '@MainActor' to make static property 'mocked' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 7 |         let name = "com.kipple.mocked"
 8 |         let store = UserDefaults(suiteName: name)!
Foundation.UserDefaults:1:12: note: class 'UserDefaults' does not conform to the 'Sendable' protocol
 1 | open class UserDefaults : NSObject {
   |            `- note: class 'UserDefaults' does not conform to the 'Sendable' protocol
 2 |     open class var standard: UserDefaults { get }
 3 |     open class func resetStandardUserDefaults()
[21/85] Compiling KippleCodable CodableDefaultStrategy.swift
[22/86] Compiling InternalCollectionsUtilities UnsafeBufferPointer+Extras.swift
[23/86] Compiling InternalCollectionsUtilities UnsafeMutableBufferPointer+Extras.swift
[24/86] Compiling RealModule Real.swift
[25/87] Compiling KippleCodable CleanedDecodingError.swift
[26/87] Compiling KippleCodable KippleCodableError.swift
[27/87] Compiling KippleCodable DecodingError+Cleaned.swift
[28/87] Compiling KippleFoundation Swift+Modulo.swift
[29/87] Compiling KippleFoundation AppInfo.swift
[30/87] Compiling InternalCollectionsUtilities RandomAccessCollection+Offsets.swift
[31/87] Compiling InternalCollectionsUtilities Specialize.swift
[34/87] Emitting module RealModule
[35/87] Compiling KippleCodable Dictionary+AsJSONSerializedData.swift
[36/87] Compiling KippleCodable Encodable+AsDictionary.swift
[37/87] Compiling KippleCodable Encodable+PrettyPrinted.swift
[38/87] Compiling KippleFoundation String+Convenience.swift
[39/87] Compiling KippleFoundation String+LocalizedError.swift
[40/87] Compiling KippleFoundation NSNumber+Boolean.swift
[41/87] Compiling KippleFoundation Result+Convenience.swift
[42/87] Compiling KippleFoundation BundleInfo.swift
[43/87] Compiling KippleFoundation SemanticVersion.swift
[44/87] Compiling RealModule Float80+Real.swift
[45/88] Emitting module KippleCombine
[46/88] Compiling KippleCombine Publisher+Result.swift
[47/88] Compiling RealModule ElementaryFunctions.swift
[50/89] Compiling RealModule Float+Real.swift
[51/89] Compiling RealModule Float16+Real.swift
[52/89] Compiling RealModule RealFunctions.swift
[54/90] Compiling KippleCodable CodableIgnored.swift
[59/171] Compiling Logging LogHandler.swift
[60/171] Compiling Logging Logging.swift
[61/171] Compiling Logging MetadataProvider.swift
[62/171] Emitting module Logging
[63/171] Compiling Logging Locks.swift
[64/172] Emitting module KippleCodable
[65/172] Compiling Algorithms AdjacentPairs.swift
[66/172] Compiling Algorithms Chain.swift
[67/172] Compiling Algorithms Chunked.swift
[68/172] Compiling Algorithms Combinations.swift
[69/172] Compiling Algorithms Compacted.swift
[70/172] Compiling Algorithms Cycle.swift
[74/172] Compiling KippleFoundation URLConvertible.swift
[75/172] Compiling Algorithms EitherSequence.swift
/host/spi-builder-workspace/Sources/KippleFoundation/Extensions/String+LocalizedError.swift:7:1: warning: extension declares a conformance of imported type 'String' to imported protocols 'LocalizedError', 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
 5 | /// Extension that allows a normal `String` to be returned as an error,
 6 | /// using itself as the localized error description.
 7 | extension String: LocalizedError {
   | |- warning: extension declares a conformance of imported type 'String' to imported protocols 'LocalizedError', 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
 8 |     public var errorDescription: String? {
 9 |         self
[76/172] Compiling Algorithms FirstNonNil.swift
/host/spi-builder-workspace/Sources/KippleFoundation/Extensions/String+LocalizedError.swift:7:1: warning: extension declares a conformance of imported type 'String' to imported protocols 'LocalizedError', 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
 5 | /// Extension that allows a normal `String` to be returned as an error,
 6 | /// using itself as the localized error description.
 7 | extension String: LocalizedError {
   | |- warning: extension declares a conformance of imported type 'String' to imported protocols 'LocalizedError', 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
 8 |     public var errorDescription: String? {
 9 |         self
[77/172] Compiling Algorithms FlattenCollection.swift
[78/172] Compiling Algorithms Grouped.swift
[79/172] Compiling KippleCodable CodableDefault.swift
[80/173] Compiling KippleLocalStorage UserDefaults+RemoveAllObjects.swift
[81/176] Emitting module KippleFoundation
/host/spi-builder-workspace/Sources/KippleFoundation/Extensions/String+LocalizedError.swift:7:1: warning: extension declares a conformance of imported type 'String' to imported protocols 'LocalizedError', 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
 5 | /// Extension that allows a normal `String` to be returned as an error,
 6 | /// using itself as the localized error description.
 7 | extension String: LocalizedError {
   | |- warning: extension declares a conformance of imported type 'String' to imported protocols 'LocalizedError', 'Error'; this will not behave correctly if the owners of 'Swift' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
 8 |     public var errorDescription: String? {
 9 |         self
[86/176] Compiling KippleCodable JSONDecoder+DecodeCleaned.swift
[87/176] Compiling KippleCodable PropertyListDecoder+DecodeCleaned.swift
[88/176] Compiling KippleLocalStorage UserDefaults+Codable.swift
[89/177] Compiling KippleLocalStorage UserDefaults+Key.swift
/host/spi-builder-workspace/Sources/KippleLocalStorage/UserDefaults/UserDefaults+Key.swift:28:16: warning: static property 'codableStore' is not concurrency-safe because non-'Sendable' type 'UserDefaults' may have shared mutable state; this is an error in the Swift 6 language mode
26 |
27 | public extension UserDefaults {
28 |     static let codableStore = UserDefaults(suiteName: "com.kipple.codablestore")!
   |                |- warning: static property 'codableStore' is not concurrency-safe because non-'Sendable' type 'UserDefaults' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: add '@MainActor' to make static property 'codableStore' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
29 | }
30 |
Foundation.UserDefaults:1:12: note: class 'UserDefaults' does not conform to the 'Sendable' protocol
 1 | open class UserDefaults : NSObject {
   |            `- note: class 'UserDefaults' does not conform to the 'Sendable' protocol
 2 |     open class var standard: UserDefaults { get }
 3 |     open class func resetStandardUserDefaults()
[90/177] Compiling OrderedCollections OrderedSet+Initializers.swift
[91/177] Compiling OrderedCollections OrderedSet+Insertions.swift
[92/177] Compiling OrderedCollections OrderedSet+Invariants.swift
[93/177] Compiling OrderedCollections OrderedSet+Partial MutableCollection.swift
[94/177] Compiling OrderedCollections OrderedSet+Partial RangeReplaceableCollection.swift
[95/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra formIntersection.swift
[96/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra formSymmetricDifference.swift
[97/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra formUnion.swift
[98/177] Compiling KippleLocalStorage UserDefaults+Mocked.swift
/host/spi-builder-workspace/Sources/KippleLocalStorage/UserDefaults/UserDefaults+Mocked.swift:6:16: warning: static property 'mocked' is not concurrency-safe because non-'Sendable' type 'UserDefaults' may have shared mutable state; this is an error in the Swift 6 language mode
 4 |
 5 | extension UserDefaults {
 6 |     static let mocked: UserDefaults = {
   |                |- warning: static property 'mocked' is not concurrency-safe because non-'Sendable' type 'UserDefaults' may have shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: add '@MainActor' to make static property 'mocked' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 7 |         let name = "com.kipple.mocked"
 8 |         let store = UserDefaults(suiteName: name)!
Foundation.UserDefaults:1:12: note: class 'UserDefaults' does not conform to the 'Sendable' protocol
 1 | open class UserDefaults : NSObject {
   |            `- note: class 'UserDefaults' does not conform to the 'Sendable' protocol
 2 |     open class var standard: UserDefaults { get }
 3 |     open class func resetStandardUserDefaults()
[99/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra intersection.swift
[100/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra isDisjoint.swift
[101/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra isEqualSet.swift
[102/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra isStrictSubset.swift
[103/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra isStrictSuperset.swift
[104/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra isSubset.swift
[105/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra isSuperset.swift
[106/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra subtract.swift
[107/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra subtracting.swift
[108/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra symmetricDifference.swift
[109/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra union.swift
[110/177] Compiling OrderedCollections OrderedSet+Partial SetAlgebra+Basics.swift
[111/177] Compiling OrderedCollections OrderedSet+RandomAccessCollection.swift
[112/177] Compiling OrderedCollections OrderedSet+ReserveCapacity.swift
[113/185] Compiling OrderedCollections OrderedDictionary.swift
[114/185] Compiling OrderedCollections OrderedSet+Codable.swift
[115/185] Compiling OrderedCollections OrderedSet+CustomReflectable.swift
[116/185] Compiling OrderedCollections OrderedSet+Descriptions.swift
[117/185] Compiling OrderedCollections OrderedSet+Diffing.swift
[118/185] Compiling OrderedCollections OrderedSet+Equatable.swift
[119/185] Compiling OrderedCollections OrderedSet+ExpressibleByArrayLiteral.swift
[120/185] Compiling OrderedCollections OrderedSet+Hashable.swift
[123/185] Compiling Algorithms Joined.swift
[124/185] Compiling Algorithms Keyed.swift
[125/186] Compiling KippleLogging Exports.swift
[126/186] Emitting module KippleLogging
/host/spi-builder-workspace/Sources/KippleLogging/Handlers/ConsoleLogHandler.swift:16:23: warning: static property 'globalLogLevel' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 14 |     /// The `logLevel` of an individual `ConsoleLogHandler` is ignored when this global
 15 |     /// log level is set to a higher level.
 16 |     public static var globalLogLevel: Logger.Level?
    |                       |- warning: static property 'globalLogLevel' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'globalLogLevel' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'globalLogLevel' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 17 |
 18 |     /// The log label for the log handler.
[129/186] Compiling Algorithms Indexed.swift
[130/186] Compiling Algorithms Intersperse.swift
[133/186] Compiling Algorithms MinMax.swift
[134/186] Compiling Algorithms Partition.swift
[135/186] Compiling Algorithms Permutations.swift
[136/186] Compiling Algorithms Product.swift
[137/186] Compiling Algorithms Split.swift
[138/186] Compiling Algorithms Stride.swift
[139/186] Compiling Algorithms Suffix.swift
[140/186] Compiling Algorithms RandomSample.swift
[141/186] Compiling Algorithms Reductions.swift
[142/186] Compiling Algorithms Rotate.swift
[150/189] Compiling KippleLogging Logger+Convenience.swift
[151/189] Compiling KippleLogging ConsoleLogHandler.swift
/host/spi-builder-workspace/Sources/KippleLogging/Handlers/ConsoleLogHandler.swift:16:23: warning: static property 'globalLogLevel' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 14 |     /// The `logLevel` of an individual `ConsoleLogHandler` is ignored when this global
 15 |     /// log level is set to a higher level.
 16 |     public static var globalLogLevel: Logger.Level?
    |                       |- warning: static property 'globalLogLevel' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'globalLogLevel' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'globalLogLevel' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 17 |
 18 |     /// The log label for the log handler.
[159/190] Compiling Algorithms Trim.swift
[160/190] Compiling Algorithms Unique.swift
[161/190] Compiling Algorithms Windows.swift
[178/194] Emitting module OrderedCollections
[179/197] Compiling KippleKeychain Keychain+Key.swift
[180/197] Compiling KippleKeychain Keychain+Default.swift
[181/197] Emitting module KippleKeychain
[182/197] Compiling KippleKeychain Exports.swift
[183/198] Emitting module KippleDevice
[185/198] Compiling OrderedCollections OrderedSet+Sendable.swift
[186/198] Compiling OrderedCollections OrderedSet+SubSequence.swift
[187/198] Compiling OrderedCollections OrderedSet+Testing.swift
[188/198] Compiling OrderedCollections OrderedSet+UnorderedView.swift
[189/198] Compiling OrderedCollections OrderedSet+UnstableInternals.swift
[190/198] Compiling OrderedCollections OrderedSet.swift
[191/198] Compiling OrderedCollections _UnsafeBitset.swift
[192/199] Compiling KippleDevice DeviceFamily.swift
[193/199] Compiling KippleDevice DeviceInfo.swift
[200/200] Emitting module Algorithms
[202/208] Compiling KippleCollections Collection+Convenience.swift
[203/208] Compiling KippleCollections RangeReplaceableCollection+Rotating.swift
[204/208] Compiling KippleCollections InterleavableDictionary.swift
[205/208] Compiling KippleCollections Array+RemoveDuplicates.swift
[206/208] Compiling KippleCollections Exports.swift
[207/208] Emitting module KippleCollections
[208/208] Compiling KippleCollections BidirectionalCollection+Looping.swift
[210/211] Emitting module Kipple
[211/211] Compiling Kipple Exports.swift
Build complete! (73.84s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-algorithms",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.2.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-algorithms"
    },
    {
      "identity" : "swift-collections",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.1.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-collections"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.4",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log"
    },
    {
      "identity" : "kippletools",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.5.3",
            "upper_bound" : "0.6.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/bdrelling/KippleTools"
    },
    {
      "identity" : "devicekit",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "5.2.3",
            "upper_bound" : "6.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/devicekit/DeviceKit"
    },
    {
      "identity" : "keychainaccess",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "4.2.2",
            "upper_bound" : "5.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/kishikawakatsumi/KeychainAccess"
    }
  ],
  "manifest_display_name" : "Kipple",
  "name" : "Kipple",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "16.0"
    },
    {
      "name" : "macos",
      "version" : "13.0"
    },
    {
      "name" : "tvos",
      "version" : "16.0"
    },
    {
      "name" : "watchos",
      "version" : "9.0"
    }
  ],
  "products" : [
    {
      "name" : "Kipple",
      "targets" : [
        "Kipple"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleCodable",
      "targets" : [
        "KippleCodable"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleCollections",
      "targets" : [
        "KippleCollections"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleCombine",
      "targets" : [
        "KippleCombine"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleFoundation",
      "targets" : [
        "KippleFoundation"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleDevice",
      "targets" : [
        "KippleDevice"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleKeychain",
      "targets" : [
        "KippleKeychain"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleLocalStorage",
      "targets" : [
        "KippleLocalStorage"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "KippleLogging",
      "targets" : [
        "KippleLogging"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "KippleLoggingTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleLoggingTests",
      "path" : "Tests/KippleLoggingTests",
      "sources" : [
        "Protocols/LogHandlerValidating.swift",
        "Tests/ConsoleLogHandlerTests.swift"
      ],
      "target_dependencies" : [
        "KippleLogging"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleLogging",
      "module_type" : "SwiftTarget",
      "name" : "KippleLogging",
      "path" : "Sources/KippleLogging",
      "product_dependencies" : [
        "Logging"
      ],
      "product_memberships" : [
        "Kipple",
        "KippleLogging"
      ],
      "sources" : [
        "Exports.swift",
        "Extensions/Logger+Convenience.swift",
        "Handlers/ConsoleLogHandler.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleLocalStorageTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleLocalStorageTests",
      "path" : "Tests/KippleLocalStorageTests",
      "sources" : [
        "UserDefaultsExtensionsTests.swift"
      ],
      "target_dependencies" : [
        "KippleLocalStorage"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleLocalStorage",
      "module_type" : "SwiftTarget",
      "name" : "KippleLocalStorage",
      "path" : "Sources/KippleLocalStorage",
      "product_memberships" : [
        "Kipple",
        "KippleLocalStorage"
      ],
      "sources" : [
        "UserDefaults/UserDefaults+Codable.swift",
        "UserDefaults/UserDefaults+Key.swift",
        "UserDefaults/UserDefaults+Mocked.swift",
        "UserDefaults/UserDefaults+RemoveAllObjects.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleKeychain",
      "module_type" : "SwiftTarget",
      "name" : "KippleKeychain",
      "path" : "Sources/KippleKeychain",
      "product_dependencies" : [
        "KeychainAccess"
      ],
      "product_memberships" : [
        "Kipple",
        "KippleKeychain"
      ],
      "sources" : [
        "Exports.swift",
        "Keychain+Default.swift",
        "Keychain+Key.swift"
      ],
      "target_dependencies" : [
        "KippleFoundation"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleFoundationTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleFoundationTests",
      "path" : "Tests/KippleFoundationTests",
      "sources" : [
        "AppInfoTests.swift",
        "BoolExtensionTests.swift",
        "BundleExtensionTests.swift",
        "BundleInfoTests.swift",
        "ComparableExtensionTests.swift",
        "Int64ClampedTests.swift",
        "IntExtensionTests.swift",
        "ModuloTests.swift",
        "NSNumberExtensionTests.swift",
        "ResultExtensionTests.swift",
        "SemanticVersionTests.swift",
        "StringExtensionTests.swift",
        "StringLocalizedErrorExtensionTests.swift",
        "UInt64ClampedTests.swift",
        "URLConvertibleTests.swift"
      ],
      "target_dependencies" : [
        "KippleFoundation"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleFoundation",
      "module_type" : "SwiftTarget",
      "name" : "KippleFoundation",
      "path" : "Sources/KippleFoundation",
      "product_memberships" : [
        "Kipple",
        "KippleFoundation",
        "KippleDevice",
        "KippleKeychain"
      ],
      "sources" : [
        "Extensions/BinaryInteger+Clamped.swift",
        "Extensions/Bool+Convenience.swift",
        "Extensions/Bundle+Convenience.swift",
        "Extensions/Bundle+Key.swift",
        "Extensions/Comparable+Clamped.swift",
        "Extensions/Int+Convenience.swift",
        "Extensions/NSNumber+Boolean.swift",
        "Extensions/Result+Convenience.swift",
        "Extensions/String+Convenience.swift",
        "Extensions/String+LocalizedError.swift",
        "Extensions/Swift+Modulo.swift",
        "Models/AppInfo.swift",
        "Models/BundleInfo.swift",
        "Models/SemanticVersion.swift",
        "Protocols/URLConvertible.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleDeviceTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleDeviceTests",
      "path" : "Tests/KippleDeviceTests",
      "sources" : [
        "DeviceInfoTests.swift"
      ],
      "target_dependencies" : [
        "KippleDevice"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleDevice",
      "module_type" : "SwiftTarget",
      "name" : "KippleDevice",
      "path" : "Sources/KippleDevice",
      "product_dependencies" : [
        "DeviceKit"
      ],
      "product_memberships" : [
        "Kipple",
        "KippleDevice"
      ],
      "sources" : [
        "DeviceFamily.swift",
        "DeviceInfo.swift"
      ],
      "target_dependencies" : [
        "KippleFoundation"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleCombineTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleCombineTests",
      "path" : "Tests/KippleCombineTests",
      "sources" : [
        "PublisherResultTests.swift"
      ],
      "target_dependencies" : [
        "KippleCombine"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleCombine",
      "module_type" : "SwiftTarget",
      "name" : "KippleCombine",
      "path" : "Sources/KippleCombine",
      "product_memberships" : [
        "Kipple",
        "KippleCombine"
      ],
      "sources" : [
        "Publisher+Result.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleCollectionsTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleCollectionsTests",
      "path" : "Tests/KippleCollectionsTests",
      "sources" : [
        "BidirectionalCollectionExtensionTests.swift",
        "InterleavableDictionaryTests.swift"
      ],
      "target_dependencies" : [
        "KippleCollections"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleCollections",
      "module_type" : "SwiftTarget",
      "name" : "KippleCollections",
      "path" : "Sources/KippleCollections",
      "product_dependencies" : [
        "Algorithms",
        "OrderedCollections"
      ],
      "product_memberships" : [
        "Kipple",
        "KippleCollections"
      ],
      "sources" : [
        "Exports.swift",
        "Extensions/Array+RemoveDuplicates.swift",
        "Extensions/BidirectionalCollection+Looping.swift",
        "Extensions/Collection+Convenience.swift",
        "Extensions/RangeReplaceableCollection+Rotating.swift",
        "Protocols/InterleavableDictionary.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "KippleCodableTests",
      "module_type" : "SwiftTarget",
      "name" : "KippleCodableTests",
      "path" : "Tests/KippleCodableTests",
      "sources" : [
        "CodableDefaultTests.swift",
        "CodableIgnoredTests.swift",
        "DecodingErrorCleanedTests.swift",
        "DictionaryExtensionTests.swift",
        "EncodableAsDictionaryTests.swift",
        "EncodablePrettyPrintedTests.swift"
      ],
      "target_dependencies" : [
        "KippleCodable"
      ],
      "type" : "test"
    },
    {
      "c99name" : "KippleCodable",
      "module_type" : "SwiftTarget",
      "name" : "KippleCodable",
      "path" : "Sources/KippleCodable",
      "product_memberships" : [
        "Kipple",
        "KippleCodable"
      ],
      "sources" : [
        "Errors/CleanedDecodingError.swift",
        "Errors/KippleCodableError.swift",
        "Extensions/DecodingError+Cleaned.swift",
        "Extensions/Dictionary+AsJSONSerializedData.swift",
        "Extensions/Encodable+AsDictionary.swift",
        "Extensions/Encodable+PrettyPrinted.swift",
        "Extensions/JSONDecoder+DecodeCleaned.swift",
        "Extensions/PropertyListDecoder+DecodeCleaned.swift",
        "PropertyWrappers/CodableDefault.swift",
        "PropertyWrappers/CodableDefaultStrategy.swift",
        "PropertyWrappers/CodableIgnored.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Kipple",
      "module_type" : "SwiftTarget",
      "name" : "Kipple",
      "path" : "Sources/Kipple",
      "product_memberships" : [
        "Kipple"
      ],
      "sources" : [
        "Exports.swift"
      ],
      "target_dependencies" : [
        "KippleCodable",
        "KippleCollections",
        "KippleCombine",
        "KippleFoundation",
        "KippleDevice",
        "KippleKeychain",
        "KippleLocalStorage",
        "KippleLogging"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.8"
}
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Done.