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 BilibiliKit, reference main (afbc9a), with Swift 6.1 for macOS (SPM) on 25 Apr 2025 23:12:08 UTC.

Swift 6 data race errors: 8

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.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/ApolloZhu/BilibiliKit.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/ApolloZhu/BilibiliKit
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at afbc9ae Update branch
Cloned https://github.com/ApolloZhu/BilibiliKit.git
Revision (git rev-parse @):
afbc9ae8bb3454811ad547d781d5eb3953143538
SUCCESS checkout https://github.com/ApolloZhu/BilibiliKit.git at main
Fetching https://github.com/apple/swift-crypto from cache
Fetched https://github.com/apple/swift-crypto from cache (0.73s)
Computing version for https://github.com/apple/swift-crypto
Computed https://github.com/apple/swift-crypto at 1.1.2 (1.34s)
Creating working copy for https://github.com/apple/swift-crypto
Working copy of https://github.com/apple/swift-crypto resolved at 1.1.2
========================================
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": "bilibilikit",
      "name": "BilibiliKit",
      "url": "https://github.com/ApolloZhu/BilibiliKit.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/BilibiliKit",
      "dependencies": [
        {
          "identity": "swift-crypto",
          "name": "swift-crypto",
          "url": "https://github.com/apple/swift-crypto",
          "version": "1.1.7",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-crypto",
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/ApolloZhu/BilibiliKit.git
[12/1181] Fetching bilibilikit
Fetched https://github.com/ApolloZhu/BilibiliKit.git from cache (0.91s)
Fetching https://github.com/apple/swift-crypto from cache
Fetched https://github.com/apple/swift-crypto from cache (0.53s)
Computing version for https://github.com/apple/swift-crypto
Computed https://github.com/apple/swift-crypto at 1.1.7 (1.13s)
Creating working copy for https://github.com/ApolloZhu/BilibiliKit.git
Working copy of https://github.com/ApolloZhu/BilibiliKit.git resolved at main (afbc9ae)
Creating working copy for https://github.com/apple/swift-crypto
Working copy of https://github.com/apple/swift-crypto resolved at 1.1.7
warning: '.resolve-product-dependencies': dependency 'bilibilikit' is not used by any target
Found 1 product dependencies
  - swift-crypto
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/ApolloZhu/BilibiliKit.git
https://github.com/ApolloZhu/BilibiliKit.git
{
  "dependencies" : [
    {
      "identity" : "swift-crypto",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.1.2",
            "upper_bound" : "1.2.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-crypto"
    }
  ],
  "manifest_display_name" : "BilibiliKit",
  "name" : "BilibiliKit",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "10.0"
    },
    {
      "name" : "macos",
      "version" : "10.12"
    },
    {
      "name" : "tvos",
      "version" : "10.0"
    },
    {
      "name" : "watchos",
      "version" : "3.0"
    }
  ],
  "products" : [
    {
      "name" : "BilibiliKit",
      "targets" : [
        "BilibiliKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "BilibiliKitDYLIB",
      "targets" : [
        "BilibiliKit"
      ],
      "type" : {
        "library" : [
          "dynamic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "BilibiliKitTests",
      "module_type" : "SwiftTarget",
      "name" : "BilibiliKitTests",
      "path" : "Tests/BilibiliKitTests",
      "sources" : [
        "BilibiliKitTests.swift"
      ],
      "target_dependencies" : [
        "BilibiliKit"
      ],
      "type" : "test"
    },
    {
      "c99name" : "BilibiliKit",
      "module_type" : "SwiftTarget",
      "name" : "BilibiliKit",
      "path" : "Sources/BilibiliKit",
      "product_memberships" : [
        "BilibiliKit",
        "BilibiliKitDYLIB"
      ],
      "sources" : [
        "BKArticle+Info.swift",
        "BKArticle.swift",
        "BKCurrentUser.swift",
        "BKLiveRoom+Info.swift",
        "BKLiveRoom.swift",
        "BKSession+PasswordLogin.swift",
        "BKSession+QRCodeLoginHelper.swift",
        "BKUpUser+Stat.swift",
        "BKUpUser.swift",
        "BKUser+AudioStat.swift",
        "BKUser+Info.swift",
        "BKUser+Relationship.swift",
        "BKUser.swift",
        "BKVideo+Info.swift",
        "BKVideo+Page.swift",
        "BKVideo+Stat.swift",
        "BKVideo.swift",
        "BilibiliKit.swift"
      ],
      "target_dependencies" : [
        "BKFoundation",
        "BKSecurity",
        "BKAudio"
      ],
      "type" : "library"
    },
    {
      "c99name" : "BKSecurity",
      "module_type" : "SwiftTarget",
      "name" : "BKSecurity",
      "path" : "Sources/BKSecurity",
      "product_dependencies" : [
        "Crypto"
      ],
      "product_memberships" : [
        "BilibiliKit",
        "BilibiliKitDYLIB"
      ],
      "sources" : [
        "BKSec.swift",
        "MD5.swift",
        "RSA.swift"
      ],
      "target_dependencies" : [
        "BKFoundation"
      ],
      "type" : "library"
    },
    {
      "c99name" : "BKFoundation",
      "module_type" : "SwiftTarget",
      "name" : "BKFoundation",
      "path" : "Sources/BKFoundation",
      "product_memberships" : [
        "BilibiliKit",
        "BilibiliKitDYLIB"
      ],
      "sources" : [
        "BKApp.swift",
        "BKCookie.swift",
        "BKError.swift",
        "BKSession.swift",
        "Either.swift",
        "URL+Extensions.swift",
        "URLSession+Extensions.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "BKAudio",
      "module_type" : "SwiftTarget",
      "name" : "BKAudio",
      "path" : "Sources/BKAudio",
      "product_memberships" : [
        "BilibiliKit",
        "BilibiliKitDYLIB"
      ],
      "sources" : [
        "BKAudio+Info.swift",
        "BKAudio+Staff.swift",
        "BKAudio+URLs.swift",
        "BKAudio.swift"
      ],
      "target_dependencies" : [
        "BKFoundation"
      ],
      "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/7] Write sources
[4/7] Write swift-version-2F0A5646E1D333AE.txt
[6/15] Emitting module BKFoundation
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKCookie.swift:37:23: warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 35 |     /// using https://github.com/dantmnf/biliupload/blob/master/getcookie.py ,
 36 |     /// and appending `;bili_jct=value of cookie named bili_jct` .
 37 |     public static var `default`: BKCookie! = BKCookie(path:
    |                       |- warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'default' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- 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
 38 |         "\(FileManager.default.currentDirectoryPath)/\(filename)"
 39 |     )
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKError.swift:40:10: warning: associated value 'implementationError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ImplementationErrorReason'; this is an error in the Swift 6 language mode
26 |     }
27 |     /// Either you or @ApolloZhu is making dumb mistakes.
28 |     public enum ImplementationErrorReason {
   |                 `- note: consider making enum 'ImplementationErrorReason' conform to the 'Sendable' protocol
29 |         case invalidURL(String)
30 |         case invalidRegex(Error)
   :
38 |     }
39 |
40 |     case implementationError(reason: ImplementationErrorReason)
   |          `- warning: associated value 'implementationError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ImplementationErrorReason'; this is an error in the Swift 6 language mode
41 |     case parseError(reason: ParseErrorReason)
42 |     case responseError(reason: ResponseErrorReason)
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKError.swift:41:10: warning: associated value 'parseError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ParseErrorReason'; this is an error in the Swift 6 language mode
12 | public enum BKError: Error {
13 |     /// bilibili changed their API. Contact @ApolloZhu to update BilibiliKit.
14 |     public enum ParseErrorReason {
   |                 `- note: consider making enum 'ParseErrorReason' conform to the 'Sendable' protocol
15 |         case regexMatchNotFound
16 |         case stringDecodeFailure
   :
39 |
40 |     case implementationError(reason: ImplementationErrorReason)
41 |     case parseError(reason: ParseErrorReason)
   |          `- warning: associated value 'parseError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ParseErrorReason'; this is an error in the Swift 6 language mode
42 |     case responseError(reason: ResponseErrorReason)
43 |     case encryptError(reason: EncryptionErrorReason)
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKError.swift:42:10: warning: associated value 'responseError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ResponseErrorReason'; this is an error in the Swift 6 language mode
19 |     }
20 |     /// bilibili or network is giving us some hard times.
21 |     public enum ResponseErrorReason {
   |                 `- note: consider making enum 'ResponseErrorReason' conform to the 'Sendable' protocol
22 |         case urlSessionError(Error?, response: URLResponse?)
23 |         case accessDenied
   :
40 |     case implementationError(reason: ImplementationErrorReason)
41 |     case parseError(reason: ParseErrorReason)
42 |     case responseError(reason: ResponseErrorReason)
   |          `- warning: associated value 'responseError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ResponseErrorReason'; this is an error in the Swift 6 language mode
43 |     case encryptError(reason: EncryptionErrorReason)
44 | }
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKError.swift:43:10: warning: associated value 'encryptError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.EncryptionErrorReason'; this is an error in the Swift 6 language mode
33 |     }
34 |     /// Security framework related errors.
35 |     public enum EncryptionErrorReason {
   |                 `- note: consider making enum 'EncryptionErrorReason' conform to the 'Sendable' protocol
36 |         case publicKeySecKeyGenerationFailure(String)
37 |         case rsaEncryptFailure(String)
   :
41 |     case parseError(reason: ParseErrorReason)
42 |     case responseError(reason: ResponseErrorReason)
43 |     case encryptError(reason: EncryptionErrorReason)
   |          `- warning: associated value 'encryptError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.EncryptionErrorReason'; this is an error in the Swift 6 language mode
44 | }
45 |
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKSession.swift:36:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BKSession' may have shared mutable state; this is an error in the Swift 6 language mode
10 |
11 | /// Stores cookies of a session.
12 | public class BKSession {
   |              `- note: class 'BKSession' does not conform to the 'Sendable' protocol
13 |     /// To identify this session.
14 |     public let identifier: String
   :
34 |
35 |     /// The shared session
36 |     public static let shared = BKSession(identifier: "__BILIBILI_KIT_DEFAULT_SESSION__")
   |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BKSession' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
37 |
38 |     /// Initialize a new session.
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/URL+Extensions.swift:11:1: warning: extension declares a conformance of imported type 'URL' to imported protocols 'ExpressibleByStringInterpolation', 'ExpressibleByStringLiteral', 'ExpressibleByExtendedGraphemeClusterLiteral', 'ExpressibleByUnicodeScalarLiteral'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
 9 | import Foundation
10 |
11 | extension URL: ExpressibleByStringInterpolation {
   | |- warning: extension declares a conformance of imported type 'URL' to imported protocols 'ExpressibleByStringInterpolation', 'ExpressibleByStringLiteral', 'ExpressibleByExtendedGraphemeClusterLiteral', 'ExpressibleByUnicodeScalarLiteral'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
12 |     /// Initialize url with string literals.
13 |     ///
[7/15] Compiling BKFoundation Either.swift
[8/15] Compiling BKFoundation BKCookie.swift
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKCookie.swift:37:23: warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 35 |     /// using https://github.com/dantmnf/biliupload/blob/master/getcookie.py ,
 36 |     /// and appending `;bili_jct=value of cookie named bili_jct` .
 37 |     public static var `default`: BKCookie! = BKCookie(path:
    |                       |- warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'default' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- 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
 38 |         "\(FileManager.default.currentDirectoryPath)/\(filename)"
 39 |     )
[9/15] Compiling BKFoundation BKError.swift
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKError.swift:40:10: warning: associated value 'implementationError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ImplementationErrorReason'; this is an error in the Swift 6 language mode
26 |     }
27 |     /// Either you or @ApolloZhu is making dumb mistakes.
28 |     public enum ImplementationErrorReason {
   |                 `- note: consider making enum 'ImplementationErrorReason' conform to the 'Sendable' protocol
29 |         case invalidURL(String)
30 |         case invalidRegex(Error)
   :
38 |     }
39 |
40 |     case implementationError(reason: ImplementationErrorReason)
   |          `- warning: associated value 'implementationError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ImplementationErrorReason'; this is an error in the Swift 6 language mode
41 |     case parseError(reason: ParseErrorReason)
42 |     case responseError(reason: ResponseErrorReason)
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKError.swift:41:10: warning: associated value 'parseError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ParseErrorReason'; this is an error in the Swift 6 language mode
12 | public enum BKError: Error {
13 |     /// bilibili changed their API. Contact @ApolloZhu to update BilibiliKit.
14 |     public enum ParseErrorReason {
   |                 `- note: consider making enum 'ParseErrorReason' conform to the 'Sendable' protocol
15 |         case regexMatchNotFound
16 |         case stringDecodeFailure
   :
39 |
40 |     case implementationError(reason: ImplementationErrorReason)
41 |     case parseError(reason: ParseErrorReason)
   |          `- warning: associated value 'parseError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ParseErrorReason'; this is an error in the Swift 6 language mode
42 |     case responseError(reason: ResponseErrorReason)
43 |     case encryptError(reason: EncryptionErrorReason)
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKError.swift:42:10: warning: associated value 'responseError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ResponseErrorReason'; this is an error in the Swift 6 language mode
19 |     }
20 |     /// bilibili or network is giving us some hard times.
21 |     public enum ResponseErrorReason {
   |                 `- note: consider making enum 'ResponseErrorReason' conform to the 'Sendable' protocol
22 |         case urlSessionError(Error?, response: URLResponse?)
23 |         case accessDenied
   :
40 |     case implementationError(reason: ImplementationErrorReason)
41 |     case parseError(reason: ParseErrorReason)
42 |     case responseError(reason: ResponseErrorReason)
   |          `- warning: associated value 'responseError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.ResponseErrorReason'; this is an error in the Swift 6 language mode
43 |     case encryptError(reason: EncryptionErrorReason)
44 | }
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKError.swift:43:10: warning: associated value 'encryptError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.EncryptionErrorReason'; this is an error in the Swift 6 language mode
33 |     }
34 |     /// Security framework related errors.
35 |     public enum EncryptionErrorReason {
   |                 `- note: consider making enum 'EncryptionErrorReason' conform to the 'Sendable' protocol
36 |         case publicKeySecKeyGenerationFailure(String)
37 |         case rsaEncryptFailure(String)
   :
41 |     case parseError(reason: ParseErrorReason)
42 |     case responseError(reason: ResponseErrorReason)
43 |     case encryptError(reason: EncryptionErrorReason)
   |          `- warning: associated value 'encryptError(reason:)' of 'Sendable'-conforming enum 'BKError' has non-sendable type 'BKError.EncryptionErrorReason'; this is an error in the Swift 6 language mode
44 | }
45 |
[10/15] Compiling BKFoundation BKSession.swift
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKSession.swift:36:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BKSession' may have shared mutable state; this is an error in the Swift 6 language mode
10 |
11 | /// Stores cookies of a session.
12 | public class BKSession {
   |              `- note: class 'BKSession' does not conform to the 'Sendable' protocol
13 |     /// To identify this session.
14 |     public let identifier: String
   :
34 |
35 |     /// The shared session
36 |     public static let shared = BKSession(identifier: "__BILIBILI_KIT_DEFAULT_SESSION__")
   |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BKSession' may have shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
37 |
38 |     /// Initialize a new session.
[11/15] Compiling BKFoundation URL+Extensions.swift
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/URL+Extensions.swift:11:1: warning: extension declares a conformance of imported type 'URL' to imported protocols 'ExpressibleByStringInterpolation', 'ExpressibleByStringLiteral', 'ExpressibleByExtendedGraphemeClusterLiteral', 'ExpressibleByUnicodeScalarLiteral'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
 9 | import Foundation
10 |
11 | extension URL: ExpressibleByStringInterpolation {
   | |- warning: extension declares a conformance of imported type 'URL' to imported protocols 'ExpressibleByStringInterpolation', 'ExpressibleByStringLiteral', 'ExpressibleByExtendedGraphemeClusterLiteral', 'ExpressibleByUnicodeScalarLiteral'; this will not behave correctly if the owners of 'Foundation' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
12 |     /// Initialize url with string literals.
13 |     ///
[12/15] Compiling BKFoundation BKApp.swift
[13/15] Compiling BKFoundation URLSession+Extensions.swift
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/URLSession+Extensions.swift:115:24: warning: capture of 'handler' with non-sendable type 'BKHandler<Wrapper.Wrapped>' (aka '(Result<Wrapper.Wrapped, BKError>) -> ()') in a '@Sendable' closure
113 |         let task = URLSession._bk.dataTask(with: request) { data, res, err in
114 |             guard let data = data else {
115 |                 return handler(.failure(.responseError(
    |                        |- warning: capture of 'handler' with non-sendable type 'BKHandler<Wrapper.Wrapped>' (aka '(Result<Wrapper.Wrapped, BKError>) -> ()') in a '@Sendable' closure
    |                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
116 |                     reason: .urlSessionError(err, response: res))))
117 |             }
[14/24] Compiling BKAudio BKAudio.swift
[15/24] Emitting module BKAudio
[16/24] Compiling BKAudio BKAudio+URLs.swift
[17/24] Compiling BKAudio BKAudio+Staff.swift
[18/24] Compiling BKAudio BKAudio+Info.swift
[19/24] Compiling BKSecurity RSA.swift
[20/24] Compiling BKSecurity BKSec.swift
[21/24] Emitting module BKSecurity
[22/24] Compiling BKSecurity MD5.swift
[23/42] Compiling BilibiliKit BKSession+QRCodeLoginHelper.swift
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:30:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BKSession.QRCodeLoginHelper' may have shared mutable state; this is an error in the Swift 6 language mode
 12 | extension BKSession {
 13 |     /// Manages login into bilibili with QRCode
 14 |     public class QRCodeLoginHelper {
    |                  `- note: class 'QRCodeLoginHelper' does not conform to the 'Sendable' protocol
 15 |         /// Initialize a new login helper.
 16 |         public init() { }
    :
 28 | extension BKSession.QRCodeLoginHelper {
 29 |     /// Default login helper
 30 |     public static let `default` = BKSession.QRCodeLoginHelper()
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BKSession.QRCodeLoginHelper' 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
 31 |
 32 |     #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:34:24: warning: static property 'dummyTimer' is not concurrency-safe because non-'Sendable' type 'Timer' may have shared mutable state; this is an error in the Swift 6 language mode
 32 |     #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
 33 |     /// A dummpy helper that does nothing but indicating an internal state.
 34 |     private static let dummyTimer = Timer()
    |                        |- warning: static property 'dummyTimer' is not concurrency-safe because non-'Sendable' type 'Timer' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'dummyTimer' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |     #else
 36 |     /// A dummpy helper that does nothing but indicating an internal state.
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSTimer.h:10:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 8 | NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 9 |
10 | @interface NSTimer : NSObject
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
11 |
12 | + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:52:22: warning: capture of 'execute' with non-sendable type '() -> Void' in a '@Sendable' closure
 50 |         if #available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *) {
 51 |             timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) {
 52 |                 _ in execute()
    |                      |- warning: capture of 'execute' with non-sendable type '() -> Void' in a '@Sendable' closure
    |                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 53 |             }
 54 |             timer?.fire()
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:60:41: warning: capture of 'self' with non-sendable type 'BKSession.QRCodeLoginHelper?' in a '@Sendable' closure
 12 | extension BKSession {
 13 |     /// Manages login into bilibili with QRCode
 14 |     public class QRCodeLoginHelper {
    |                  `- note: class 'QRCodeLoginHelper' does not conform to the 'Sendable' protocol
 15 |         /// Initialize a new login helper.
 16 |         public init() { }
    :
 58 |                 DispatchQueue.global(qos: .userInteractive)
 59 |                     .asyncAfter(deadline: DispatchTime.now() + 1)
 60 |                     { [weak self] in if self?.isRunLoopActive == true { execute();loop() } }
    |                                         `- warning: capture of 'self' with non-sendable type 'BKSession.QRCodeLoginHelper?' in a '@Sendable' closure
 61 |             }
 62 |             loop()
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:60:73: warning: capture of 'execute' with non-sendable type '() -> Void' in a '@Sendable' closure
 58 |                 DispatchQueue.global(qos: .userInteractive)
 59 |                     .asyncAfter(deadline: DispatchTime.now() + 1)
 60 |                     { [weak self] in if self?.isRunLoopActive == true { execute();loop() } }
    |                                                                         |- warning: capture of 'execute' with non-sendable type '() -> Void' in a '@Sendable' closure
    |                                                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 61 |             }
 62 |             loop()
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:60:83: warning: capture of 'loop()' with non-sendable type '() -> ()' in a '@Sendable' closure
 58 |                 DispatchQueue.global(qos: .userInteractive)
 59 |                     .asyncAfter(deadline: DispatchTime.now() + 1)
 60 |                     { [weak self] in if self?.isRunLoopActive == true { execute();loop() } }
    |                                                                                   |- warning: capture of 'loop()' with non-sendable type '() -> ()' in a '@Sendable' closure
    |                                                                                   `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 61 |             }
 62 |             loop()
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:57:18: warning: concurrently-executed local function 'loop()' must be marked as '@Sendable'
 55 |         } else {
 56 |             timer = BKSession.QRCodeLoginHelper.dummyTimer
 57 |             func loop() {
    |                  `- warning: concurrently-executed local function 'loop()' must be marked as '@Sendable'
 58 |                 DispatchQueue.global(qos: .userInteractive)
 59 |                     .asyncAfter(deadline: DispatchTime.now() + 1)
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:110:46: warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
108 |                     DispatchQueue.global(qos: .userInitiated)
109 |                         .asyncAfter(deadline: DispatchTime.now() + 3,
110 |                                     execute: process)
    |                                              `- warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
111 |                 }
112 |                 helper.everySecond(execute: process)
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:139:24: warning: capture of 'handler' with non-sendable type 'BKHandler<BKSession.QRCodeLoginHelper.LoginURL>' (aka '(Result<BKSession.QRCodeLoginHelper.LoginURL, BKError>) -> ()') in a '@Sendable' closure
137 |         let task = URLSession._bk.dataTask(with: url) { data, response, error in
138 |             guard let data = data else {
139 |                 return handler(.failure(.responseError(
    |                        |- warning: capture of 'handler' with non-sendable type 'BKHandler<BKSession.QRCodeLoginHelper.LoginURL>' (aka '(Result<BKSession.QRCodeLoginHelper.LoginURL, BKError>) -> ()') in a '@Sendable' closure
    |                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 |                     reason: .urlSessionError(error, response: response))))
141 |             }
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:200:19: warning: capture of 'self' with non-sendable type 'BKSession.QRCodeLoginHelper?' in a '@Sendable' closure
 12 | extension BKSession {
 13 |     /// Manages login into bilibili with QRCode
 14 |     public class QRCodeLoginHelper {
    |                  `- note: class 'QRCodeLoginHelper' does not conform to the 'Sendable' protocol
 15 |         /// Initialize a new login helper.
 16 |         public init() { }
    :
198 |         let task = URLSession._bk.dataTask(with: request)
199 |         { [weak self] data, res, error in
200 |             guard self?.isRunLoopActive == true else { return }
    |                   `- warning: capture of 'self' with non-sendable type 'BKSession.QRCodeLoginHelper?' in a '@Sendable' closure
201 |             if let response = res as? HTTPURLResponse,
202 |                 let headerFields = response.allHeaderFields as? [String: String],
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:206:28: warning: capture of 'handler' with non-sendable type 'BKHandler<BKSession.QRCodeLoginHelper.LoginState>' (aka '(Result<BKSession.QRCodeLoginHelper.LoginState, BKError>) -> ()') in a '@Sendable' closure
204 |                 guard let cookie = BKCookie(headerField: cookies) else {
205 |                     debugPrint("Inconsistent Login Cookie State")
206 |                     return handler(.failure(.responseError(
    |                            |- warning: capture of 'handler' with non-sendable type 'BKHandler<BKSession.QRCodeLoginHelper.LoginState>' (aka '(Result<BKSession.QRCodeLoginHelper.LoginState, BKError>) -> ()') in a '@Sendable' closure
    |                            `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
207 |                         reason: .urlSessionError(error, response: res))))
208 |                 }
[24/42] Compiling BilibiliKit BKUpUser+Stat.swift
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:30:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BKSession.QRCodeLoginHelper' may have shared mutable state; this is an error in the Swift 6 language mode
 12 | extension BKSession {
 13 |     /// Manages login into bilibili with QRCode
 14 |     public class QRCodeLoginHelper {
    |                  `- note: class 'QRCodeLoginHelper' does not conform to the 'Sendable' protocol
 15 |         /// Initialize a new login helper.
 16 |         public init() { }
    :
 28 | extension BKSession.QRCodeLoginHelper {
 29 |     /// Default login helper
 30 |     public static let `default` = BKSession.QRCodeLoginHelper()
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BKSession.QRCodeLoginHelper' 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
 31 |
 32 |     #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:34:24: warning: static property 'dummyTimer' is not concurrency-safe because non-'Sendable' type 'Timer' may have shared mutable state; this is an error in the Swift 6 language mode
 32 |     #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
 33 |     /// A dummpy helper that does nothing but indicating an internal state.
 34 |     private static let dummyTimer = Timer()
    |                        |- warning: static property 'dummyTimer' is not concurrency-safe because non-'Sendable' type 'Timer' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'dummyTimer' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |     #else
 36 |     /// A dummpy helper that does nothing but indicating an internal state.
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSTimer.h:10:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 8 | NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 9 |
10 | @interface NSTimer : NSObject
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
11 |
12 | + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:52:22: warning: capture of 'execute' with non-sendable type '() -> Void' in a '@Sendable' closure
 50 |         if #available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *) {
 51 |             timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) {
 52 |                 _ in execute()
    |                      |- warning: capture of 'execute' with non-sendable type '() -> Void' in a '@Sendable' closure
    |                      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 53 |             }
 54 |             timer?.fire()
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:60:41: warning: capture of 'self' with non-sendable type 'BKSession.QRCodeLoginHelper?' in a '@Sendable' closure
 12 | extension BKSession {
 13 |     /// Manages login into bilibili with QRCode
 14 |     public class QRCodeLoginHelper {
    |                  `- note: class 'QRCodeLoginHelper' does not conform to the 'Sendable' protocol
 15 |         /// Initialize a new login helper.
 16 |         public init() { }
    :
 58 |                 DispatchQueue.global(qos: .userInteractive)
 59 |                     .asyncAfter(deadline: DispatchTime.now() + 1)
 60 |                     { [weak self] in if self?.isRunLoopActive == true { execute();loop() } }
    |                                         `- warning: capture of 'self' with non-sendable type 'BKSession.QRCodeLoginHelper?' in a '@Sendable' closure
 61 |             }
 62 |             loop()
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:60:73: warning: capture of 'execute' with non-sendable type '() -> Void' in a '@Sendable' closure
 58 |                 DispatchQueue.global(qos: .userInteractive)
 59 |                     .asyncAfter(deadline: DispatchTime.now() + 1)
 60 |                     { [weak self] in if self?.isRunLoopActive == true { execute();loop() } }
    |                                                                         |- warning: capture of 'execute' with non-sendable type '() -> Void' in a '@Sendable' closure
    |                                                                         `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 61 |             }
 62 |             loop()
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:60:83: warning: capture of 'loop()' with non-sendable type '() -> ()' in a '@Sendable' closure
 58 |                 DispatchQueue.global(qos: .userInteractive)
 59 |                     .asyncAfter(deadline: DispatchTime.now() + 1)
 60 |                     { [weak self] in if self?.isRunLoopActive == true { execute();loop() } }
    |                                                                                   |- warning: capture of 'loop()' with non-sendable type '() -> ()' in a '@Sendable' closure
    |                                                                                   `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 61 |             }
 62 |             loop()
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:57:18: warning: concurrently-executed local function 'loop()' must be marked as '@Sendable'
 55 |         } else {
 56 |             timer = BKSession.QRCodeLoginHelper.dummyTimer
 57 |             func loop() {
    |                  `- warning: concurrently-executed local function 'loop()' must be marked as '@Sendable'
 58 |                 DispatchQueue.global(qos: .userInteractive)
 59 |                     .asyncAfter(deadline: DispatchTime.now() + 1)
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:110:46: warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
108 |                     DispatchQueue.global(qos: .userInitiated)
109 |                         .asyncAfter(deadline: DispatchTime.now() + 3,
110 |                                     execute: process)
    |                                              `- warning: converting non-sendable function value to '@Sendable @convention(block) () -> Void' may introduce data races
111 |                 }
112 |                 helper.everySecond(execute: process)
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:139:24: warning: capture of 'handler' with non-sendable type 'BKHandler<BKSession.QRCodeLoginHelper.LoginURL>' (aka '(Result<BKSession.QRCodeLoginHelper.LoginURL, BKError>) -> ()') in a '@Sendable' closure
137 |         let task = URLSession._bk.dataTask(with: url) { data, response, error in
138 |             guard let data = data else {
139 |                 return handler(.failure(.responseError(
    |                        |- warning: capture of 'handler' with non-sendable type 'BKHandler<BKSession.QRCodeLoginHelper.LoginURL>' (aka '(Result<BKSession.QRCodeLoginHelper.LoginURL, BKError>) -> ()') in a '@Sendable' closure
    |                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
140 |                     reason: .urlSessionError(error, response: response))))
141 |             }
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:200:19: warning: capture of 'self' with non-sendable type 'BKSession.QRCodeLoginHelper?' in a '@Sendable' closure
 12 | extension BKSession {
 13 |     /// Manages login into bilibili with QRCode
 14 |     public class QRCodeLoginHelper {
    |                  `- note: class 'QRCodeLoginHelper' does not conform to the 'Sendable' protocol
 15 |         /// Initialize a new login helper.
 16 |         public init() { }
    :
198 |         let task = URLSession._bk.dataTask(with: request)
199 |         { [weak self] data, res, error in
200 |             guard self?.isRunLoopActive == true else { return }
    |                   `- warning: capture of 'self' with non-sendable type 'BKSession.QRCodeLoginHelper?' in a '@Sendable' closure
201 |             if let response = res as? HTTPURLResponse,
202 |                 let headerFields = response.allHeaderFields as? [String: String],
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:206:28: warning: capture of 'handler' with non-sendable type 'BKHandler<BKSession.QRCodeLoginHelper.LoginState>' (aka '(Result<BKSession.QRCodeLoginHelper.LoginState, BKError>) -> ()') in a '@Sendable' closure
204 |                 guard let cookie = BKCookie(headerField: cookies) else {
205 |                     debugPrint("Inconsistent Login Cookie State")
206 |                     return handler(.failure(.responseError(
    |                            |- warning: capture of 'handler' with non-sendable type 'BKHandler<BKSession.QRCodeLoginHelper.LoginState>' (aka '(Result<BKSession.QRCodeLoginHelper.LoginState, BKError>) -> ()') in a '@Sendable' closure
    |                            `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
207 |                         reason: .urlSessionError(error, response: res))))
208 |                 }
[25/42] Compiling BilibiliKit BKVideo+Page.swift
[26/42] Compiling BilibiliKit BKVideo+Stat.swift
[27/42] Compiling BilibiliKit BKLiveRoom.swift
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+PasswordLogin.swift:71:28: warning: capture of 'handle' with non-sendable type 'BKHandler<BKCookie>' (aka '(Result<BKCookie, BKError>) -> ()') in a '@Sendable' closure
 69 |                 [weak self] dat, res, err in
 70 |                 guard let data = dat, !data.isEmpty else {
 71 |                     return handle(.failure(.responseError(reason:
    |                            |- warning: capture of 'handle' with non-sendable type 'BKHandler<BKCookie>' (aka '(Result<BKCookie, BKError>) -> ()') in a '@Sendable' closure
    |                            `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 72 |                         .urlSessionError(err, response: res))))
 73 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+PasswordLogin.swift:83:32: warning: capture of 'self' with non-sendable type 'BKSession?' in a '@Sendable' closure
 81 |                         return BKError.parseError(reason: .jsonDecode(data, failure: error))
 82 |                     }
 83 |                 } .map { [weak self] in
    |                                `- warning: capture of 'self' with non-sendable type 'BKSession?' in a '@Sendable' closure
 84 |                     let cookie = BKCookie(_sequence: $0.data.cookie_info.cookies
 85 |                         .lazy.map { "\($0.name)=\($0.value)" })!
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKSession.swift:12:14: note: class 'BKSession' does not conform to the 'Sendable' protocol
10 |
11 | /// Stores cookies of a session.
12 | public class BKSession {
   |              `- note: class 'BKSession' does not conform to the 'Sendable' protocol
13 |     /// To identify this session.
14 |     public let identifier: String
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+PasswordLogin.swift:103:24: warning: capture of 'handle' with non-sendable type 'BKHandler<BKSession.Encryption>' (aka '(Result<BKSession.Encryption, BKError>) -> ()') in a '@Sendable' closure
101 |         let task = URLSession._bk.dataTask(with: url) { dat, res, err in
102 |             guard let data = dat else {
103 |                 return handle(.failure(.responseError(reason: .urlSessionError(err, response: res))))
    |                        |- warning: capture of 'handle' with non-sendable type 'BKHandler<BKSession.Encryption>' (aka '(Result<BKSession.Encryption, BKError>) -> ()') in a '@Sendable' closure
    |                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
104 |             }
105 |             handle(Result { try JSONDecoder().decode(Encryption.self, from: data) }
[28/42] Compiling BilibiliKit BKSession+PasswordLogin.swift
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+PasswordLogin.swift:71:28: warning: capture of 'handle' with non-sendable type 'BKHandler<BKCookie>' (aka '(Result<BKCookie, BKError>) -> ()') in a '@Sendable' closure
 69 |                 [weak self] dat, res, err in
 70 |                 guard let data = dat, !data.isEmpty else {
 71 |                     return handle(.failure(.responseError(reason:
    |                            |- warning: capture of 'handle' with non-sendable type 'BKHandler<BKCookie>' (aka '(Result<BKCookie, BKError>) -> ()') in a '@Sendable' closure
    |                            `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 72 |                         .urlSessionError(err, response: res))))
 73 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+PasswordLogin.swift:83:32: warning: capture of 'self' with non-sendable type 'BKSession?' in a '@Sendable' closure
 81 |                         return BKError.parseError(reason: .jsonDecode(data, failure: error))
 82 |                     }
 83 |                 } .map { [weak self] in
    |                                `- warning: capture of 'self' with non-sendable type 'BKSession?' in a '@Sendable' closure
 84 |                     let cookie = BKCookie(_sequence: $0.data.cookie_info.cookies
 85 |                         .lazy.map { "\($0.name)=\($0.value)" })!
/Users/admin/builder/spi-builder-workspace/Sources/BKFoundation/BKSession.swift:12:14: note: class 'BKSession' does not conform to the 'Sendable' protocol
10 |
11 | /// Stores cookies of a session.
12 | public class BKSession {
   |              `- note: class 'BKSession' does not conform to the 'Sendable' protocol
13 |     /// To identify this session.
14 |     public let identifier: String
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+PasswordLogin.swift:103:24: warning: capture of 'handle' with non-sendable type 'BKHandler<BKSession.Encryption>' (aka '(Result<BKSession.Encryption, BKError>) -> ()') in a '@Sendable' closure
101 |         let task = URLSession._bk.dataTask(with: url) { dat, res, err in
102 |             guard let data = dat else {
103 |                 return handle(.failure(.responseError(reason: .urlSessionError(err, response: res))))
    |                        |- warning: capture of 'handle' with non-sendable type 'BKHandler<BKSession.Encryption>' (aka '(Result<BKSession.Encryption, BKError>) -> ()') in a '@Sendable' closure
    |                        `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
104 |             }
105 |             handle(Result { try JSONDecoder().decode(Encryption.self, from: data) }
[29/42] Compiling BilibiliKit BKVideo.swift
[30/42] Compiling BilibiliKit BKUser+Info.swift
[31/42] Compiling BilibiliKit BKUser+Relationship.swift
[32/42] Compiling BilibiliKit BKUpUser.swift
[33/42] Compiling BilibiliKit BKUser+AudioStat.swift
[34/42] Compiling BilibiliKit BKCurrentUser.swift
[35/42] Compiling BilibiliKit BKLiveRoom+Info.swift
[36/42] Emitting module BilibiliKit
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:30:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BKSession.QRCodeLoginHelper' may have shared mutable state; this is an error in the Swift 6 language mode
 12 | extension BKSession {
 13 |     /// Manages login into bilibili with QRCode
 14 |     public class QRCodeLoginHelper {
    |                  `- note: class 'QRCodeLoginHelper' does not conform to the 'Sendable' protocol
 15 |         /// Initialize a new login helper.
 16 |         public init() { }
    :
 28 | extension BKSession.QRCodeLoginHelper {
 29 |     /// Default login helper
 30 |     public static let `default` = BKSession.QRCodeLoginHelper()
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'BKSession.QRCodeLoginHelper' 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
 31 |
 32 |     #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
/Users/admin/builder/spi-builder-workspace/Sources/BilibiliKit/BKSession+QRCodeLoginHelper.swift:34:24: warning: static property 'dummyTimer' is not concurrency-safe because non-'Sendable' type 'Timer' may have shared mutable state; this is an error in the Swift 6 language mode
 32 |     #if os(iOS) || os(macOS) || os(tvOS) || os(watchOS)
 33 |     /// A dummpy helper that does nothing but indicating an internal state.
 34 |     private static let dummyTimer = Timer()
    |                        |- warning: static property 'dummyTimer' is not concurrency-safe because non-'Sendable' type 'Timer' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'dummyTimer' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |     #else
 36 |     /// A dummpy helper that does nothing but indicating an internal state.
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSTimer.h:10:12: note: class 'Timer' does not conform to the 'Sendable' protocol
 8 | NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 9 |
10 | @interface NSTimer : NSObject
   |            `- note: class 'Timer' does not conform to the 'Sendable' protocol
11 |
12 | + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
[37/42] Compiling BilibiliKit BKArticle+Info.swift
[38/42] Compiling BilibiliKit BKArticle.swift
[39/42] Compiling BilibiliKit BKUser.swift
[40/42] Compiling BilibiliKit BKVideo+Info.swift
[41/43] Compiling BilibiliKit BilibiliKit.swift
[41/43] Write Objects.LinkFileList
[42/43] Linking libBilibiliKitDYLIB.dylib
Build complete! (10.23s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-crypto",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.1.2",
            "upper_bound" : "1.2.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-crypto"
    }
  ],
  "manifest_display_name" : "BilibiliKit",
  "name" : "BilibiliKit",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "10.0"
    },
    {
      "name" : "macos",
      "version" : "10.12"
    },
    {
      "name" : "tvos",
      "version" : "10.0"
    },
    {
      "name" : "watchos",
      "version" : "3.0"
    }
  ],
  "products" : [
    {
      "name" : "BilibiliKit",
      "targets" : [
        "BilibiliKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "BilibiliKitDYLIB",
      "targets" : [
        "BilibiliKit"
      ],
      "type" : {
        "library" : [
          "dynamic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "BilibiliKitTests",
      "module_type" : "SwiftTarget",
      "name" : "BilibiliKitTests",
      "path" : "Tests/BilibiliKitTests",
      "sources" : [
        "BilibiliKitTests.swift"
      ],
      "target_dependencies" : [
        "BilibiliKit"
      ],
      "type" : "test"
    },
    {
      "c99name" : "BilibiliKit",
      "module_type" : "SwiftTarget",
      "name" : "BilibiliKit",
      "path" : "Sources/BilibiliKit",
      "product_memberships" : [
        "BilibiliKit",
        "BilibiliKitDYLIB"
      ],
      "sources" : [
        "BKArticle+Info.swift",
        "BKArticle.swift",
        "BKCurrentUser.swift",
        "BKLiveRoom+Info.swift",
        "BKLiveRoom.swift",
        "BKSession+PasswordLogin.swift",
        "BKSession+QRCodeLoginHelper.swift",
        "BKUpUser+Stat.swift",
        "BKUpUser.swift",
        "BKUser+AudioStat.swift",
        "BKUser+Info.swift",
        "BKUser+Relationship.swift",
        "BKUser.swift",
        "BKVideo+Info.swift",
        "BKVideo+Page.swift",
        "BKVideo+Stat.swift",
        "BKVideo.swift",
        "BilibiliKit.swift"
      ],
      "target_dependencies" : [
        "BKFoundation",
        "BKSecurity",
        "BKAudio"
      ],
      "type" : "library"
    },
    {
      "c99name" : "BKSecurity",
      "module_type" : "SwiftTarget",
      "name" : "BKSecurity",
      "path" : "Sources/BKSecurity",
      "product_dependencies" : [
        "Crypto"
      ],
      "product_memberships" : [
        "BilibiliKit",
        "BilibiliKitDYLIB"
      ],
      "sources" : [
        "BKSec.swift",
        "MD5.swift",
        "RSA.swift"
      ],
      "target_dependencies" : [
        "BKFoundation"
      ],
      "type" : "library"
    },
    {
      "c99name" : "BKFoundation",
      "module_type" : "SwiftTarget",
      "name" : "BKFoundation",
      "path" : "Sources/BKFoundation",
      "product_memberships" : [
        "BilibiliKit",
        "BilibiliKitDYLIB"
      ],
      "sources" : [
        "BKApp.swift",
        "BKCookie.swift",
        "BKError.swift",
        "BKSession.swift",
        "Either.swift",
        "URL+Extensions.swift",
        "URLSession+Extensions.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "BKAudio",
      "module_type" : "SwiftTarget",
      "name" : "BKAudio",
      "path" : "Sources/BKAudio",
      "product_memberships" : [
        "BilibiliKit",
        "BilibiliKitDYLIB"
      ],
      "sources" : [
        "BKAudio+Info.swift",
        "BKAudio+Staff.swift",
        "BKAudio+URLs.swift",
        "BKAudio.swift"
      ],
      "target_dependencies" : [
        "BKFoundation"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Done.