The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of BCryptSwift, reference master (9d8940), with Swift 6.1 for macOS (SPM) on 14 Aug 2025 01:01:17 UTC.

Swift 6 data race errors: 3

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: 4.66.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/wisetail/BCryptSwift.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/wisetail/BCryptSwift
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at 9d89409 Made tests determine if Pods or SPM
Cloned https://github.com/wisetail/BCryptSwift.git
Revision (git rev-parse @):
9d89409837466ed5e51eb0c1e57cbd88e5d7d89d
SUCCESS checkout https://github.com/wisetail/BCryptSwift.git at master
========================================
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": "bcryptswift",
      "name": "BCryptSwift",
      "url": "https://github.com/wisetail/BCryptSwift.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/BCryptSwift",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/wisetail/BCryptSwift.git
[1/316] Fetching bcryptswift
Fetched https://github.com/wisetail/BCryptSwift.git from cache (0.80s)
Creating working copy for https://github.com/wisetail/BCryptSwift.git
Working copy of https://github.com/wisetail/BCryptSwift.git resolved at master (9d89409)
warning: '.resolve-product-dependencies': dependency 'bcryptswift' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/wisetail/BCryptSwift.git
https://github.com/wisetail/BCryptSwift.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "BCryptSwift",
  "name" : "BCryptSwift",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "macos",
      "version" : "10.13"
    },
    {
      "name" : "tvos",
      "version" : "12.0"
    },
    {
      "name" : "watchos",
      "version" : "5.0"
    }
  ],
  "products" : [
    {
      "name" : "BCryptSwift",
      "targets" : [
        "BCryptSwift"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "BCryptSwiftTests",
      "module_type" : "SwiftTarget",
      "name" : "BCryptSwiftTests",
      "path" : "Example/Tests",
      "sources" : [
        "BCryptSecurityTests.swift",
        "BCryptSwiftTests.swift"
      ],
      "target_dependencies" : [
        "BCryptSwift"
      ],
      "type" : "test"
    },
    {
      "c99name" : "BCryptSwift",
      "module_type" : "SwiftTarget",
      "name" : "BCryptSwift",
      "path" : "BCryptSwift/Classes",
      "product_memberships" : [
        "BCryptSwift"
      ],
      "sources" : [
        "BCryptConfiguration.swift",
        "BCryptError.swift",
        "BCryptSwift.swift",
        "BCryptSwiftModern.swift",
        "BCryptSwiftRandom.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/8] Compiling BCryptSwift BCryptSwiftRandom.swift
[4/8] Compiling BCryptSwift BCryptSwiftModern.swift
/Users/admin/builder/spi-builder-workspace/BCryptSwift/Classes/BCryptSwiftModern.swift:73:18: 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
 71 |     public static func hashPasswordAsync(_ password: String, config: BCryptConfiguration = .default) async throws -> String {
 72 |         return try await withCheckedThrowingContinuation { continuation in
 73 |             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
 74 |                 do {
 75 |                     let salt = try generateSalt(config: config)
    |                                                         `- note: closure captures 'config' which is accessible to code in the current task
 76 |                     let hash = try hashPassword(password, withSalt: salt)
 77 |                     continuation.resume(returning: hash)
[5/8] Compiling BCryptSwift BCryptSwift.swift
[6/8] Compiling BCryptSwift BCryptError.swift
[7/8] Compiling BCryptSwift BCryptConfiguration.swift
/Users/admin/builder/spi-builder-workspace/BCryptSwift/Classes/BCryptConfiguration.swift:45:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
32 |
33 | /// Configuration for BCrypt operations
34 | public struct BCryptConfiguration {
   |               `- note: consider making struct 'BCryptConfiguration' conform to the 'Sendable' protocol
35 |     /// The cost factor (number of rounds). Must be between 4 and 31.
36 |     public let rounds: UInt
   :
43 |
44 |     /// Default configuration with 10 rounds
45 |     public static let `default` = BCryptConfiguration(rounds: 10)
   |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
46 |
47 |     /// Configuration for high security (12 rounds)
/Users/admin/builder/spi-builder-workspace/BCryptSwift/Classes/BCryptConfiguration.swift:48:23: warning: static property 'highSecurity' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
32 |
33 | /// Configuration for BCrypt operations
34 | public struct BCryptConfiguration {
   |               `- note: consider making struct 'BCryptConfiguration' conform to the 'Sendable' protocol
35 |     /// The cost factor (number of rounds). Must be between 4 and 31.
36 |     public let rounds: UInt
   :
46 |
47 |     /// Configuration for high security (12 rounds)
48 |     public static let highSecurity = BCryptConfiguration(rounds: 12)
   |                       |- warning: static property 'highSecurity' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'highSecurity' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
49 |
50 |     /// Configuration for testing (4 rounds - minimum allowed)
/Users/admin/builder/spi-builder-workspace/BCryptSwift/Classes/BCryptConfiguration.swift:51:23: warning: static property 'testing' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
32 |
33 | /// Configuration for BCrypt operations
34 | public struct BCryptConfiguration {
   |               `- note: consider making struct 'BCryptConfiguration' conform to the 'Sendable' protocol
35 |     /// The cost factor (number of rounds). Must be between 4 and 31.
36 |     public let rounds: UInt
   :
49 |
50 |     /// Configuration for testing (4 rounds - minimum allowed)
51 |     public static let testing = BCryptConfiguration(rounds: 4)
   |                       |- warning: static property 'testing' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'testing' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
52 |
53 |     public init(rounds: UInt = 10, version: BCryptVersion = .v2a, maxPasswordLength: Int = 72) {
[8/8] Emitting module BCryptSwift
/Users/admin/builder/spi-builder-workspace/BCryptSwift/Classes/BCryptConfiguration.swift:45:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
32 |
33 | /// Configuration for BCrypt operations
34 | public struct BCryptConfiguration {
   |               `- note: consider making struct 'BCryptConfiguration' conform to the 'Sendable' protocol
35 |     /// The cost factor (number of rounds). Must be between 4 and 31.
36 |     public let rounds: UInt
   :
43 |
44 |     /// Default configuration with 10 rounds
45 |     public static let `default` = BCryptConfiguration(rounds: 10)
   |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
46 |
47 |     /// Configuration for high security (12 rounds)
/Users/admin/builder/spi-builder-workspace/BCryptSwift/Classes/BCryptConfiguration.swift:48:23: warning: static property 'highSecurity' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
32 |
33 | /// Configuration for BCrypt operations
34 | public struct BCryptConfiguration {
   |               `- note: consider making struct 'BCryptConfiguration' conform to the 'Sendable' protocol
35 |     /// The cost factor (number of rounds). Must be between 4 and 31.
36 |     public let rounds: UInt
   :
46 |
47 |     /// Configuration for high security (12 rounds)
48 |     public static let highSecurity = BCryptConfiguration(rounds: 12)
   |                       |- warning: static property 'highSecurity' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'highSecurity' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
49 |
50 |     /// Configuration for testing (4 rounds - minimum allowed)
/Users/admin/builder/spi-builder-workspace/BCryptSwift/Classes/BCryptConfiguration.swift:51:23: warning: static property 'testing' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
32 |
33 | /// Configuration for BCrypt operations
34 | public struct BCryptConfiguration {
   |               `- note: consider making struct 'BCryptConfiguration' conform to the 'Sendable' protocol
35 |     /// The cost factor (number of rounds). Must be between 4 and 31.
36 |     public let rounds: UInt
   :
49 |
50 |     /// Configuration for testing (4 rounds - minimum allowed)
51 |     public static let testing = BCryptConfiguration(rounds: 4)
   |                       |- warning: static property 'testing' is not concurrency-safe because non-'Sendable' type 'BCryptConfiguration' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'testing' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
52 |
53 |     public init(rounds: UInt = 10, version: BCryptVersion = .v2a, maxPasswordLength: Int = 72) {
Build complete! (4.21s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "BCryptSwift",
  "name" : "BCryptSwift",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "macos",
      "version" : "10.13"
    },
    {
      "name" : "tvos",
      "version" : "12.0"
    },
    {
      "name" : "watchos",
      "version" : "5.0"
    }
  ],
  "products" : [
    {
      "name" : "BCryptSwift",
      "targets" : [
        "BCryptSwift"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "BCryptSwiftTests",
      "module_type" : "SwiftTarget",
      "name" : "BCryptSwiftTests",
      "path" : "Example/Tests",
      "sources" : [
        "BCryptSecurityTests.swift",
        "BCryptSwiftTests.swift"
      ],
      "target_dependencies" : [
        "BCryptSwift"
      ],
      "type" : "test"
    },
    {
      "c99name" : "BCryptSwift",
      "module_type" : "SwiftTarget",
      "name" : "BCryptSwift",
      "path" : "BCryptSwift/Classes",
      "product_memberships" : [
        "BCryptSwift"
      ],
      "sources" : [
        "BCryptConfiguration.swift",
        "BCryptError.swift",
        "BCryptSwift.swift",
        "BCryptSwiftModern.swift",
        "BCryptSwiftRandom.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Done.