This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.

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 BCrypt with Swift 6.0 for macOS (SPM).

Swift 6 data race errors: 2

Build Command

env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete

Build Log

========================================
RunAll
========================================
Builder version: 4.40.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/vapor-community/bcrypt.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/vapor-community/bcrypt
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at 7b8bf62 Update README.md
Cloned https://github.com/vapor-community/bcrypt.git
Revision (git rev-parse @):
7b8bf62f997d4098804f2a06f205370b6f3c7c8b
SUCCESS checkout https://github.com/vapor-community/bcrypt.git at master
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $workDir
https://github.com/vapor-community/bcrypt.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/7] Write sources
[6/7] Write swift-version-6F35C1178C84523A.txt
[8/30] Emitting module Debugging
[9/30] Compiling Debugging Debuggable.swift
[10/30] Emitting module libc
[11/30] Compiling libc libc.swift
[12/30] Compiling Bits Byte+Alphabet.swift
[13/30] Compiling Bits Byte+ControlCharacters.swift
[14/30] Emitting module Bits
[15/30] Compiling Bits Aliases.swift
[16/30] Compiling Bits Base64Encoder.swift
[17/31] Compiling Bits UnsignedInteger+Shifting.swift
[18/31] Compiling Bits Byte+Convenience.swift
[19/31] Compiling Bits Byte+PatternMatching.swift
[20/31] Compiling Bits HexEncoder.swift
[21/31] Compiling Bits Operators.swift
[22/31] Compiling Bits String+BytesConvertible.swift
[23/31] Compiling Bits UnsignedInteger+BytesConvertible.swift
[24/31] Compiling Bits Bytes+Hex.swift
[25/31] Compiling Bits Bytes+Percent.swift
[26/31] Compiling Bits ByteSequence+Conversions.swift
[27/31] Compiling Bits Bytes+Base64.swift
[28/31] Compiling Bits Byte+Random.swift
[29/31] Compiling Bits Byte+UTF8Numbers.swift
[30/31] Compiling Bits BytesConvertible.swift
[31/31] Compiling Bits Data+BytesConvertible.swift
[32/53] Emitting module Core
[33/55] Compiling Core String.swift
[34/55] Compiling Core WorkingDirectory.swift
[35/55] Compiling Core Result.swift
[36/55] Compiling Core Semaphore.swift
[37/55] Compiling Core DispatchTime+Utilities.swift
[38/55] Compiling Core EmptyInitializable.swift
[39/55] Compiling Core Exports.swift
[40/55] Compiling Core Collection+Safe.swift
[41/55] Compiling Core DataFile.swift
[42/55] Compiling Core Dispatch.swift
[43/55] Compiling Core Portal.swift
[44/55] Compiling Core RFC1123.swift
[45/55] Compiling Core Extendable.swift
[46/55] Compiling Core FileProtocol.swift
[47/55] Compiling Core String+CaseInsensitiveCompare.swift
[48/55] Compiling Core String+Polymorphic.swift
[49/55] Compiling Core Sequence.swift
[50/55] Compiling Core StaticDataBuffer.swift
[51/55] Compiling Core Array.swift
[52/55] Compiling Core Bits.swift
[53/55] Compiling Core Cache.swift
[54/55] Compiling Core Int+Hex.swift
[55/55] Compiling Core Lock.swift
[56/62] Compiling Random RandomProtocol.swift
[57/62] Compiling Random OSRandom.swift
[58/62] Compiling Random EmptyInitializable.swift
[59/62] Compiling Random Exports.swift
[60/62] Compiling Random Array+Random.swift
[61/62] Emitting module Random
[62/62] Compiling Random URandom.swift
[63/72] Compiling BCrypt Salt.swift
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Salt.swift:4:23: warning: static property 'defaultRandom' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
 2 |
 3 | public struct Salt {
 4 |     public static var defaultRandom: RandomProtocol = OSRandom()
   |                       |- warning: static property 'defaultRandom' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'defaultRandom' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'defaultRandom' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 5 |     public static var defaultCost: UInt = 6
 6 |
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Salt.swift:5:23: warning: static property 'defaultCost' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
 3 | public struct Salt {
 4 |     public static var defaultRandom: RandomProtocol = OSRandom()
 5 |     public static var defaultCost: UInt = 6
   |                       |- warning: static property 'defaultCost' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'defaultCost' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'defaultCost' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 6 |
 7 |     public enum Version {
[64/72] Compiling BCrypt Serializer.swift
[65/72] Compiling BCrypt Parser.swift
[66/72] Compiling BCrypt Keys.swift
[67/72] Compiling BCrypt Export.swift
[68/72] Compiling BCrypt Convenience.swift
[69/72] Emitting module BCrypt
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Salt.swift:4:23: warning: static property 'defaultRandom' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
 2 |
 3 | public struct Salt {
 4 |     public static var defaultRandom: RandomProtocol = OSRandom()
   |                       |- warning: static property 'defaultRandom' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'defaultRandom' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'defaultRandom' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 5 |     public static var defaultCost: UInt = 6
 6 |
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Salt.swift:5:23: warning: static property 'defaultCost' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
 3 | public struct Salt {
 4 |     public static var defaultRandom: RandomProtocol = OSRandom()
 5 |     public static var defaultCost: UInt = 6
   |                       |- warning: static property 'defaultCost' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'defaultCost' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'defaultCost' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 6 |
 7 |     public enum Version {
[70/72] Compiling BCrypt Base64.swift
[71/72] Compiling BCrypt BCryptError.swift
[72/72] Compiling BCrypt Hash.swift
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Hash.swift:18:19: warning: initialization of 'UnsafeMutableRawPointer' results in a dangling pointer
 16 |             .allocate(capacity: Key.p.count)
 17 |         p.initialize(
 18 |             from: UnsafeMutableRawPointer(mutating: Key.p)
    |                   |                                     |- note: implicit argument conversion from '[UInt32]' to 'UnsafeRawPointer' produces a pointer valid only for the duration of the call to 'init(mutating:)'
    |                   |                                     `- note: use the 'withUnsafeBytes' method on Array in order to explicitly convert argument to buffer pointer valid for a defined scope
    |                   `- warning: initialization of 'UnsafeMutableRawPointer' results in a dangling pointer
 19 |                 .assumingMemoryBound(to: UInt32.self),
 20 |             count: Key.p.count
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Hash.swift:26:19: warning: initialization of 'UnsafeMutableRawPointer' results in a dangling pointer
 24 |             .allocate(capacity: Key.s.count)
 25 |         s.initialize(
 26 |             from: UnsafeMutableRawPointer(mutating: Key.s)
    |                   |                                     |- note: implicit argument conversion from '[UInt32]' to 'UnsafeRawPointer' produces a pointer valid only for the duration of the call to 'init(mutating:)'
    |                   |                                     `- note: use the 'withUnsafeBytes' method on Array in order to explicitly convert argument to buffer pointer valid for a defined scope
    |                   `- warning: initialization of 'UnsafeMutableRawPointer' results in a dangling pointer
 27 |                 .assumingMemoryBound(to: UInt32.self),
 28 |             count: Key.s.count
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Salt.swift:5:23: warning: static property 'defaultCost' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
 3 | public struct Salt {
 4 |     public static var defaultRandom: RandomProtocol = OSRandom()
 5 |     public static var defaultCost: UInt = 6
   |                       |- warning: static property 'defaultCost' is not concurrency-safe because it is non-isolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'defaultCost' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: annotate 'defaultCost' with '@MainActor' if property should only be accessed from the main actor
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 6 |
 7 |     public enum Version {
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Hash.swift:180:56: warning: initialization of 'UnsafeMutablePointer<UInt8>' results in a dangling pointer
178 |         let slen: Int = 1024
179 |
180 |         let keyPointer : UnsafeMutablePointer<UInt8> = UnsafeMutablePointer<UInt8>(mutating: key)
    |                                                        |                                     |- note: implicit argument conversion from 'Bytes' (aka 'Array<UInt8>') to 'UnsafePointer<UInt8>' produces a pointer valid only for the duration of the call to 'init(mutating:)'
    |                                                        |                                     `- note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument to buffer pointer valid for a defined scope
    |                                                        `- warning: initialization of 'UnsafeMutablePointer<UInt8>' results in a dangling pointer
181 |         let keyLength : Int = key.count
182 |
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Hash.swift:212:55: warning: initialization of 'UnsafeMutablePointer<UInt8>' results in a dangling pointer
210 |         var lr: [UInt32] = [0, 0]
211 |
212 |         let keyPointer: UnsafeMutablePointer<UInt8> = UnsafeMutablePointer<UInt8>(mutating: key)
    |                                                       |                                     |- note: implicit argument conversion from '[UInt8]' to 'UnsafePointer<UInt8>' produces a pointer valid only for the duration of the call to 'init(mutating:)'
    |                                                       |                                     `- note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument to buffer pointer valid for a defined scope
    |                                                       `- warning: initialization of 'UnsafeMutablePointer<UInt8>' results in a dangling pointer
213 |         let keyLength: Int = key.count
214 |         let dataPointer: UnsafeMutablePointer<UInt8> = UnsafeMutablePointer<UInt8>(mutating: data)
/Users/admin/builder/spi-builder-workspace/Sources/BCrypt/Hash.swift:214:56: warning: initialization of 'UnsafeMutablePointer<UInt8>' results in a dangling pointer
212 |         let keyPointer: UnsafeMutablePointer<UInt8> = UnsafeMutablePointer<UInt8>(mutating: key)
213 |         let keyLength: Int = key.count
214 |         let dataPointer: UnsafeMutablePointer<UInt8> = UnsafeMutablePointer<UInt8>(mutating: data)
    |                                                        |                                     |- note: implicit argument conversion from '[UInt8]' to 'UnsafePointer<UInt8>' produces a pointer valid only for the duration of the call to 'init(mutating:)'
    |                                                        |                                     `- note: use the 'withUnsafeBufferPointer' method on Array in order to explicitly convert argument to buffer pointer valid for a defined scope
    |                                                        `- warning: initialization of 'UnsafeMutablePointer<UInt8>' results in a dangling pointer
215 |         let dataLength: Int = data.count
216 |
Build complete! (24.42s)
Fetching https://github.com/vapor/random.git
Fetching https://github.com/vapor/debugging.git
Fetching https://github.com/vapor/bits.git
Fetching https://github.com/vapor/core.git
[1/260] Fetching debugging
[30/408] Fetching debugging, random
[123/766] Fetching debugging, random, bits
[393/20909] Fetching debugging, random, bits, core
Fetched https://github.com/vapor/random.git from cache (1.64s)
Fetched https://github.com/vapor/core.git from cache (1.64s)
Fetched https://github.com/vapor/bits.git from cache (1.64s)
Fetched https://github.com/vapor/debugging.git from cache (1.64s)
Computing version for https://github.com/vapor/random.git
Computed https://github.com/vapor/random.git at 1.2.0 (0.70s)
Computing version for https://github.com/vapor/core.git
Computed https://github.com/vapor/core.git at 2.1.1 (0.68s)
Computing version for https://github.com/vapor/debugging.git
Computed https://github.com/vapor/debugging.git at 1.1.0 (0.67s)
Computing version for https://github.com/vapor/bits.git
Computed https://github.com/vapor/bits.git at 1.1.0 (0.66s)
Creating working copy for https://github.com/vapor/bits.git
Working copy of https://github.com/vapor/bits.git resolved at 1.1.0
Creating working copy for https://github.com/vapor/random.git
Working copy of https://github.com/vapor/random.git resolved at 1.2.0
Creating working copy for https://github.com/vapor/debugging.git
Working copy of https://github.com/vapor/debugging.git resolved at 1.1.0
Creating working copy for https://github.com/vapor/core.git
Working copy of https://github.com/vapor/core.git resolved at 2.1.1
Build complete.
{
  "dependencies" : [
    {
      "identity" : "random",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.2.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/vapor/random.git"
    }
  ],
  "manifest_display_name" : "BCrypt",
  "name" : "BCrypt",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "BCrypt",
      "targets" : [
        "BCrypt"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "BCryptTests",
      "module_type" : "SwiftTarget",
      "name" : "BCryptTests",
      "path" : "Tests/BCryptTests",
      "sources" : [
        "BCryptTests.swift"
      ],
      "target_dependencies" : [
        "BCrypt"
      ],
      "type" : "test"
    },
    {
      "c99name" : "BCrypt",
      "module_type" : "SwiftTarget",
      "name" : "BCrypt",
      "path" : "Sources/BCrypt",
      "product_dependencies" : [
        "Random"
      ],
      "product_memberships" : [
        "BCrypt"
      ],
      "sources" : [
        "BCryptError.swift",
        "Base64.swift",
        "Convenience.swift",
        "Export.swift",
        "Hash.swift",
        "Keys.swift",
        "Parser.swift",
        "Salt.swift",
        "Serializer.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "4.0"
}
Done.
This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.