The Swift Package Index logo.Swift Package Index

Build Information

Successful build of GhostStrings, reference main (6f1dcf), with Swift 6.1 for macOS (SPM) on 6 Sep 2026 23:45:27 UTC.

Swift 6 data race errors: 2

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: 5.0.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/shahwaiz90/ghoststrings-ios.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/shahwaiz90/ghoststrings-ios
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 6f1dcff feat(ios): add platform and track query params to OTA requests and bump to 1.4.5
Cloned https://github.com/shahwaiz90/ghoststrings-ios.git
Revision (git rev-parse @):
6f1dcff89f677ebae5676913773aa038091792ab
SUCCESS checkout https://github.com/shahwaiz90/ghoststrings-ios.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/shahwaiz90/ghoststrings-ios.git
https://github.com/shahwaiz90/ghoststrings-ios.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "GhostStrings",
  "name" : "GhostStrings",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "14.0"
    },
    {
      "name" : "macos",
      "version" : "11.0"
    }
  ],
  "products" : [
    {
      "name" : "GhostStrings",
      "targets" : [
        "GhostStrings"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "GhostStringsTests",
      "module_type" : "SwiftTarget",
      "name" : "GhostStringsTests",
      "path" : "Tests/GhostStringsTests",
      "sources" : [
        "GhostStringsTests.swift"
      ],
      "target_dependencies" : [
        "GhostStrings"
      ],
      "type" : "test"
    },
    {
      "c99name" : "GhostStrings",
      "module_type" : "SwiftTarget",
      "name" : "GhostStrings",
      "path" : "Sources/GhostStrings",
      "product_memberships" : [
        "GhostStrings"
      ],
      "sources" : [
        "Bundle+Swizzle.swift",
        "GhostLanguage.swift",
        "GhostStrings.swift",
        "GhostStringsApi.swift",
        "GhostStringsConfig.swift",
        "GhostStringsRepository.swift",
        "UI/GhostStringsUI.swift",
        "UI/GhostText.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/11] Compiling GhostStrings GhostStringsRepository.swift
[4/11] Compiling GhostStrings GhostText.swift
[5/11] Compiling GhostStrings GhostStringsUI.swift
[6/11] Compiling GhostStrings GhostStringsConfig.swift
[7/11] Compiling GhostStrings GhostLanguage.swift
[8/11] Compiling GhostStrings GhostStringsApi.swift
[9/11] Compiling GhostStrings Bundle+Swizzle.swift
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/Bundle+Swizzle.swift:4:16: warning: static property 'isSwizzled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 2 |
 3 | extension Bundle {
 4 |     static var isSwizzled = false
   |                |- warning: static property 'isSwizzled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'isSwizzled' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: add '@MainActor' to make static property 'isSwizzled' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 5 |
 6 |     static func swizzleLocalization() {
[10/11] Compiling GhostStrings GhostStrings.swift
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/GhostStrings.swift:13:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'GhostStrings' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | /// The main entry point for the GhostStrings iOS SDK.
 10 | /// This class handles initialization, cloud synchronization, and string management.
 11 | public class GhostStrings: ObservableObject {
    |              `- note: class 'GhostStrings' does not conform to the 'Sendable' protocol
 12 |     /// The shared singleton instance.
 13 |     public static let shared = GhostStrings()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'GhostStrings' 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
 14 |
 15 |     /// The current set of strings fetched from the cloud.
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/GhostStrings.swift:70:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 68 |
 69 |         Task { @MainActor in
 70 |             self.strings = newStrings
    |             |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |             `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 71 |             NotificationCenter.default.post(name: .GhostStringsDidUpdate, object: nil)
 72 |         }
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/GhostStrings.swift:59:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 57 |
 58 |         // Sync once on startup (will return 304 if content is unchanged)
 59 |         Task { await sync() }
    |              |       `- note: closure captures 'self' which is accessible to code in the current task
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 60 |
 61 |         trackEvent("ghost_app_identified")
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/GhostStrings.swift:112:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
110 |         // Force notify SwiftUI observers on the Main thread
111 |         Task { @MainActor in
112 |             self.objectWillChange.send()
    |             |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |             `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
113 |             onComplete?(true)
114 |         }
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/GhostStrings.swift:113:13: warning: sending 'onComplete' risks causing data races; this is an error in the Swift 6 language mode
111 |         Task { @MainActor in
112 |             self.objectWillChange.send()
113 |             onComplete?(true)
    |             |- warning: sending 'onComplete' risks causing data races; this is an error in the Swift 6 language mode
    |             `- note: task-isolated 'onComplete' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
114 |         }
115 |     }
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/GhostStrings.swift:146:18: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
144 |         } else {
145 |             // Background update (stale-while-revalidate)
146 |             Task {
    |                  `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
147 |                 do {
148 |                     let result = try await api.fetchLanguages(ifModifiedSince: repository.getLanguagesLastModified())
    |                                                                                `- note: closure captures 'self' which is accessible to code in the current task
149 |                     if result.isModified, let fetchedLangs = result.languages {
150 |                         repository.saveLanguages(fetchedLangs, lastModified: result.lastModified)
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/GhostStrings.swift:163:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
161 |     /// Callback-friendly version of getSupportedLanguages for Objective-C / Swift non-async callers.
162 |     public func getSupportedLanguages(force: Bool = false, onComplete: @escaping ([GhostLanguage]) -> Void) {
163 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
164 |             let langs = await getSupportedLanguages(force: force)
    |                               `- note: closure captures 'self' which is accessible to code in the current task
165 |             onComplete(langs)
166 |         }
[11/11] Emitting module GhostStrings
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/Bundle+Swizzle.swift:4:16: warning: static property 'isSwizzled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 2 |
 3 | extension Bundle {
 4 |     static var isSwizzled = false
   |                |- warning: static property 'isSwizzled' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'isSwizzled' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: add '@MainActor' to make static property 'isSwizzled' part of global actor 'MainActor'
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 5 |
 6 |     static func swizzleLocalization() {
/Users/admin/builder/spi-builder-workspace/Sources/GhostStrings/GhostStrings.swift:13:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'GhostStrings' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | /// The main entry point for the GhostStrings iOS SDK.
 10 | /// This class handles initialization, cloud synchronization, and string management.
 11 | public class GhostStrings: ObservableObject {
    |              `- note: class 'GhostStrings' does not conform to the 'Sendable' protocol
 12 |     /// The shared singleton instance.
 13 |     public static let shared = GhostStrings()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'GhostStrings' 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
 14 |
 15 |     /// The current set of strings fetched from the cloud.
Build complete! (9.07s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "GhostStrings",
  "name" : "GhostStrings",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "14.0"
    },
    {
      "name" : "macos",
      "version" : "11.0"
    }
  ],
  "products" : [
    {
      "name" : "GhostStrings",
      "targets" : [
        "GhostStrings"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "GhostStringsTests",
      "module_type" : "SwiftTarget",
      "name" : "GhostStringsTests",
      "path" : "Tests/GhostStringsTests",
      "sources" : [
        "GhostStringsTests.swift"
      ],
      "target_dependencies" : [
        "GhostStrings"
      ],
      "type" : "test"
    },
    {
      "c99name" : "GhostStrings",
      "module_type" : "SwiftTarget",
      "name" : "GhostStrings",
      "path" : "Sources/GhostStrings",
      "product_memberships" : [
        "GhostStrings"
      ],
      "sources" : [
        "Bundle+Swizzle.swift",
        "GhostLanguage.swift",
        "GhostStrings.swift",
        "GhostStringsApi.swift",
        "GhostStringsConfig.swift",
        "GhostStringsRepository.swift",
        "UI/GhostStringsUI.swift",
        "UI/GhostText.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.