The Swift Package Index logo.Swift Package Index

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