The Swift Package Index logo.Swift Package Index

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

Build Information

Failed to build WikipediaKit, reference main (a601bf), with Swift 6.1 for Android on 28 May 2025 07:10:51 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 2>&1

Build Log

83 |                 self.articleCache.add(article)
84 |                 DispatchQueue.main.async {
85 |                     completion(.success(article))
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
86 |                 }
87 |             } else {
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:85:41: warning: sending 'article' risks causing data races; this is an error in the Swift 6 language mode
83 |                 self.articleCache.add(article)
84 |                 DispatchQueue.main.async {
85 |                     completion(.success(article))
   |                                         |- warning: sending 'article' risks causing data races; this is an error in the Swift 6 language mode
   |                                         `- note: task-isolated 'article' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
86 |                 }
87 |             } else {
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:89:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
87 |             } else {
88 |                 DispatchQueue.main.async {
89 |                     completion(.failure(.decodingError))
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
90 |                 }
91 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:77:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
75 |             guard let jsonDictionary = jsonDictionary  else {
76 |                 DispatchQueue.main.async {
77 |                     completion (.failure(.decodingError))
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
78 |                 }
79 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:70:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
68 |             guard error == nil else {
69 |                 DispatchQueue.main.async {
70 |                     completion (.failure(error!))
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
71 |                 }
72 |                 return
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:51:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
49 |                 else {
50 |                     DispatchQueue.main.async {
51 |                         completion(nil, .other(nil))
   |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
52 |                     }
53 |                     return nil
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:78:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
76 |
77 |                 DispatchQueue.main.async {
78 |                     completion(articlePreview, error)
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
79 |                 }
80 |             }
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:78:32: warning: sending 'articlePreview' risks causing data races; this is an error in the Swift 6 language mode
76 |
77 |                 DispatchQueue.main.async {
78 |                     completion(articlePreview, error)
   |                                |- warning: sending 'articlePreview' risks causing data races; this is an error in the Swift 6 language mode
   |                                `- note: task-isolated 'articlePreview' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
79 |                 }
80 |             }
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:70:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
68 |                 guard let jsonDictionary = jsonDictionary  else {
69 |                     DispatchQueue.main.async {
70 |                         completion (nil, .decodingError)
   |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
71 |                     }
72 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:63:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
61 |                     // (also occurs when the request was cancelled programmatically)
62 |                     DispatchQueue.main.async {
63 |                         completion (nil, error)
   |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
64 |                     }
65 |                     return
[17/31] Compiling WikipediaKit Wikipedia+ArticleSummary.swift
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:47:17: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
45 |         if let cachedArticle = self.articleCache.get(language: language, title: title) {
46 |             DispatchQueue.main.async {
47 |                 completion(.success(cachedArticle))
   |                 |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                 `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
48 |             }
49 |             return nil
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:47:37: warning: sending 'cachedArticle' risks causing data races; this is an error in the Swift 6 language mode
45 |         if let cachedArticle = self.articleCache.get(language: language, title: title) {
46 |             DispatchQueue.main.async {
47 |                 completion(.success(cachedArticle))
   |                                     |- warning: sending 'cachedArticle' risks causing data races; this is an error in the Swift 6 language mode
   |                                     `- note: task-isolated 'cachedArticle' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
48 |             }
49 |             return nil
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:59:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
57 |             else {
58 |                 DispatchQueue.main.async {
59 |                     completion(.failure(.other(nil)))
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
60 |                 }
61 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:85:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
83 |                 self.articleCache.add(article)
84 |                 DispatchQueue.main.async {
85 |                     completion(.success(article))
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
86 |                 }
87 |             } else {
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:85:41: warning: sending 'article' risks causing data races; this is an error in the Swift 6 language mode
83 |                 self.articleCache.add(article)
84 |                 DispatchQueue.main.async {
85 |                     completion(.success(article))
   |                                         |- warning: sending 'article' risks causing data races; this is an error in the Swift 6 language mode
   |                                         `- note: task-isolated 'article' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
86 |                 }
87 |             } else {
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:89:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
87 |             } else {
88 |                 DispatchQueue.main.async {
89 |                     completion(.failure(.decodingError))
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
90 |                 }
91 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:77:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
75 |             guard let jsonDictionary = jsonDictionary  else {
76 |                 DispatchQueue.main.async {
77 |                     completion (.failure(.decodingError))
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
78 |                 }
79 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Article.swift:70:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
68 |             guard error == nil else {
69 |                 DispatchQueue.main.async {
70 |                     completion (.failure(error!))
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
71 |                 }
72 |                 return
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:51:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
49 |                 else {
50 |                     DispatchQueue.main.async {
51 |                         completion(nil, .other(nil))
   |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
52 |                     }
53 |                     return nil
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:78:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
76 |
77 |                 DispatchQueue.main.async {
78 |                     completion(articlePreview, error)
   |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
79 |                 }
80 |             }
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:78:32: warning: sending 'articlePreview' risks causing data races; this is an error in the Swift 6 language mode
76 |
77 |                 DispatchQueue.main.async {
78 |                     completion(articlePreview, error)
   |                                |- warning: sending 'articlePreview' risks causing data races; this is an error in the Swift 6 language mode
   |                                `- note: task-isolated 'articlePreview' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
79 |                 }
80 |             }
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:70:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
68 |                 guard let jsonDictionary = jsonDictionary  else {
69 |                     DispatchQueue.main.async {
70 |                         completion (nil, .decodingError)
   |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
71 |                     }
72 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+ArticleSummary.swift:63:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
61 |                     // (also occurs when the request was cancelled programmatically)
62 |                     DispatchQueue.main.async {
63 |                         completion (nil, error)
   |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
   |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
64 |                     }
65 |                     return
[18/31] Compiling WikipediaKit WikipediaRandomArticlesBuffer.swift
/host/spi-builder-workspace/Sources/WikipediaRandomArticlesBuffer.swift:34:16: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
32 | class WikipediaRandomArticlesBuffer {
33 |
34 |     static var shared: WikipediaRandomArticlesBuffer = {
   |                |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- 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
35 |         return WikipediaRandomArticlesBuffer()
36 |     }()
[19/31] Compiling WikipediaKit WikipediaSearchMethod.swift
/host/spi-builder-workspace/Sources/WikipediaRandomArticlesBuffer.swift:34:16: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
32 | class WikipediaRandomArticlesBuffer {
33 |
34 |     static var shared: WikipediaRandomArticlesBuffer = {
   |                |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- 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
35 |         return WikipediaRandomArticlesBuffer()
36 |     }()
[20/31] Compiling WikipediaKit WikipediaSearchResults.swift
/host/spi-builder-workspace/Sources/WikipediaRandomArticlesBuffer.swift:34:16: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
32 | class WikipediaRandomArticlesBuffer {
33 |
34 |     static var shared: WikipediaRandomArticlesBuffer = {
   |                |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- 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
35 |         return WikipediaRandomArticlesBuffer()
36 |     }()
[21/31] Compiling WikipediaKit Wikipedia+RandomArticles.swift
/host/spi-builder-workspace/Sources/Wikipedia.swift:42:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Wikipedia' may have shared mutable state; this is an error in the Swift 6 language mode
35 | typealias JSONDictionary = [String:AnyObject]
36 |
37 | public class Wikipedia {
   |              `- note: class 'Wikipedia' does not conform to the 'Sendable' protocol
38 |
39 |     // Public initializer is required if we don’t use the shared singleton
40 |     public init() {}
41 |
42 |     public static let shared: Wikipedia = {
   |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Wikipedia' 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
43 |         return Wikipedia()
44 |     }()
/host/spi-builder-workspace/Sources/Wikipedia.swift:46:28: warning: static property 'sharedFormattingDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
44 |     }()
45 |
46 |     public static weak var sharedFormattingDelegate: WikipediaTextFormattingDelegate?
   |                            |- warning: static property 'sharedFormattingDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                            |- note: convert 'sharedFormattingDelegate' to a 'let' constant to make 'Sendable' shared state immutable
   |                            |- note: add '@MainActor' to make static property 'sharedFormattingDelegate' part of global actor 'MainActor'
   |                            `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
47 |
48 |     let articleCache: WikipediaArticleCache = {
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:110:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
108 |             else {
109 |                 DispatchQueue.main.async {
110 |                     completion(nil, language, .other(nil))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
111 |                 }
112 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:110:37: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
108 |             else {
109 |                 DispatchQueue.main.async {
110 |                     completion(nil, language, .other(nil))
    |                                     |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
111 |                 }
112 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:61:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 59 |                 let articlePreview = WikipediaRandomArticlesBuffer.shared.nextArticlePreview()
 60 |                 DispatchQueue.main.async {
 61 |                     completion(articlePreview, language, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 62 |                 }
 63 |             }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:61:48: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
 59 |                 let articlePreview = WikipediaRandomArticlesBuffer.shared.nextArticlePreview()
 60 |                 DispatchQueue.main.async {
 61 |                     completion(articlePreview, language, error)
    |                                                |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                                `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 62 |                 }
 63 |             }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:52:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 50 |                 guard let articlePreviews = articlePreviews else {
 51 |                     DispatchQueue.main.async {
 52 |                         completion(nil, language, error)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 53 |                     }
 54 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:52:41: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
 50 |                 guard let articlePreviews = articlePreviews else {
 51 |                     DispatchQueue.main.async {
 52 |                         completion(nil, language, error)
    |                                         |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 53 |                     }
 54 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:145:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
143 |                 let info = error["info"] as? String {
144 |                 DispatchQueue.main.async {
145 |                     completion (nil, language, .apiError(info))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
146 |                 }
147 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:145:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
143 |                 let info = error["info"] as? String {
144 |                 DispatchQueue.main.async {
145 |                     completion (nil, language, .apiError(info))
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
146 |                 }
147 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:17: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                 |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:28: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                            |- warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'results' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:37: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                                     |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:152:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
150 |             guard let pages = query["pages"] as? [JSONDictionary] else {
151 |                 DispatchQueue.main.async {
152 |                     completion (nil, language, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
153 |                 }
154 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:152:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
150 |             guard let pages = query["pages"] as? [JSONDictionary] else {
151 |                 DispatchQueue.main.async {
152 |                     completion (nil, language, .notFound)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
153 |                 }
154 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:137:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
135 |                     // there is no “query” key,
136 |                     // but unfortunately no error message either
137 |                     completion (nil, language, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
138 |                 }
139 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:137:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
135 |                     // there is no “query” key,
136 |                     // but unfortunately no error message either
137 |                     completion (nil, language, .notFound)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
138 |                 }
139 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:127:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
125 |             guard let jsonDictionary = jsonDictionary else {
126 |                 DispatchQueue.main.async {
127 |                     completion (nil, language, .decodingError)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
128 |                 }
129 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:127:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
125 |             guard let jsonDictionary = jsonDictionary else {
126 |                 DispatchQueue.main.async {
127 |                     completion (nil, language, .decodingError)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
128 |                 }
129 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:120:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
118 |                 // (also occurs when the request was cancelled programmatically)
119 |                 DispatchQueue.main.async {
120 |                     completion (nil, language, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 |                 }
122 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:120:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
118 |                 // (also occurs when the request was cancelled programmatically)
119 |                 DispatchQueue.main.async {
120 |                     completion (nil, language, error)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 |                 }
122 |                 return
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:99:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 97 |                 sr.term == term else {
 98 |                     DispatchQueue.main.async {
 99 |                         completion(nil, .other(nil))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
100 |                     }
101 |                     return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:114:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
112 |             if cachedSearchResults.items.count > searchResults.items.count {
113 |                 DispatchQueue.main.async {
114 |                     completion(cachedSearchResults, nil)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
115 |                 }
116 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:114:32: warning: sending 'cachedSearchResults' risks causing data races; this is an error in the Swift 6 language mode
112 |             if cachedSearchResults.items.count > searchResults.items.count {
113 |                 DispatchQueue.main.async {
114 |                     completion(cachedSearchResults, nil)
    |                                |- warning: sending 'cachedSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'cachedSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
115 |                 }
116 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:200:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
198 |             else {
199 |                 DispatchQueue.main.async {
200 |                     completion(nil, .other(nil))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
201 |                 }
202 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:76:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 74 |             } else {
 75 |                 DispatchQueue.main.async {
 76 |                     completion(searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |                 }
 78 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:76:32: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
 74 |             } else {
 75 |                 DispatchQueue.main.async {
 76 |                     completion(searchResults, error)
    |                                |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |                 }
 78 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:65:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 63 |                     if (fullTextSearchResults?.items.count ?? 0) >= (prefixSearchResults?.items.count ?? 0) {
 64 |                         DispatchQueue.main.async {
 65 |                             completion(fullTextSearchResults, error)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 66 |                         }
 67 |                     } else {
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:65:40: warning: sending 'fullTextSearchResults' risks causing data races; this is an error in the Swift 6 language mode
 63 |                     if (fullTextSearchResults?.items.count ?? 0) >= (prefixSearchResults?.items.count ?? 0) {
 64 |                         DispatchQueue.main.async {
 65 |                             completion(fullTextSearchResults, error)
    |                                        |- warning: sending 'fullTextSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'fullTextSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 66 |                         }
 67 |                     } else {
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:69:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 67 |                     } else {
 68 |                         DispatchQueue.main.async {
 69 |                             completion(prefixSearchResults, nil)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |                         }
 71 |                     }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:69:40: warning: sending 'prefixSearchResults' risks causing data races; this is an error in the Swift 6 language mode
 67 |                     } else {
 68 |                         DispatchQueue.main.async {
 69 |                             completion(prefixSearchResults, nil)
    |                                        |- warning: sending 'prefixSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'prefixSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |                         }
 71 |                     }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:261:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
259 |
260 |                     DispatchQueue.main.async {
261 |                         completion (searchResults, .notEnoughResults)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
262 |                     }
263 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:261:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
259 |
260 |                     DispatchQueue.main.async {
261 |                         completion (searchResults, .notEnoughResults)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
262 |                     }
263 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:269:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
267 |
268 |                 DispatchQueue.main.async {
269 |                     completion(searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
270 |                 }
271 |
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:269:32: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
267 |
268 |                 DispatchQueue.main.async {
269 |                     completion(searchResults, error)
    |                                |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
270 |                 }
271 |
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:277:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
275 |                 if searchResults.offset == 0 {
276 |                     DispatchQueue.main.async {
277 |                         completion (searchResults, .notFound)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
278 |                     }
279 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:277:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
275 |                 if searchResults.offset == 0 {
276 |                     DispatchQueue.main.async {
277 |                         completion (searchResults, .notFound)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
278 |                     }
279 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:284:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
282 |                     searchResults.canLoadMore = false
283 |                     DispatchQueue.main.async {
284 |                         completion (searchResults, error)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
285 |                     }
286 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:284:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
282 |                     searchResults.canLoadMore = false
283 |                     DispatchQueue.main.async {
284 |                         completion (searchResults, error)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
285 |                     }
286 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:224:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
222 |             guard let query = jsonDictionary["query"] as? JSONDictionary else {
223 |                 DispatchQueue.main.async {
224 |                     completion (searchResults, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
225 |                 }
226 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:224:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
222 |             guard let query = jsonDictionary["query"] as? JSONDictionary else {
223 |                 DispatchQueue.main.async {
224 |                     completion (searchResults, .notFound)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
225 |                 }
226 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:217:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
215 |             guard let jsonDictionary = jsonDictionary else {
216 |                 DispatchQueue.main.async {
217 |                     completion (searchResults, .decodingError)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 |                 }
219 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:217:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
215 |             guard let jsonDictionary = jsonDictionary else {
216 |                 DispatchQueue.main.async {
217 |                     completion (searchResults, .decodingError)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 |                 }
219 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:210:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
208 |                 // (also occurs when the request was cancelled programmatically)
209 |                 DispatchQueue.main.async {
210 |                     completion (searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
211 |                 }
212 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:210:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
208 |                 // (also occurs when the request was cancelled programmatically)
209 |                 DispatchQueue.main.async {
210 |                     completion (searchResults, error)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
211 |                 }
212 |                 return
[22/31] Compiling WikipediaKit Wikipedia+Search.swift
/host/spi-builder-workspace/Sources/Wikipedia.swift:42:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Wikipedia' may have shared mutable state; this is an error in the Swift 6 language mode
35 | typealias JSONDictionary = [String:AnyObject]
36 |
37 | public class Wikipedia {
   |              `- note: class 'Wikipedia' does not conform to the 'Sendable' protocol
38 |
39 |     // Public initializer is required if we don’t use the shared singleton
40 |     public init() {}
41 |
42 |     public static let shared: Wikipedia = {
   |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Wikipedia' 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
43 |         return Wikipedia()
44 |     }()
/host/spi-builder-workspace/Sources/Wikipedia.swift:46:28: warning: static property 'sharedFormattingDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
44 |     }()
45 |
46 |     public static weak var sharedFormattingDelegate: WikipediaTextFormattingDelegate?
   |                            |- warning: static property 'sharedFormattingDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                            |- note: convert 'sharedFormattingDelegate' to a 'let' constant to make 'Sendable' shared state immutable
   |                            |- note: add '@MainActor' to make static property 'sharedFormattingDelegate' part of global actor 'MainActor'
   |                            `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
47 |
48 |     let articleCache: WikipediaArticleCache = {
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:110:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
108 |             else {
109 |                 DispatchQueue.main.async {
110 |                     completion(nil, language, .other(nil))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
111 |                 }
112 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:110:37: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
108 |             else {
109 |                 DispatchQueue.main.async {
110 |                     completion(nil, language, .other(nil))
    |                                     |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
111 |                 }
112 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:61:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 59 |                 let articlePreview = WikipediaRandomArticlesBuffer.shared.nextArticlePreview()
 60 |                 DispatchQueue.main.async {
 61 |                     completion(articlePreview, language, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 62 |                 }
 63 |             }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:61:48: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
 59 |                 let articlePreview = WikipediaRandomArticlesBuffer.shared.nextArticlePreview()
 60 |                 DispatchQueue.main.async {
 61 |                     completion(articlePreview, language, error)
    |                                                |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                                `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 62 |                 }
 63 |             }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:52:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 50 |                 guard let articlePreviews = articlePreviews else {
 51 |                     DispatchQueue.main.async {
 52 |                         completion(nil, language, error)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 53 |                     }
 54 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:52:41: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
 50 |                 guard let articlePreviews = articlePreviews else {
 51 |                     DispatchQueue.main.async {
 52 |                         completion(nil, language, error)
    |                                         |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 53 |                     }
 54 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:145:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
143 |                 let info = error["info"] as? String {
144 |                 DispatchQueue.main.async {
145 |                     completion (nil, language, .apiError(info))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
146 |                 }
147 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:145:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
143 |                 let info = error["info"] as? String {
144 |                 DispatchQueue.main.async {
145 |                     completion (nil, language, .apiError(info))
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
146 |                 }
147 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:17: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                 |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:28: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                            |- warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'results' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:37: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                                     |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:152:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
150 |             guard let pages = query["pages"] as? [JSONDictionary] else {
151 |                 DispatchQueue.main.async {
152 |                     completion (nil, language, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
153 |                 }
154 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:152:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
150 |             guard let pages = query["pages"] as? [JSONDictionary] else {
151 |                 DispatchQueue.main.async {
152 |                     completion (nil, language, .notFound)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
153 |                 }
154 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:137:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
135 |                     // there is no “query” key,
136 |                     // but unfortunately no error message either
137 |                     completion (nil, language, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
138 |                 }
139 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:137:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
135 |                     // there is no “query” key,
136 |                     // but unfortunately no error message either
137 |                     completion (nil, language, .notFound)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
138 |                 }
139 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:127:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
125 |             guard let jsonDictionary = jsonDictionary else {
126 |                 DispatchQueue.main.async {
127 |                     completion (nil, language, .decodingError)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
128 |                 }
129 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:127:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
125 |             guard let jsonDictionary = jsonDictionary else {
126 |                 DispatchQueue.main.async {
127 |                     completion (nil, language, .decodingError)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
128 |                 }
129 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:120:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
118 |                 // (also occurs when the request was cancelled programmatically)
119 |                 DispatchQueue.main.async {
120 |                     completion (nil, language, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 |                 }
122 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:120:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
118 |                 // (also occurs when the request was cancelled programmatically)
119 |                 DispatchQueue.main.async {
120 |                     completion (nil, language, error)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 |                 }
122 |                 return
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:99:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 97 |                 sr.term == term else {
 98 |                     DispatchQueue.main.async {
 99 |                         completion(nil, .other(nil))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
100 |                     }
101 |                     return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:114:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
112 |             if cachedSearchResults.items.count > searchResults.items.count {
113 |                 DispatchQueue.main.async {
114 |                     completion(cachedSearchResults, nil)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
115 |                 }
116 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:114:32: warning: sending 'cachedSearchResults' risks causing data races; this is an error in the Swift 6 language mode
112 |             if cachedSearchResults.items.count > searchResults.items.count {
113 |                 DispatchQueue.main.async {
114 |                     completion(cachedSearchResults, nil)
    |                                |- warning: sending 'cachedSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'cachedSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
115 |                 }
116 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:200:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
198 |             else {
199 |                 DispatchQueue.main.async {
200 |                     completion(nil, .other(nil))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
201 |                 }
202 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:76:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 74 |             } else {
 75 |                 DispatchQueue.main.async {
 76 |                     completion(searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |                 }
 78 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:76:32: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
 74 |             } else {
 75 |                 DispatchQueue.main.async {
 76 |                     completion(searchResults, error)
    |                                |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |                 }
 78 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:65:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 63 |                     if (fullTextSearchResults?.items.count ?? 0) >= (prefixSearchResults?.items.count ?? 0) {
 64 |                         DispatchQueue.main.async {
 65 |                             completion(fullTextSearchResults, error)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 66 |                         }
 67 |                     } else {
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:65:40: warning: sending 'fullTextSearchResults' risks causing data races; this is an error in the Swift 6 language mode
 63 |                     if (fullTextSearchResults?.items.count ?? 0) >= (prefixSearchResults?.items.count ?? 0) {
 64 |                         DispatchQueue.main.async {
 65 |                             completion(fullTextSearchResults, error)
    |                                        |- warning: sending 'fullTextSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'fullTextSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 66 |                         }
 67 |                     } else {
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:69:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 67 |                     } else {
 68 |                         DispatchQueue.main.async {
 69 |                             completion(prefixSearchResults, nil)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |                         }
 71 |                     }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:69:40: warning: sending 'prefixSearchResults' risks causing data races; this is an error in the Swift 6 language mode
 67 |                     } else {
 68 |                         DispatchQueue.main.async {
 69 |                             completion(prefixSearchResults, nil)
    |                                        |- warning: sending 'prefixSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'prefixSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |                         }
 71 |                     }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:261:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
259 |
260 |                     DispatchQueue.main.async {
261 |                         completion (searchResults, .notEnoughResults)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
262 |                     }
263 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:261:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
259 |
260 |                     DispatchQueue.main.async {
261 |                         completion (searchResults, .notEnoughResults)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
262 |                     }
263 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:269:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
267 |
268 |                 DispatchQueue.main.async {
269 |                     completion(searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
270 |                 }
271 |
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:269:32: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
267 |
268 |                 DispatchQueue.main.async {
269 |                     completion(searchResults, error)
    |                                |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
270 |                 }
271 |
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:277:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
275 |                 if searchResults.offset == 0 {
276 |                     DispatchQueue.main.async {
277 |                         completion (searchResults, .notFound)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
278 |                     }
279 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:277:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
275 |                 if searchResults.offset == 0 {
276 |                     DispatchQueue.main.async {
277 |                         completion (searchResults, .notFound)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
278 |                     }
279 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:284:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
282 |                     searchResults.canLoadMore = false
283 |                     DispatchQueue.main.async {
284 |                         completion (searchResults, error)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
285 |                     }
286 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:284:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
282 |                     searchResults.canLoadMore = false
283 |                     DispatchQueue.main.async {
284 |                         completion (searchResults, error)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
285 |                     }
286 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:224:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
222 |             guard let query = jsonDictionary["query"] as? JSONDictionary else {
223 |                 DispatchQueue.main.async {
224 |                     completion (searchResults, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
225 |                 }
226 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:224:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
222 |             guard let query = jsonDictionary["query"] as? JSONDictionary else {
223 |                 DispatchQueue.main.async {
224 |                     completion (searchResults, .notFound)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
225 |                 }
226 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:217:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
215 |             guard let jsonDictionary = jsonDictionary else {
216 |                 DispatchQueue.main.async {
217 |                     completion (searchResults, .decodingError)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 |                 }
219 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:217:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
215 |             guard let jsonDictionary = jsonDictionary else {
216 |                 DispatchQueue.main.async {
217 |                     completion (searchResults, .decodingError)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 |                 }
219 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:210:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
208 |                 // (also occurs when the request was cancelled programmatically)
209 |                 DispatchQueue.main.async {
210 |                     completion (searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
211 |                 }
212 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:210:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
208 |                 // (also occurs when the request was cancelled programmatically)
209 |                 DispatchQueue.main.async {
210 |                     completion (searchResults, error)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
211 |                 }
212 |                 return
[23/31] Compiling WikipediaKit Wikipedia.swift
/host/spi-builder-workspace/Sources/Wikipedia.swift:42:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Wikipedia' may have shared mutable state; this is an error in the Swift 6 language mode
35 | typealias JSONDictionary = [String:AnyObject]
36 |
37 | public class Wikipedia {
   |              `- note: class 'Wikipedia' does not conform to the 'Sendable' protocol
38 |
39 |     // Public initializer is required if we don’t use the shared singleton
40 |     public init() {}
41 |
42 |     public static let shared: Wikipedia = {
   |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Wikipedia' 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
43 |         return Wikipedia()
44 |     }()
/host/spi-builder-workspace/Sources/Wikipedia.swift:46:28: warning: static property 'sharedFormattingDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
44 |     }()
45 |
46 |     public static weak var sharedFormattingDelegate: WikipediaTextFormattingDelegate?
   |                            |- warning: static property 'sharedFormattingDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                            |- note: convert 'sharedFormattingDelegate' to a 'let' constant to make 'Sendable' shared state immutable
   |                            |- note: add '@MainActor' to make static property 'sharedFormattingDelegate' part of global actor 'MainActor'
   |                            `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
47 |
48 |     let articleCache: WikipediaArticleCache = {
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:110:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
108 |             else {
109 |                 DispatchQueue.main.async {
110 |                     completion(nil, language, .other(nil))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
111 |                 }
112 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:110:37: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
108 |             else {
109 |                 DispatchQueue.main.async {
110 |                     completion(nil, language, .other(nil))
    |                                     |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
111 |                 }
112 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:61:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 59 |                 let articlePreview = WikipediaRandomArticlesBuffer.shared.nextArticlePreview()
 60 |                 DispatchQueue.main.async {
 61 |                     completion(articlePreview, language, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 62 |                 }
 63 |             }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:61:48: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
 59 |                 let articlePreview = WikipediaRandomArticlesBuffer.shared.nextArticlePreview()
 60 |                 DispatchQueue.main.async {
 61 |                     completion(articlePreview, language, error)
    |                                                |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                                `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 62 |                 }
 63 |             }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:52:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 50 |                 guard let articlePreviews = articlePreviews else {
 51 |                     DispatchQueue.main.async {
 52 |                         completion(nil, language, error)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 53 |                     }
 54 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:52:41: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
 50 |                 guard let articlePreviews = articlePreviews else {
 51 |                     DispatchQueue.main.async {
 52 |                         completion(nil, language, error)
    |                                         |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 53 |                     }
 54 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:145:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
143 |                 let info = error["info"] as? String {
144 |                 DispatchQueue.main.async {
145 |                     completion (nil, language, .apiError(info))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
146 |                 }
147 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:145:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
143 |                 let info = error["info"] as? String {
144 |                 DispatchQueue.main.async {
145 |                     completion (nil, language, .apiError(info))
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
146 |                 }
147 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:17: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                 |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:28: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                            |- warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'results' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:37: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                                     |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:152:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
150 |             guard let pages = query["pages"] as? [JSONDictionary] else {
151 |                 DispatchQueue.main.async {
152 |                     completion (nil, language, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
153 |                 }
154 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:152:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
150 |             guard let pages = query["pages"] as? [JSONDictionary] else {
151 |                 DispatchQueue.main.async {
152 |                     completion (nil, language, .notFound)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
153 |                 }
154 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:137:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
135 |                     // there is no “query” key,
136 |                     // but unfortunately no error message either
137 |                     completion (nil, language, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
138 |                 }
139 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:137:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
135 |                     // there is no “query” key,
136 |                     // but unfortunately no error message either
137 |                     completion (nil, language, .notFound)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
138 |                 }
139 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:127:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
125 |             guard let jsonDictionary = jsonDictionary else {
126 |                 DispatchQueue.main.async {
127 |                     completion (nil, language, .decodingError)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
128 |                 }
129 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:127:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
125 |             guard let jsonDictionary = jsonDictionary else {
126 |                 DispatchQueue.main.async {
127 |                     completion (nil, language, .decodingError)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
128 |                 }
129 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:120:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
118 |                 // (also occurs when the request was cancelled programmatically)
119 |                 DispatchQueue.main.async {
120 |                     completion (nil, language, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 |                 }
122 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:120:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
118 |                 // (also occurs when the request was cancelled programmatically)
119 |                 DispatchQueue.main.async {
120 |                     completion (nil, language, error)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 |                 }
122 |                 return
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:99:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 97 |                 sr.term == term else {
 98 |                     DispatchQueue.main.async {
 99 |                         completion(nil, .other(nil))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
100 |                     }
101 |                     return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:114:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
112 |             if cachedSearchResults.items.count > searchResults.items.count {
113 |                 DispatchQueue.main.async {
114 |                     completion(cachedSearchResults, nil)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
115 |                 }
116 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:114:32: warning: sending 'cachedSearchResults' risks causing data races; this is an error in the Swift 6 language mode
112 |             if cachedSearchResults.items.count > searchResults.items.count {
113 |                 DispatchQueue.main.async {
114 |                     completion(cachedSearchResults, nil)
    |                                |- warning: sending 'cachedSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'cachedSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
115 |                 }
116 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:200:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
198 |             else {
199 |                 DispatchQueue.main.async {
200 |                     completion(nil, .other(nil))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
201 |                 }
202 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:76:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 74 |             } else {
 75 |                 DispatchQueue.main.async {
 76 |                     completion(searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |                 }
 78 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:76:32: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
 74 |             } else {
 75 |                 DispatchQueue.main.async {
 76 |                     completion(searchResults, error)
    |                                |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |                 }
 78 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:65:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 63 |                     if (fullTextSearchResults?.items.count ?? 0) >= (prefixSearchResults?.items.count ?? 0) {
 64 |                         DispatchQueue.main.async {
 65 |                             completion(fullTextSearchResults, error)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 66 |                         }
 67 |                     } else {
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:65:40: warning: sending 'fullTextSearchResults' risks causing data races; this is an error in the Swift 6 language mode
 63 |                     if (fullTextSearchResults?.items.count ?? 0) >= (prefixSearchResults?.items.count ?? 0) {
 64 |                         DispatchQueue.main.async {
 65 |                             completion(fullTextSearchResults, error)
    |                                        |- warning: sending 'fullTextSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'fullTextSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 66 |                         }
 67 |                     } else {
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:69:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 67 |                     } else {
 68 |                         DispatchQueue.main.async {
 69 |                             completion(prefixSearchResults, nil)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |                         }
 71 |                     }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:69:40: warning: sending 'prefixSearchResults' risks causing data races; this is an error in the Swift 6 language mode
 67 |                     } else {
 68 |                         DispatchQueue.main.async {
 69 |                             completion(prefixSearchResults, nil)
    |                                        |- warning: sending 'prefixSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'prefixSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |                         }
 71 |                     }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:261:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
259 |
260 |                     DispatchQueue.main.async {
261 |                         completion (searchResults, .notEnoughResults)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
262 |                     }
263 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:261:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
259 |
260 |                     DispatchQueue.main.async {
261 |                         completion (searchResults, .notEnoughResults)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
262 |                     }
263 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:269:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
267 |
268 |                 DispatchQueue.main.async {
269 |                     completion(searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
270 |                 }
271 |
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:269:32: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
267 |
268 |                 DispatchQueue.main.async {
269 |                     completion(searchResults, error)
    |                                |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
270 |                 }
271 |
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:277:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
275 |                 if searchResults.offset == 0 {
276 |                     DispatchQueue.main.async {
277 |                         completion (searchResults, .notFound)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
278 |                     }
279 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:277:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
275 |                 if searchResults.offset == 0 {
276 |                     DispatchQueue.main.async {
277 |                         completion (searchResults, .notFound)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
278 |                     }
279 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:284:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
282 |                     searchResults.canLoadMore = false
283 |                     DispatchQueue.main.async {
284 |                         completion (searchResults, error)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
285 |                     }
286 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:284:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
282 |                     searchResults.canLoadMore = false
283 |                     DispatchQueue.main.async {
284 |                         completion (searchResults, error)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
285 |                     }
286 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:224:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
222 |             guard let query = jsonDictionary["query"] as? JSONDictionary else {
223 |                 DispatchQueue.main.async {
224 |                     completion (searchResults, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
225 |                 }
226 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:224:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
222 |             guard let query = jsonDictionary["query"] as? JSONDictionary else {
223 |                 DispatchQueue.main.async {
224 |                     completion (searchResults, .notFound)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
225 |                 }
226 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:217:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
215 |             guard let jsonDictionary = jsonDictionary else {
216 |                 DispatchQueue.main.async {
217 |                     completion (searchResults, .decodingError)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 |                 }
219 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:217:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
215 |             guard let jsonDictionary = jsonDictionary else {
216 |                 DispatchQueue.main.async {
217 |                     completion (searchResults, .decodingError)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 |                 }
219 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:210:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
208 |                 // (also occurs when the request was cancelled programmatically)
209 |                 DispatchQueue.main.async {
210 |                     completion (searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
211 |                 }
212 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:210:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
208 |                 // (also occurs when the request was cancelled programmatically)
209 |                 DispatchQueue.main.async {
210 |                     completion (searchResults, error)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
211 |                 }
212 |                 return
[24/31] Compiling WikipediaKit WikipediaArticle.swift
/host/spi-builder-workspace/Sources/Wikipedia.swift:42:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Wikipedia' may have shared mutable state; this is an error in the Swift 6 language mode
35 | typealias JSONDictionary = [String:AnyObject]
36 |
37 | public class Wikipedia {
   |              `- note: class 'Wikipedia' does not conform to the 'Sendable' protocol
38 |
39 |     // Public initializer is required if we don’t use the shared singleton
40 |     public init() {}
41 |
42 |     public static let shared: Wikipedia = {
   |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'Wikipedia' 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
43 |         return Wikipedia()
44 |     }()
/host/spi-builder-workspace/Sources/Wikipedia.swift:46:28: warning: static property 'sharedFormattingDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
44 |     }()
45 |
46 |     public static weak var sharedFormattingDelegate: WikipediaTextFormattingDelegate?
   |                            |- warning: static property 'sharedFormattingDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                            |- note: convert 'sharedFormattingDelegate' to a 'let' constant to make 'Sendable' shared state immutable
   |                            |- note: add '@MainActor' to make static property 'sharedFormattingDelegate' part of global actor 'MainActor'
   |                            `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
47 |
48 |     let articleCache: WikipediaArticleCache = {
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:110:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
108 |             else {
109 |                 DispatchQueue.main.async {
110 |                     completion(nil, language, .other(nil))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
111 |                 }
112 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:110:37: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
108 |             else {
109 |                 DispatchQueue.main.async {
110 |                     completion(nil, language, .other(nil))
    |                                     |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
111 |                 }
112 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:61:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 59 |                 let articlePreview = WikipediaRandomArticlesBuffer.shared.nextArticlePreview()
 60 |                 DispatchQueue.main.async {
 61 |                     completion(articlePreview, language, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 62 |                 }
 63 |             }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:61:48: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
 59 |                 let articlePreview = WikipediaRandomArticlesBuffer.shared.nextArticlePreview()
 60 |                 DispatchQueue.main.async {
 61 |                     completion(articlePreview, language, error)
    |                                                |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                                `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 62 |                 }
 63 |             }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:52:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 50 |                 guard let articlePreviews = articlePreviews else {
 51 |                     DispatchQueue.main.async {
 52 |                         completion(nil, language, error)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 53 |                     }
 54 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:52:41: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
 50 |                 guard let articlePreviews = articlePreviews else {
 51 |                     DispatchQueue.main.async {
 52 |                         completion(nil, language, error)
    |                                         |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                         `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 53 |                     }
 54 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:145:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
143 |                 let info = error["info"] as? String {
144 |                 DispatchQueue.main.async {
145 |                     completion (nil, language, .apiError(info))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
146 |                 }
147 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:145:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
143 |                 let info = error["info"] as? String {
144 |                 DispatchQueue.main.async {
145 |                     completion (nil, language, .apiError(info))
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
146 |                 }
147 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:17: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                 |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                 `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:28: warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                            |- warning: sending 'results' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'results' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:166:37: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
164 |
165 |             DispatchQueue.main.async {
166 |                 completion(results, language, error)
    |                                     |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
167 |             }
168 |         }
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:152:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
150 |             guard let pages = query["pages"] as? [JSONDictionary] else {
151 |                 DispatchQueue.main.async {
152 |                     completion (nil, language, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
153 |                 }
154 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:152:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
150 |             guard let pages = query["pages"] as? [JSONDictionary] else {
151 |                 DispatchQueue.main.async {
152 |                     completion (nil, language, .notFound)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
153 |                 }
154 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:137:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
135 |                     // there is no “query” key,
136 |                     // but unfortunately no error message either
137 |                     completion (nil, language, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
138 |                 }
139 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:137:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
135 |                     // there is no “query” key,
136 |                     // but unfortunately no error message either
137 |                     completion (nil, language, .notFound)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
138 |                 }
139 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:127:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
125 |             guard let jsonDictionary = jsonDictionary else {
126 |                 DispatchQueue.main.async {
127 |                     completion (nil, language, .decodingError)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
128 |                 }
129 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:127:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
125 |             guard let jsonDictionary = jsonDictionary else {
126 |                 DispatchQueue.main.async {
127 |                     completion (nil, language, .decodingError)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
128 |                 }
129 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:120:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
118 |                 // (also occurs when the request was cancelled programmatically)
119 |                 DispatchQueue.main.async {
120 |                     completion (nil, language, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 |                 }
122 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+RandomArticles.swift:120:38: warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
118 |                 // (also occurs when the request was cancelled programmatically)
119 |                 DispatchQueue.main.async {
120 |                     completion (nil, language, error)
    |                                      |- warning: sending 'language' risks causing data races; this is an error in the Swift 6 language mode
    |                                      `- note: task-isolated 'language' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
121 |                 }
122 |                 return
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:99:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 97 |                 sr.term == term else {
 98 |                     DispatchQueue.main.async {
 99 |                         completion(nil, .other(nil))
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
100 |                     }
101 |                     return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:114:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
112 |             if cachedSearchResults.items.count > searchResults.items.count {
113 |                 DispatchQueue.main.async {
114 |                     completion(cachedSearchResults, nil)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
115 |                 }
116 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:114:32: warning: sending 'cachedSearchResults' risks causing data races; this is an error in the Swift 6 language mode
112 |             if cachedSearchResults.items.count > searchResults.items.count {
113 |                 DispatchQueue.main.async {
114 |                     completion(cachedSearchResults, nil)
    |                                |- warning: sending 'cachedSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'cachedSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
115 |                 }
116 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:200:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
198 |             else {
199 |                 DispatchQueue.main.async {
200 |                     completion(nil, .other(nil))
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
201 |                 }
202 |                 return nil
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:76:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 74 |             } else {
 75 |                 DispatchQueue.main.async {
 76 |                     completion(searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |                 }
 78 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:76:32: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
 74 |             } else {
 75 |                 DispatchQueue.main.async {
 76 |                     completion(searchResults, error)
    |                                |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 77 |                 }
 78 |             }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:65:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 63 |                     if (fullTextSearchResults?.items.count ?? 0) >= (prefixSearchResults?.items.count ?? 0) {
 64 |                         DispatchQueue.main.async {
 65 |                             completion(fullTextSearchResults, error)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 66 |                         }
 67 |                     } else {
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:65:40: warning: sending 'fullTextSearchResults' risks causing data races; this is an error in the Swift 6 language mode
 63 |                     if (fullTextSearchResults?.items.count ?? 0) >= (prefixSearchResults?.items.count ?? 0) {
 64 |                         DispatchQueue.main.async {
 65 |                             completion(fullTextSearchResults, error)
    |                                        |- warning: sending 'fullTextSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'fullTextSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 66 |                         }
 67 |                     } else {
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:69:29: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
 67 |                     } else {
 68 |                         DispatchQueue.main.async {
 69 |                             completion(prefixSearchResults, nil)
    |                             |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                             `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |                         }
 71 |                     }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:69:40: warning: sending 'prefixSearchResults' risks causing data races; this is an error in the Swift 6 language mode
 67 |                     } else {
 68 |                         DispatchQueue.main.async {
 69 |                             completion(prefixSearchResults, nil)
    |                                        |- warning: sending 'prefixSearchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                        `- note: task-isolated 'prefixSearchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 70 |                         }
 71 |                     }
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:261:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
259 |
260 |                     DispatchQueue.main.async {
261 |                         completion (searchResults, .notEnoughResults)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
262 |                     }
263 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:261:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
259 |
260 |                     DispatchQueue.main.async {
261 |                         completion (searchResults, .notEnoughResults)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
262 |                     }
263 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:269:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
267 |
268 |                 DispatchQueue.main.async {
269 |                     completion(searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
270 |                 }
271 |
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:269:32: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
267 |
268 |                 DispatchQueue.main.async {
269 |                     completion(searchResults, error)
    |                                |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
270 |                 }
271 |
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:277:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
275 |                 if searchResults.offset == 0 {
276 |                     DispatchQueue.main.async {
277 |                         completion (searchResults, .notFound)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
278 |                     }
279 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:277:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
275 |                 if searchResults.offset == 0 {
276 |                     DispatchQueue.main.async {
277 |                         completion (searchResults, .notFound)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
278 |                     }
279 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:284:25: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
282 |                     searchResults.canLoadMore = false
283 |                     DispatchQueue.main.async {
284 |                         completion (searchResults, error)
    |                         |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                         `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
285 |                     }
286 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:284:37: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
282 |                     searchResults.canLoadMore = false
283 |                     DispatchQueue.main.async {
284 |                         completion (searchResults, error)
    |                                     |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
285 |                     }
286 |                     return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:224:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
222 |             guard let query = jsonDictionary["query"] as? JSONDictionary else {
223 |                 DispatchQueue.main.async {
224 |                     completion (searchResults, .notFound)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
225 |                 }
226 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:224:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
222 |             guard let query = jsonDictionary["query"] as? JSONDictionary else {
223 |                 DispatchQueue.main.async {
224 |                     completion (searchResults, .notFound)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
225 |                 }
226 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:217:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
215 |             guard let jsonDictionary = jsonDictionary else {
216 |                 DispatchQueue.main.async {
217 |                     completion (searchResults, .decodingError)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 |                 }
219 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:217:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
215 |             guard let jsonDictionary = jsonDictionary else {
216 |                 DispatchQueue.main.async {
217 |                     completion (searchResults, .decodingError)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
218 |                 }
219 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:210:21: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
208 |                 // (also occurs when the request was cancelled programmatically)
209 |                 DispatchQueue.main.async {
210 |                     completion (searchResults, error)
    |                     |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
211 |                 }
212 |                 return
/host/spi-builder-workspace/Sources/Wikipedia+Search.swift:210:33: warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
208 |                 // (also occurs when the request was cancelled programmatically)
209 |                 DispatchQueue.main.async {
210 |                     completion (searchResults, error)
    |                                 |- warning: sending 'searchResults' risks causing data races; this is an error in the Swift 6 language mode
    |                                 `- note: task-isolated 'searchResults' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
211 |                 }
212 |                 return
[25/31] Compiling WikipediaKit WikipediaArticleCache.swift
[26/31] Compiling WikipediaKit WikipediaArticleLanguageLink.swift
[27/31] Compiling WikipediaKit WikipediaArticlePreview.swift
[28/31] Compiling WikipediaKit WikipediaError.swift
[29/31] Compiling WikipediaKit WikipediaNamespace.swift
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:37:23: warning: static property 'appAuthorEmailForAPI' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 35 | public class WikipediaNetworking {
 36 |
 37 |     public static var appAuthorEmailForAPI = ""
    |                       |- warning: static property 'appAuthorEmailForAPI' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'appAuthorEmailForAPI' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'appAuthorEmailForAPI' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 38 |
 39 |     public static let shared: WikipediaNetworking = {
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:39:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'WikipediaNetworking' may have shared mutable state; this is an error in the Swift 6 language mode
 33 | #endif
 34 |
 35 | public class WikipediaNetworking {
    |              `- note: class 'WikipediaNetworking' does not conform to the 'Sendable' protocol
 36 |
 37 |     public static var appAuthorEmailForAPI = ""
 38 |
 39 |     public static let shared: WikipediaNetworking = {
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'WikipediaNetworking' 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
 40 |         return WikipediaNetworking()
 41 |     }()
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:43:23: warning: static property 'debugPerformance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 41 |     }()
 42 |
 43 |     public static var debugPerformance = false
    |                       |- warning: static property 'debugPerformance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'debugPerformance' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'debugPerformance' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 44 |
 45 |     private func logMessage(_ message: String) {
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:53:28: warning: static property 'sharedActivityIndicatorDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 51 |     }
 52 |
 53 |     public static weak var sharedActivityIndicatorDelegate: WikipediaNetworkingActivityDelegate?
    |                            |- warning: static property 'sharedActivityIndicatorDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                            |- note: convert 'sharedActivityIndicatorDelegate' to a 'let' constant to make 'Sendable' shared state immutable
    |                            |- note: add '@MainActor' to make static property 'sharedActivityIndicatorDelegate' part of global actor 'MainActor'
    |                            `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 54 |
 55 |     let session = URLSession(configuration: URLSessionConfiguration.default)
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:88:17: warning: capture of 'self' with non-sendable type 'WikipediaNetworking' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 33 | #endif
 34 |
 35 | public class WikipediaNetworking {
    |              `- note: class 'WikipediaNetworking' does not conform to the 'Sendable' protocol
 36 |
 37 |     public static var appAuthorEmailForAPI = ""
    :
 86 |                 let endNetworkingTime = Date()
 87 |                 let totalNetworkingTime: Double = endNetworkingTime.timeIntervalSince(startTime)
 88 |                 self.logMessage("\(totalNetworkingTime) seconds for network retrieval")
    |                 `- warning: capture of 'self' with non-sendable type 'WikipediaNetworking' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 89 |             #endif
 90 |
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:113:17: warning: capture of 'completion' with non-sendable type '(JSONDictionary?, WikipediaError?) -> ()' (aka '(Optional<Dictionary<String, AnyObject>>, Optional<WikipediaError>) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
111 |                     }
112 |                 }
113 |                 completion(nil, wikipediaError)
    |                 |- warning: capture of 'completion' with non-sendable type '(JSONDictionary?, WikipediaError?) -> ()' (aka '(Optional<Dictionary<String, AnyObject>>, Optional<WikipediaError>) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
114 |                 return
115 |             }
[30/31] Compiling WikipediaKit WikipediaNetworking.swift
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:37:23: warning: static property 'appAuthorEmailForAPI' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 35 | public class WikipediaNetworking {
 36 |
 37 |     public static var appAuthorEmailForAPI = ""
    |                       |- warning: static property 'appAuthorEmailForAPI' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'appAuthorEmailForAPI' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'appAuthorEmailForAPI' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 38 |
 39 |     public static let shared: WikipediaNetworking = {
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:39:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'WikipediaNetworking' may have shared mutable state; this is an error in the Swift 6 language mode
 33 | #endif
 34 |
 35 | public class WikipediaNetworking {
    |              `- note: class 'WikipediaNetworking' does not conform to the 'Sendable' protocol
 36 |
 37 |     public static var appAuthorEmailForAPI = ""
 38 |
 39 |     public static let shared: WikipediaNetworking = {
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'WikipediaNetworking' 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
 40 |         return WikipediaNetworking()
 41 |     }()
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:43:23: warning: static property 'debugPerformance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 41 |     }()
 42 |
 43 |     public static var debugPerformance = false
    |                       |- warning: static property 'debugPerformance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'debugPerformance' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'debugPerformance' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 44 |
 45 |     private func logMessage(_ message: String) {
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:53:28: warning: static property 'sharedActivityIndicatorDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 51 |     }
 52 |
 53 |     public static weak var sharedActivityIndicatorDelegate: WikipediaNetworkingActivityDelegate?
    |                            |- warning: static property 'sharedActivityIndicatorDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                            |- note: convert 'sharedActivityIndicatorDelegate' to a 'let' constant to make 'Sendable' shared state immutable
    |                            |- note: add '@MainActor' to make static property 'sharedActivityIndicatorDelegate' part of global actor 'MainActor'
    |                            `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 54 |
 55 |     let session = URLSession(configuration: URLSessionConfiguration.default)
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:88:17: warning: capture of 'self' with non-sendable type 'WikipediaNetworking' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 33 | #endif
 34 |
 35 | public class WikipediaNetworking {
    |              `- note: class 'WikipediaNetworking' does not conform to the 'Sendable' protocol
 36 |
 37 |     public static var appAuthorEmailForAPI = ""
    :
 86 |                 let endNetworkingTime = Date()
 87 |                 let totalNetworkingTime: Double = endNetworkingTime.timeIntervalSince(startTime)
 88 |                 self.logMessage("\(totalNetworkingTime) seconds for network retrieval")
    |                 `- warning: capture of 'self' with non-sendable type 'WikipediaNetworking' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 89 |             #endif
 90 |
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:113:17: warning: capture of 'completion' with non-sendable type '(JSONDictionary?, WikipediaError?) -> ()' (aka '(Optional<Dictionary<String, AnyObject>>, Optional<WikipediaError>) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
111 |                     }
112 |                 }
113 |                 completion(nil, wikipediaError)
    |                 |- warning: capture of 'completion' with non-sendable type '(JSONDictionary?, WikipediaError?) -> ()' (aka '(Optional<Dictionary<String, AnyObject>>, Optional<WikipediaError>) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
114 |                 return
115 |             }
[31/31] Compiling WikipediaKit WikipediaNetworkingActivityDelegate.swift
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:37:23: warning: static property 'appAuthorEmailForAPI' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 35 | public class WikipediaNetworking {
 36 |
 37 |     public static var appAuthorEmailForAPI = ""
    |                       |- warning: static property 'appAuthorEmailForAPI' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'appAuthorEmailForAPI' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'appAuthorEmailForAPI' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 38 |
 39 |     public static let shared: WikipediaNetworking = {
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:39:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'WikipediaNetworking' may have shared mutable state; this is an error in the Swift 6 language mode
 33 | #endif
 34 |
 35 | public class WikipediaNetworking {
    |              `- note: class 'WikipediaNetworking' does not conform to the 'Sendable' protocol
 36 |
 37 |     public static var appAuthorEmailForAPI = ""
 38 |
 39 |     public static let shared: WikipediaNetworking = {
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'WikipediaNetworking' 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
 40 |         return WikipediaNetworking()
 41 |     }()
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:43:23: warning: static property 'debugPerformance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 41 |     }()
 42 |
 43 |     public static var debugPerformance = false
    |                       |- warning: static property 'debugPerformance' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'debugPerformance' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'debugPerformance' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 44 |
 45 |     private func logMessage(_ message: String) {
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:53:28: warning: static property 'sharedActivityIndicatorDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 51 |     }
 52 |
 53 |     public static weak var sharedActivityIndicatorDelegate: WikipediaNetworkingActivityDelegate?
    |                            |- warning: static property 'sharedActivityIndicatorDelegate' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                            |- note: convert 'sharedActivityIndicatorDelegate' to a 'let' constant to make 'Sendable' shared state immutable
    |                            |- note: add '@MainActor' to make static property 'sharedActivityIndicatorDelegate' part of global actor 'MainActor'
    |                            `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 54 |
 55 |     let session = URLSession(configuration: URLSessionConfiguration.default)
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:88:17: warning: capture of 'self' with non-sendable type 'WikipediaNetworking' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 33 | #endif
 34 |
 35 | public class WikipediaNetworking {
    |              `- note: class 'WikipediaNetworking' does not conform to the 'Sendable' protocol
 36 |
 37 |     public static var appAuthorEmailForAPI = ""
    :
 86 |                 let endNetworkingTime = Date()
 87 |                 let totalNetworkingTime: Double = endNetworkingTime.timeIntervalSince(startTime)
 88 |                 self.logMessage("\(totalNetworkingTime) seconds for network retrieval")
    |                 `- warning: capture of 'self' with non-sendable type 'WikipediaNetworking' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 89 |             #endif
 90 |
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:113:17: warning: capture of 'completion' with non-sendable type '(JSONDictionary?, WikipediaError?) -> ()' (aka '(Optional<Dictionary<String, AnyObject>>, Optional<WikipediaError>) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
111 |                     }
112 |                 }
113 |                 completion(nil, wikipediaError)
    |                 |- warning: capture of 'completion' with non-sendable type '(JSONDictionary?, WikipediaError?) -> ()' (aka '(Optional<Dictionary<String, AnyObject>>, Optional<WikipediaError>) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
114 |                 return
115 |             }
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 2>&1
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:fe1962677657b2408c217cb5cceb3c09bc1d91486e360cebbc6eee461a5945d8
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
[0/1] Planning build
Building for debugging...
[0/1] Write swift-version-24593BA9C3E375BF.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[2/27] Emitting module WikipediaKit
/host/spi-builder-workspace/Sources/WikipediaLanguage.swift:98:41: warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
 96 |     public static var systemLanguageCode: String = {
 97 |         guard let preferredLanguage = Locale.preferredLanguages.first else { return "en" }
 98 |         let languageComponents = Locale.components(fromIdentifier: preferredLanguage)
    |                                         `- warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
 99 |         let languageCode = languageComponents[NSLocale.Key.languageCode.rawValue]
100 |         return languageCode ?? "en"
/host/spi-builder-workspace/Sources/WikipediaLanguage.swift:129:45: warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
127 |             guard language.hasPrefix("zh") else { continue }
128 |
129 |             let languageComponents = Locale.components(fromIdentifier: language)
    |                                             `- warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
130 |             let languageCode = languageComponents[NSLocale.Key.languageCode.rawValue]
131 |             guard let variant = languageComponents[NSLocale.Key.scriptCode.rawValue]?.lowercased(),
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
[3/30] Compiling WikipediaKit WikipediaRandomArticlesBuffer.swift
[4/30] Compiling WikipediaKit WikipediaSearchMethod.swift
[5/30] Compiling WikipediaKit WikipediaSearchResults.swift
[6/30] Compiling WikipediaKit WikipediaArticleCache.swift
[7/30] Compiling WikipediaKit WikipediaArticleLanguageLink.swift
[8/30] Compiling WikipediaKit WikipediaArticlePreview.swift
[9/30] Compiling WikipediaKit WikipediaError.swift
[10/30] Compiling WikipediaKit WikipediaNamespace.swift
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
[11/30] Compiling WikipediaKit WikipediaNetworking.swift
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
[12/30] Compiling WikipediaKit WikipediaNetworkingActivityDelegate.swift
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:156:53: error: cannot find 'kCFBundleExecutableKey' in scope
154 |         #if !os(Linux)
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
    |                                                     `- error: cannot find 'kCFBundleExecutableKey' in scope
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
/host/spi-builder-workspace/Sources/WikipediaNetworking.swift:157:51: error: cannot find 'kCFBundleIdentifierKey' in scope
155 |             if let infoDictionary = Bundle.main.infoDictionary {
156 |                     let bundleName = infoDictionary[kCFBundleExecutableKey as String] as? String ?? "Unknown App"
157 |                     let bundleID = infoDictionary[kCFBundleIdentifierKey as String] as? String ?? "Unkown Bundle ID"
    |                                                   `- error: cannot find 'kCFBundleIdentifierKey' in scope
158 |                     let marketingVersionString = infoDictionary["CFBundleShortVersionString"] as? String ?? "Unknown Version"
159 |                     userAgent = "\(bundleName)/\(marketingVersionString) (\(bundleID); \(WikipediaNetworking.appAuthorEmailForAPI)) \(framework)"
[13/30] Compiling WikipediaKit Wikipedia+Featured.swift
[14/30] Compiling WikipediaKit Wikipedia+ImageMeta.swift
[15/30] Compiling WikipediaKit Wikipedia+Languages.swift
[16/30] Compiling WikipediaKit Wikipedia+NearbySearch.swift
[17/30] Compiling WikipediaKit String+Wikipedia.swift
[18/30] Compiling WikipediaKit URL+Wikipedia.swift
[19/30] Compiling WikipediaKit Wikipedia+Article.swift
[20/30] Compiling WikipediaKit Wikipedia+ArticleSummary.swift
[21/30] Compiling WikipediaKit WikipediaSearchResultsCache.swift
[22/30] Compiling WikipediaKit WikipediaTOCItem.swift
[23/30] Compiling WikipediaKit WikipediaTextFormattingDelegate.swift
[24/30] Compiling WikipediaKit Wikipedia+RandomArticles.swift
[25/30] Compiling WikipediaKit Wikipedia+Search.swift
[26/30] Compiling WikipediaKit Wikipedia.swift
[27/30] Compiling WikipediaKit WikipediaArticle.swift
[28/30] Compiling WikipediaKit WikipediaFeatured.swift
/host/spi-builder-workspace/Sources/WikipediaLanguage.swift:98:41: warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
 96 |     public static var systemLanguageCode: String = {
 97 |         guard let preferredLanguage = Locale.preferredLanguages.first else { return "en" }
 98 |         let languageComponents = Locale.components(fromIdentifier: preferredLanguage)
    |                                         `- warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
 99 |         let languageCode = languageComponents[NSLocale.Key.languageCode.rawValue]
100 |         return languageCode ?? "en"
/host/spi-builder-workspace/Sources/WikipediaLanguage.swift:129:45: warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
127 |             guard language.hasPrefix("zh") else { continue }
128 |
129 |             let languageComponents = Locale.components(fromIdentifier: language)
    |                                             `- warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
130 |             let languageCode = languageComponents[NSLocale.Key.languageCode.rawValue]
131 |             guard let variant = languageComponents[NSLocale.Key.scriptCode.rawValue]?.lowercased(),
[29/30] Compiling WikipediaKit WikipediaImage.swift
/host/spi-builder-workspace/Sources/WikipediaLanguage.swift:98:41: warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
 96 |     public static var systemLanguageCode: String = {
 97 |         guard let preferredLanguage = Locale.preferredLanguages.first else { return "en" }
 98 |         let languageComponents = Locale.components(fromIdentifier: preferredLanguage)
    |                                         `- warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
 99 |         let languageCode = languageComponents[NSLocale.Key.languageCode.rawValue]
100 |         return languageCode ?? "en"
/host/spi-builder-workspace/Sources/WikipediaLanguage.swift:129:45: warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
127 |             guard language.hasPrefix("zh") else { continue }
128 |
129 |             let languageComponents = Locale.components(fromIdentifier: language)
    |                                             `- warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
130 |             let languageCode = languageComponents[NSLocale.Key.languageCode.rawValue]
131 |             guard let variant = languageComponents[NSLocale.Key.scriptCode.rawValue]?.lowercased(),
[30/30] Compiling WikipediaKit WikipediaLanguage.swift
/host/spi-builder-workspace/Sources/WikipediaLanguage.swift:98:41: warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
 96 |     public static var systemLanguageCode: String = {
 97 |         guard let preferredLanguage = Locale.preferredLanguages.first else { return "en" }
 98 |         let languageComponents = Locale.components(fromIdentifier: preferredLanguage)
    |                                         `- warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
 99 |         let languageCode = languageComponents[NSLocale.Key.languageCode.rawValue]
100 |         return languageCode ?? "en"
/host/spi-builder-workspace/Sources/WikipediaLanguage.swift:129:45: warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
127 |             guard language.hasPrefix("zh") else { continue }
128 |
129 |             let languageComponents = Locale.components(fromIdentifier: language)
    |                                             `- warning: 'components(fromIdentifier:)' is deprecated: Use `Locale.Components(identifier:)` to access components
130 |             let languageCode = languageComponents[NSLocale.Key.languageCode.rawValue]
131 |             guard let variant = languageComponents[NSLocale.Key.scriptCode.rawValue]?.lowercased(),
BUILD FAILURE 6.1 android