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.