The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of Noora, reference main (e3d8e7), with Swift 6.1 for macOS (SPM) on 5 May 2025 12:32:57 UTC.

Swift 6 data race errors: 1

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 4.61.3
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/tuist/noora.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/tuist/noora
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at e3d8e7b chore(deps): lock file maintenance (#277)
Cloned https://github.com/tuist/noora.git
Revision (git rev-parse @):
e3d8e7b4bc0fa8f62f4976785d1a5675352086a2
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/tuist/noora.git at main
Fetching https://github.com/tuist/path
Fetching https://github.com/onevcat/Rainbow
Fetching https://github.com/apple/swift-log from cache
Fetching https://github.com/apple/swift-argument-parser from cache
[1/1196] Fetching rainbow
[217/1544] Fetching rainbow, path
Fetched https://github.com/apple/swift-log from cache (0.74s)
Fetched https://github.com/apple/swift-argument-parser from cache (0.74s)
Fetched https://github.com/tuist/path from cache (0.75s)
[838/1196] Fetching rainbow
Fetched https://github.com/onevcat/Rainbow from cache (0.82s)
Computing version for https://github.com/tuist/path
Computed https://github.com/tuist/path at 0.3.8 (1.78s)
Computing version for https://github.com/apple/swift-log
Computed https://github.com/apple/swift-log at 1.6.3 (0.50s)
Computing version for https://github.com/apple/swift-argument-parser
Computed https://github.com/apple/swift-argument-parser at 1.5.0 (0.53s)
Computing version for https://github.com/onevcat/Rainbow
Computed https://github.com/onevcat/Rainbow at 4.1.0 (0.65s)
Creating working copy for https://github.com/apple/swift-argument-parser
Working copy of https://github.com/apple/swift-argument-parser resolved at 1.5.0
Creating working copy for https://github.com/apple/swift-log
Working copy of https://github.com/apple/swift-log resolved at 1.6.3
Creating working copy for https://github.com/tuist/path
Working copy of https://github.com/tuist/path resolved at 0.3.8
Creating working copy for https://github.com/onevcat/Rainbow
Working copy of https://github.com/onevcat/Rainbow resolved at 4.1.0
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "noora",
      "name": "Noora",
      "url": "https://github.com/tuist/noora.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/noora",
      "dependencies": [
        {
          "identity": "rainbow",
          "name": "Rainbow",
          "url": "https://github.com/onevcat/Rainbow",
          "version": "4.1.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Rainbow",
          "dependencies": [
          ]
        },
        {
          "identity": "swift-argument-parser",
          "name": "swift-argument-parser",
          "url": "https://github.com/apple/swift-argument-parser",
          "version": "1.5.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-argument-parser",
          "dependencies": [
          ]
        },
        {
          "identity": "swift-log",
          "name": "swift-log",
          "url": "https://github.com/apple/swift-log",
          "version": "1.6.3",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-log",
          "dependencies": [
          ]
        },
        {
          "identity": "path",
          "name": "Path",
          "url": "https://github.com/tuist/path",
          "version": "0.3.8",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/path",
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/tuist/noora.git
[1/4407] Fetching noora
Fetched https://github.com/tuist/noora.git from cache (2.89s)
Fetching https://github.com/onevcat/Rainbow from cache
Fetching https://github.com/apple/swift-argument-parser from cache
Fetching https://github.com/tuist/path from cache
Fetching https://github.com/apple/swift-log from cache
Fetched https://github.com/onevcat/Rainbow from cache (0.58s)
Fetched https://github.com/tuist/path from cache (0.58s)
Fetched https://github.com/apple/swift-log from cache (0.58s)
Fetched https://github.com/apple/swift-argument-parser from cache (0.58s)
Computing version for https://github.com/tuist/path
Computed https://github.com/tuist/path at 0.3.8 (0.64s)
Computing version for https://github.com/apple/swift-log
Computed https://github.com/apple/swift-log at 1.6.3 (0.03s)
Computing version for https://github.com/apple/swift-argument-parser
Computed https://github.com/apple/swift-argument-parser at 1.5.0 (0.05s)
Computing version for https://github.com/onevcat/Rainbow
Computed https://github.com/onevcat/Rainbow at 4.1.0 (0.03s)
Creating working copy for https://github.com/apple/swift-log
Working copy of https://github.com/apple/swift-log resolved at 1.6.3
Creating working copy for https://github.com/apple/swift-argument-parser
Working copy of https://github.com/apple/swift-argument-parser resolved at 1.5.0
Creating working copy for https://github.com/tuist/path
Working copy of https://github.com/tuist/path resolved at 0.3.8
Creating working copy for https://github.com/tuist/noora.git
Working copy of https://github.com/tuist/noora.git resolved at main (e3d8e7b)
Creating working copy for https://github.com/onevcat/Rainbow
Working copy of https://github.com/onevcat/Rainbow resolved at 4.1.0
Found 4 product dependencies
  - Rainbow
  - swift-argument-parser
  - swift-log
  - Path
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/tuist/noora.git
https://github.com/tuist/noora.git
{
  "dependencies" : [
    {
      "identity" : "rainbow",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "4.1.0",
            "upper_bound" : "5.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/onevcat/Rainbow"
    },
    {
      "identity" : "swift-argument-parser",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-argument-parser"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.6.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log"
    },
    {
      "identity" : "path",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.3.8",
            "upper_bound" : "0.4.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/tuist/path"
    }
  ],
  "manifest_display_name" : "Noora",
  "name" : "Noora",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "Noora",
      "targets" : [
        "Noora"
      ],
      "type" : {
        "library" : [
          "static"
        ]
      }
    },
    {
      "name" : "examples-cli",
      "targets" : [
        "examples-cli"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "examples_cli",
      "module_type" : "SwiftTarget",
      "name" : "examples-cli",
      "path" : "Sources/examples-cli",
      "product_dependencies" : [
        "ArgumentParser"
      ],
      "product_memberships" : [
        "examples-cli"
      ],
      "sources" : [
        "Commands/AlertCommand.swift",
        "Commands/CollapsibleStepCommand.swift",
        "Commands/FormatCommand.swift",
        "Commands/ProgressBarStepCommand.swift",
        "Commands/ProgressStepCommand.swift",
        "Commands/SingleChoicePromptCommand.swift",
        "Commands/TextPromptCommand.swift",
        "Commands/YesOrNoChoicePromptCommand.swift",
        "ExamplesCLI.swift"
      ],
      "target_dependencies" : [
        "Noora"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "NooraTests",
      "module_type" : "SwiftTarget",
      "name" : "NooraTests",
      "path" : "Tests/NooraTests",
      "sources" : [
        "Components/CollapsibleStepTests.swift",
        "Components/CompletionTests.swift",
        "Components/ProgressBarStepTests.swift",
        "Components/ProgressStepTests.swift",
        "Components/SingleChoicePromptTests.swift",
        "Components/TextPromptTests.swift",
        "Components/YesOrNoChoicePromptTests.swift",
        "Mocks/MockKeyStrokeListener.swift",
        "Mocks/MockRenderer.swift",
        "Mocks/MockSpinner.swift",
        "Mocks/MockStandardPipeline.swift",
        "Mocks/MockTerminal.swift",
        "Mocks/MockValidator.swift",
        "NooraTheme+Test.swift",
        "Utilities/NooraMockTests.swift",
        "Utilities/TerminalTextTests.swift",
        "Validator/LengthValidationRuleTests.swift",
        "Validator/NonEmptyValidationRuleTests.swift",
        "Validator/RegexValidationRuleTests.swift",
        "Validator/ValidatorTests.swift"
      ],
      "target_dependencies" : [
        "Noora"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Noora",
      "module_type" : "SwiftTarget",
      "name" : "Noora",
      "path" : "Sources/Noora",
      "product_dependencies" : [
        "Rainbow",
        "Logging",
        "Path"
      ],
      "product_memberships" : [
        "Noora",
        "examples-cli"
      ],
      "sources" : [
        "Components/Alert.swift",
        "Components/CollapsibleStep.swift",
        "Components/ProgressBarStep.swift",
        "Components/ProgressStep.swift",
        "Components/SingleChoicePrompt.swift",
        "Components/TextPrompt.swift",
        "Components/YesOrNoChoicePrompt.swift",
        "DataStructures/Stack.swift",
        "Extensions/Character+isPrintable.swift",
        "Extensions/String+Rainbow.swift",
        "Extensions/String+ValidatableError.swift",
        "Noora.swift",
        "NooraMock.swift",
        "Theme.swift",
        "Utilities/KeyStrokeListener.swift",
        "Utilities/Renderer.swift",
        "Utilities/Spinner.swift",
        "Utilities/StandardPipelines.swift",
        "Utilities/Terminal.swift",
        "Utilities/TerminalText.swift",
        "Validator/Core/ValidatableError.swift",
        "Validator/Core/ValidatableRule.swift",
        "Validator/Core/ValidationError.swift",
        "Validator/InputValidating.swift",
        "Validator/Rules/LengthValidationRule.swift",
        "Validator/Rules/NonEmptyValidationRule.swift",
        "Validator/Rules/RegexValidationRule.swift",
        "Validator/Validator.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.8.1"
}
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
[1/1] Compiling plugin GenerateManual
Building for debugging...
[1/15] Write sources
[7/15] Write examples-cli-entitlement.plist
[7/15] Write sources
[9/15] Write swift-version-2F0A5646E1D333AE.txt
[11/35] Compiling ArgumentParserToolInfo ToolInfo.swift
[12/35] Emitting module ArgumentParserToolInfo
[13/35] Emitting module Path
[14/35] Compiling Path Path.swift
[15/74] Compiling Logging MetadataProvider.swift
[16/74] Compiling Logging Locks.swift
[17/74] Emitting module Logging
[18/74] Compiling Logging LogHandler.swift
[19/74] Compiling Logging Logging.swift
[20/74] Compiling Rainbow String+Rainbow.swift
[21/74] Compiling Rainbow StringGenerator.swift
[22/75] Compiling Rainbow Style.swift
[23/75] Compiling ArgumentParser BashCompletionsGenerator.swift
[24/75] Compiling ArgumentParser CompletionsGenerator.swift
[25/75] Compiling ArgumentParser FishCompletionsGenerator.swift
[26/75] Compiling ArgumentParser ZshCompletionsGenerator.swift
[27/75] Compiling ArgumentParser Argument.swift
[28/79] Compiling ArgumentParser InputOrigin.swift
[29/79] Compiling ArgumentParser Name.swift
[30/79] Compiling ArgumentParser Parsed.swift
[31/79] Compiling ArgumentParser ParsedValues.swift
[32/79] Emitting module ArgumentParser
[33/79] Compiling ArgumentParser ArgumentHelp.swift
[34/79] Compiling ArgumentParser ArgumentVisibility.swift
[35/79] Compiling ArgumentParser CompletionKind.swift
[36/79] Compiling ArgumentParser Errors.swift
[37/79] Compiling ArgumentParser Flag.swift
[38/79] Compiling ArgumentParser ParsableArguments.swift
[39/79] Compiling ArgumentParser ParsableArgumentsValidation.swift
[40/79] Compiling ArgumentParser ParsableCommand.swift
[41/79] Compiling ArgumentParser ArgumentDecoder.swift
[42/79] Compiling ArgumentParser Platform.swift
[43/79] Compiling ArgumentParser SequenceExtensions.swift
[44/79] Compiling ArgumentParser StringExtensions.swift
[45/79] Compiling ArgumentParser Tree.swift
[46/79] Compiling ArgumentParser ArgumentDefinition.swift
[47/79] Compiling ArgumentParser ArgumentSet.swift
[48/79] Compiling ArgumentParser CommandParser.swift
[49/79] Compiling ArgumentParser InputKey.swift
[50/79] Compiling ArgumentParser NameSpecification.swift
[51/79] Compiling ArgumentParser Option.swift
[52/79] Compiling ArgumentParser OptionGroup.swift
[53/79] Compiling ArgumentParser AsyncParsableCommand.swift
[54/79] Emitting module Rainbow
[55/79] Compiling Rainbow OutputTarget.swift
[56/79] Compiling Rainbow Color.swift
[57/79] Compiling Rainbow ModesExtractor.swift
[58/79] Compiling Rainbow ControlCode.swift
[59/79] Compiling Rainbow Rainbow.swift
[60/79] Compiling Rainbow ColorApproximation.swift
[63/79] Compiling ArgumentParser ParserError.swift
[64/79] Compiling ArgumentParser SplitArguments.swift
[65/79] Compiling ArgumentParser DumpHelpGenerator.swift
[66/79] Compiling ArgumentParser HelpCommand.swift
[67/79] Compiling ArgumentParser CommandConfiguration.swift
[68/79] Compiling ArgumentParser CommandGroup.swift
[69/79] Compiling ArgumentParser EnumerableFlag.swift
[70/79] Compiling ArgumentParser ExpressibleByArgument.swift
[71/79] Compiling ArgumentParser HelpGenerator.swift
[72/79] Compiling ArgumentParser MessageInfo.swift
[73/79] Compiling ArgumentParser UsageGenerator.swift
[74/79] Compiling ArgumentParser CollectionExtensions.swift
[75/106] Emitting module Noora
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Theme.swift:7:23: warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 5 | public struct Theme {
 6 |     /// Noora's default theme.
 7 |     public static var `default` = Theme(
   |                       |- warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'default' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 8 |         primary: "A378F2",
 9 |         secondary: "FF4081",
[76/108] Compiling Noora ValidatableRule.swift
[77/108] Compiling Noora ValidationError.swift
[78/108] Compiling Noora InputValidating.swift
[79/108] Compiling Noora RegexValidationRule.swift
[80/108] Compiling Noora Validator.swift
[81/108] Compiling Noora String+Rainbow.swift
[82/108] Compiling Noora String+ValidatableError.swift
[83/108] Compiling Noora Noora.swift
[84/108] Compiling Noora NooraMock.swift
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Theme.swift:7:23: warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 5 | public struct Theme {
 6 |     /// Noora's default theme.
 7 |     public static var `default` = Theme(
   |                       |- warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'default' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 8 |         primary: "A378F2",
 9 |         secondary: "FF4081",
[85/108] Compiling Noora Theme.swift
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Theme.swift:7:23: warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 5 | public struct Theme {
 6 |     /// Noora's default theme.
 7 |     public static var `default` = Theme(
   |                       |- warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'default' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 8 |         primary: "A378F2",
 9 |         secondary: "FF4081",
[86/108] Compiling Noora KeyStrokeListener.swift
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Theme.swift:7:23: warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 5 | public struct Theme {
 6 |     /// Noora's default theme.
 7 |     public static var `default` = Theme(
   |                       |- warning: static property 'default' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                       |- note: convert 'default' to a 'let' constant to make 'Sendable' shared state immutable
   |                       |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
   |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 8 |         primary: "A378F2",
 9 |         secondary: "FF4081",
[87/108] Compiling Noora Terminal.swift
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/TerminalText.swift:43:17: warning: immutable value 'href' was never used; consider replacing with '_' or removing it
 41 |             case let .link(
 42 |                 title,
 43 |                 href
    |                 `- warning: immutable value 'href' was never used; consider replacing with '_' or removing it
 44 |             ): "(\(title))"
 45 |             case let .primary(primary): primary
[88/108] Compiling Noora TerminalText.swift
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/TerminalText.swift:43:17: warning: immutable value 'href' was never used; consider replacing with '_' or removing it
 41 |             case let .link(
 42 |                 title,
 43 |                 href
    |                 `- warning: immutable value 'href' was never used; consider replacing with '_' or removing it
 44 |             ): "(\(title))"
 45 |             case let .primary(primary): primary
[89/108] Compiling Noora ValidatableError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/TerminalText.swift:43:17: warning: immutable value 'href' was never used; consider replacing with '_' or removing it
 41 |             case let .link(
 42 |                 title,
 43 |                 href
    |                 `- warning: immutable value 'href' was never used; consider replacing with '_' or removing it
 44 |             ): "(\(title))"
 45 |             case let .primary(primary): primary
[90/108] Compiling Noora LengthValidationRule.swift
[91/108] Compiling Noora NonEmptyValidationRule.swift
[92/108] Compiling Noora Renderer.swift
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:32:13: warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
 6 | }
 7 |
 8 | class Spinner: Spinning {
   |       `- note: class 'Spinner' does not conform to the 'Sendable' protocol
 9 |     private static let frames = [
10 |         "⠋",
   :
30 |
31 |             // Schedule the timer in the current run loop
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
   |             `- warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:34:21: warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
   |                     |- warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
35 |                     index = (index + 1) % Spinner.frames.count
36 |                 } else {
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:33:20: warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
 6 | }
 7 |
 8 | class Spinner: Spinning {
   |       `- note: class 'Spinner' does not conform to the 'Sendable' protocol
 9 |     private static let frames = [
10 |         "⠋",
   :
31 |             // Schedule the timer in the current run loop
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
   |                    `- warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
34 |                     block(Spinner.frames[index])
35 |                     index = (index + 1) % Spinner.frames.count
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:34:21: warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
   |                     |- warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
35 |                     index = (index + 1) % Spinner.frames.count
36 |                 } else {
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:34:42: warning: reference to captured var 'index' in concurrently-executing code
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
   |                                          `- warning: reference to captured var 'index' in concurrently-executing code
35 |                     index = (index + 1) % Spinner.frames.count
36 |                 } else {
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:35:21: warning: mutation of captured var 'index' in concurrently-executing code
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
35 |                     index = (index + 1) % Spinner.frames.count
   |                     `- warning: mutation of captured var 'index' in concurrently-executing code
36 |                 } else {
37 |                     self.timer?.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:35:30: warning: reference to captured var 'index' in concurrently-executing code
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
35 |                     index = (index + 1) % Spinner.frames.count
   |                              `- warning: reference to captured var 'index' in concurrently-executing code
36 |                 } else {
37 |                     self.timer?.invalidate()
[93/108] Compiling Noora Spinner.swift
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:32:13: warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
 6 | }
 7 |
 8 | class Spinner: Spinning {
   |       `- note: class 'Spinner' does not conform to the 'Sendable' protocol
 9 |     private static let frames = [
10 |         "⠋",
   :
30 |
31 |             // Schedule the timer in the current run loop
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
   |             `- warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:34:21: warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
   |                     |- warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
35 |                     index = (index + 1) % Spinner.frames.count
36 |                 } else {
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:33:20: warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
 6 | }
 7 |
 8 | class Spinner: Spinning {
   |       `- note: class 'Spinner' does not conform to the 'Sendable' protocol
 9 |     private static let frames = [
10 |         "⠋",
   :
31 |             // Schedule the timer in the current run loop
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
   |                    `- warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
34 |                     block(Spinner.frames[index])
35 |                     index = (index + 1) % Spinner.frames.count
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:34:21: warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
   |                     |- warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
35 |                     index = (index + 1) % Spinner.frames.count
36 |                 } else {
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:34:42: warning: reference to captured var 'index' in concurrently-executing code
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
   |                                          `- warning: reference to captured var 'index' in concurrently-executing code
35 |                     index = (index + 1) % Spinner.frames.count
36 |                 } else {
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:35:21: warning: mutation of captured var 'index' in concurrently-executing code
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
35 |                     index = (index + 1) % Spinner.frames.count
   |                     `- warning: mutation of captured var 'index' in concurrently-executing code
36 |                 } else {
37 |                     self.timer?.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:35:30: warning: reference to captured var 'index' in concurrently-executing code
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
35 |                     index = (index + 1) % Spinner.frames.count
   |                              `- warning: reference to captured var 'index' in concurrently-executing code
36 |                 } else {
37 |                     self.timer?.invalidate()
[94/108] Compiling Noora StandardPipelines.swift
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:32:13: warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
 6 | }
 7 |
 8 | class Spinner: Spinning {
   |       `- note: class 'Spinner' does not conform to the 'Sendable' protocol
 9 |     private static let frames = [
10 |         "⠋",
   :
30 |
31 |             // Schedule the timer in the current run loop
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
   |             `- warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:34:21: warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
   |                     |- warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
35 |                     index = (index + 1) % Spinner.frames.count
36 |                 } else {
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:33:20: warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
 6 | }
 7 |
 8 | class Spinner: Spinning {
   |       `- note: class 'Spinner' does not conform to the 'Sendable' protocol
 9 |     private static let frames = [
10 |         "⠋",
   :
31 |             // Schedule the timer in the current run loop
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
   |                    `- warning: capture of 'self' with non-sendable type 'Spinner' in a '@Sendable' closure
34 |                     block(Spinner.frames[index])
35 |                     index = (index + 1) % Spinner.frames.count
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:34:21: warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
   |                     |- warning: capture of 'block' with non-sendable type '(String) -> Void' in a '@Sendable' closure
   |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
35 |                     index = (index + 1) % Spinner.frames.count
36 |                 } else {
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:34:42: warning: reference to captured var 'index' in concurrently-executing code
32 |             self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
   |                                          `- warning: reference to captured var 'index' in concurrently-executing code
35 |                     index = (index + 1) % Spinner.frames.count
36 |                 } else {
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:35:21: warning: mutation of captured var 'index' in concurrently-executing code
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
35 |                     index = (index + 1) % Spinner.frames.count
   |                     `- warning: mutation of captured var 'index' in concurrently-executing code
36 |                 } else {
37 |                     self.timer?.invalidate()
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Utilities/Spinner.swift:35:30: warning: reference to captured var 'index' in concurrently-executing code
33 |                 if self.isSpinning {
34 |                     block(Spinner.frames[index])
35 |                     index = (index + 1) % Spinner.frames.count
   |                              `- warning: reference to captured var 'index' in concurrently-executing code
36 |                 } else {
37 |                     self.timer?.invalidate()
[95/108] Compiling Noora YesOrNoChoicePrompt.swift
[96/108] Compiling Noora Stack.swift
[97/108] Compiling Noora Character+isPrintable.swift
[98/108] Compiling Noora ProgressStep.swift
[99/108] Compiling Noora SingleChoicePrompt.swift
[100/108] Compiling Noora TextPrompt.swift
[101/108] Compiling Noora Alert.swift
[102/108] Compiling Noora CollapsibleStep.swift
[103/108] Compiling Noora ProgressBarStep.swift
[103/108] Write Objects.LinkFileList
/Applications/Xcode-16.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: warning duplicate member name 'String+Rainbow.swift.o' from '/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Noora.build/String+Rainbow.swift.o(String+Rainbow.swift.o)' and '/Users/admin/builder/spi-builder-workspace/.build/arm64-apple-macosx/debug/Rainbow.build/String+Rainbow.swift.o(String+Rainbow.swift.o)'
[104/108] Archiving libNoora.a
[106/118] Compiling examples_cli ExamplesCLI.swift
[107/118] Compiling examples_cli YesOrNoChoicePromptCommand.swift
/Users/admin/builder/spi-builder-workspace/Sources/examples-cli/Commands/YesOrNoChoicePromptCommand.swift:12:41: warning: reference to static property 'default' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
10 |
11 |     func run() async throws {
12 |         let answer = Noora(theme: Theme.default).yesOrNoChoicePrompt(
   |                                         `- warning: reference to static property 'default' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
13 |             title: "Authentication",
14 |             question: "Would you like to authenticate with Tuist?",
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Theme.swift:7:23: note: static property declared here
 5 | public struct Theme {
 6 |     /// Noora's default theme.
 7 |     public static var `default` = Theme(
   |                       `- note: static property declared here
 8 |         primary: "A378F2",
 9 |         secondary: "FF4081",
[108/118] Compiling examples_cli TextPromptCommand.swift
[109/118] Compiling examples_cli ProgressBarStepCommand.swift
[110/118] Compiling examples_cli ProgressStepCommand.swift
[111/118] Compiling examples_cli FormatCommand.swift
[112/118] Compiling examples_cli SingleChoicePromptCommand.swift
/Users/admin/builder/spi-builder-workspace/Sources/examples-cli/Commands/SingleChoicePromptCommand.swift:31:59: warning: reference to static property 'default' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
29 |
30 |     func run() async throws {
31 |         let selection: ProjectOption = Noora(theme: Theme.default).singleChoicePrompt(
   |                                                           `- warning: reference to static property 'default' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
32 |             title: "Project",
33 |             question: "Would you like to create a new Tuist project or use an existing Xcode project?",
/Users/admin/builder/spi-builder-workspace/Sources/Noora/Theme.swift:7:23: note: static property declared here
 5 | public struct Theme {
 6 |     /// Noora's default theme.
 7 |     public static var `default` = Theme(
   |                       `- note: static property declared here
 8 |         primary: "A378F2",
 9 |         secondary: "FF4081",
[113/118] Compiling examples_cli AlertCommand.swift
[114/118] Compiling examples_cli CollapsibleStepCommand.swift
[115/118] Emitting module examples_cli
[115/118] Write Objects.LinkFileList
[116/118] Linking examples-cli
[117/118] Applying examples-cli
Build complete! (11.21s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "rainbow",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "4.1.0",
            "upper_bound" : "5.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/onevcat/Rainbow"
    },
    {
      "identity" : "swift-argument-parser",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-argument-parser"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.6.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log"
    },
    {
      "identity" : "path",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.3.8",
            "upper_bound" : "0.4.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/tuist/path"
    }
  ],
  "manifest_display_name" : "Noora",
  "name" : "Noora",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "Noora",
      "targets" : [
        "Noora"
      ],
      "type" : {
        "library" : [
          "static"
        ]
      }
    },
    {
      "name" : "examples-cli",
      "targets" : [
        "examples-cli"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "examples_cli",
      "module_type" : "SwiftTarget",
      "name" : "examples-cli",
      "path" : "Sources/examples-cli",
      "product_dependencies" : [
        "ArgumentParser"
      ],
      "product_memberships" : [
        "examples-cli"
      ],
      "sources" : [
        "Commands/AlertCommand.swift",
        "Commands/CollapsibleStepCommand.swift",
        "Commands/FormatCommand.swift",
        "Commands/ProgressBarStepCommand.swift",
        "Commands/ProgressStepCommand.swift",
        "Commands/SingleChoicePromptCommand.swift",
        "Commands/TextPromptCommand.swift",
        "Commands/YesOrNoChoicePromptCommand.swift",
        "ExamplesCLI.swift"
      ],
      "target_dependencies" : [
        "Noora"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "NooraTests",
      "module_type" : "SwiftTarget",
      "name" : "NooraTests",
      "path" : "Tests/NooraTests",
      "sources" : [
        "Components/CollapsibleStepTests.swift",
        "Components/CompletionTests.swift",
        "Components/ProgressBarStepTests.swift",
        "Components/ProgressStepTests.swift",
        "Components/SingleChoicePromptTests.swift",
        "Components/TextPromptTests.swift",
        "Components/YesOrNoChoicePromptTests.swift",
        "Mocks/MockKeyStrokeListener.swift",
        "Mocks/MockRenderer.swift",
        "Mocks/MockSpinner.swift",
        "Mocks/MockStandardPipeline.swift",
        "Mocks/MockTerminal.swift",
        "Mocks/MockValidator.swift",
        "NooraTheme+Test.swift",
        "Utilities/NooraMockTests.swift",
        "Utilities/TerminalTextTests.swift",
        "Validator/LengthValidationRuleTests.swift",
        "Validator/NonEmptyValidationRuleTests.swift",
        "Validator/RegexValidationRuleTests.swift",
        "Validator/ValidatorTests.swift"
      ],
      "target_dependencies" : [
        "Noora"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Noora",
      "module_type" : "SwiftTarget",
      "name" : "Noora",
      "path" : "Sources/Noora",
      "product_dependencies" : [
        "Rainbow",
        "Logging",
        "Path"
      ],
      "product_memberships" : [
        "Noora",
        "examples-cli"
      ],
      "sources" : [
        "Components/Alert.swift",
        "Components/CollapsibleStep.swift",
        "Components/ProgressBarStep.swift",
        "Components/ProgressStep.swift",
        "Components/SingleChoicePrompt.swift",
        "Components/TextPrompt.swift",
        "Components/YesOrNoChoicePrompt.swift",
        "DataStructures/Stack.swift",
        "Extensions/Character+isPrintable.swift",
        "Extensions/String+Rainbow.swift",
        "Extensions/String+ValidatableError.swift",
        "Noora.swift",
        "NooraMock.swift",
        "Theme.swift",
        "Utilities/KeyStrokeListener.swift",
        "Utilities/Renderer.swift",
        "Utilities/Spinner.swift",
        "Utilities/StandardPipelines.swift",
        "Utilities/Terminal.swift",
        "Utilities/TerminalText.swift",
        "Validator/Core/ValidatableError.swift",
        "Validator/Core/ValidatableRule.swift",
        "Validator/Core/ValidationError.swift",
        "Validator/InputValidating.swift",
        "Validator/Rules/LengthValidationRule.swift",
        "Validator/Rules/NonEmptyValidationRule.swift",
        "Validator/Rules/RegexValidationRule.swift",
        "Validator/Validator.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.8.1"
}
Done.