Build Information
Successful build of Units, reference main (eefd86
), with Swift 6.1 for macOS (SPM) on 4 Jun 2025 06:06:34 UTC.
Swift 6 data race errors: 4
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.63.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/NeedleInAJayStack/Units.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/NeedleInAJayStack/Units
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at eefd864 Merge pull request #18 from NeedleInAJayStack/ci/fix-publish-name
Cloned https://github.com/NeedleInAJayStack/Units.git
Revision (git rev-parse @):
eefd864e85a8dd181df83756a5aba2ca0cda7831
SUCCESS checkout https://github.com/NeedleInAJayStack/Units.git at main
Fetching https://github.com/apple/swift-argument-parser from cache
Fetched https://github.com/apple/swift-argument-parser from cache (1.07s)
Computing version for https://github.com/apple/swift-argument-parser
Computed https://github.com/apple/swift-argument-parser at 1.2.1 (1.75s)
Creating working copy for https://github.com/apple/swift-argument-parser
Working copy of https://github.com/apple/swift-argument-parser resolved at 1.2.1
========================================
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": "units",
"name": "Units",
"url": "https://github.com/NeedleInAJayStack/Units.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Units",
"dependencies": [
{
"identity": "swift-argument-parser",
"name": "swift-argument-parser",
"url": "https://github.com/apple/swift-argument-parser",
"version": "1.5.1",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-argument-parser",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/NeedleInAJayStack/Units.git
[1/1067] Fetching units
Fetched https://github.com/NeedleInAJayStack/Units.git from cache (0.83s)
Fetching https://github.com/apple/swift-argument-parser from cache
Fetched https://github.com/apple/swift-argument-parser from cache (0.56s)
Computing version for https://github.com/apple/swift-argument-parser
Computed https://github.com/apple/swift-argument-parser at 1.5.1 (1.11s)
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.1
Creating working copy for https://github.com/NeedleInAJayStack/Units.git
Working copy of https://github.com/NeedleInAJayStack/Units.git resolved at main (eefd864)
Found 1 product dependencies
- swift-argument-parser
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/NeedleInAJayStack/Units.git
https://github.com/NeedleInAJayStack/Units.git
{
"dependencies" : [
{
"identity" : "swift-argument-parser",
"requirement" : {
"range" : [
{
"lower_bound" : "1.2.1",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-argument-parser"
}
],
"manifest_display_name" : "Units",
"name" : "Units",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "Units",
"targets" : [
"Units"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "unit",
"targets" : [
"CLI"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "UnitsTests",
"module_type" : "SwiftTarget",
"name" : "UnitsTests",
"path" : "Tests/UnitsTests",
"sources" : [
"DefinitionTests.swift",
"ExpressionTests.swift",
"MeasurementTests.swift",
"ParserTests.swift",
"UnitTests.swift",
"XCTest+Measurement.swift"
],
"target_dependencies" : [
"Units"
],
"type" : "test"
},
{
"c99name" : "Units",
"module_type" : "SwiftTarget",
"name" : "Units",
"path" : "Sources/Units",
"product_memberships" : [
"Units",
"unit"
],
"sources" : [
"Expression.swift",
"Measurement/Double+Measurement.swift",
"Measurement/Int+Measurement.swift",
"Measurement/Measurement.swift",
"Parser.swift",
"Quantity.swift",
"Registry.swift",
"Unit/DefaultUnits.swift",
"Unit/DefinedUnit.swift",
"Unit/Equations.swift",
"Unit/Unit+DefaultUnits.swift",
"Unit/Unit.swift",
"UnitError.swift"
],
"type" : "library"
},
{
"c99name" : "PerformanceTests",
"module_type" : "SwiftTarget",
"name" : "PerformanceTests",
"path" : "Tests/PerformanceTests",
"sources" : [
"PerformanceTests.swift"
],
"target_dependencies" : [
"Units"
],
"type" : "test"
},
{
"c99name" : "CLI",
"module_type" : "SwiftTarget",
"name" : "CLI",
"path" : "Sources/CLI",
"product_dependencies" : [
"ArgumentParser"
],
"product_memberships" : [
"unit"
],
"sources" : [
"Convert.swift",
"List.swift",
"Unit.swift",
"main.swift"
],
"target_dependencies" : [
"Units"
],
"type" : "executable"
}
],
"tools_version" : "5.4"
}
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/10] Write sources
[1/10] Write unit-entitlement.plist
[6/10] Write swift-version-2F0A5646E1D333AE.txt
[8/25] Compiling ArgumentParserToolInfo ToolInfo.swift
[9/25] Emitting module ArgumentParserToolInfo
[10/63] Compiling ArgumentParser AsyncParsableCommand.swift
[11/63] Compiling ArgumentParser CommandConfiguration.swift
[12/63] Compiling ArgumentParser EnumerableFlag.swift
[13/63] Compiling ArgumentParser ExpressibleByArgument.swift
[14/67] Emitting module Units
/Users/admin/builder/spi-builder-workspace/Sources/Units/Registry.swift:5:16: warning: static property 'instance' is not concurrency-safe because non-'Sendable' type 'Registry' may have shared mutable state; this is an error in the Swift 6 language mode
1 | /// UnitRegistry defines a structure that contains all defined units. This ensures
2 | /// that we are able to parse to and from unit symbol representations.
3 | class Registry {
| `- note: class 'Registry' does not conform to the 'Sendable' protocol
4 | // TODO: Should we eliminate this singleton and make clients keep track?
5 | static let instance = Registry()
| |- warning: static property 'instance' is not concurrency-safe because non-'Sendable' type 'Registry' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'instance' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 |
7 | // Quick access based on symbol
[15/68] Emitting module ArgumentParser
[16/68] Compiling Units UnitError.swift
[17/68] Compiling ArgumentParser Flag.swift
[18/68] Compiling ArgumentParser NameSpecification.swift
[19/68] Compiling ArgumentParser Option.swift
[20/68] Compiling ArgumentParser OptionGroup.swift
[21/68] Compiling ArgumentParser ArgumentHelp.swift
[22/68] Compiling ArgumentParser ArgumentVisibility.swift
[23/68] Compiling ArgumentParser CompletionKind.swift
[24/68] Compiling ArgumentParser Errors.swift
[25/68] Compiling ArgumentParser ParsableArguments.swift
[26/68] Compiling ArgumentParser ParsableArgumentsValidation.swift
[27/68] Compiling ArgumentParser ParsableCommand.swift
[28/68] Compiling ArgumentParser ArgumentDecoder.swift
[29/68] Compiling ArgumentParser ArgumentDefinition.swift
[30/68] Compiling ArgumentParser ArgumentSet.swift
[31/68] Compiling ArgumentParser CommandParser.swift
[32/68] Compiling ArgumentParser InputKey.swift
[33/68] Compiling ArgumentParser BashCompletionsGenerator.swift
[34/68] Compiling ArgumentParser CompletionsGenerator.swift
[35/68] Compiling ArgumentParser FishCompletionsGenerator.swift
[36/68] Compiling ArgumentParser ZshCompletionsGenerator.swift
[37/68] Compiling ArgumentParser Argument.swift
[38/68] Compiling ArgumentParser InputOrigin.swift
[39/68] Compiling ArgumentParser Name.swift
[40/68] Compiling ArgumentParser Parsed.swift
[41/68] Compiling ArgumentParser ParsedValues.swift
[42/68] Compiling ArgumentParser Platform.swift
[43/68] Compiling ArgumentParser SequenceExtensions.swift
[44/68] Compiling ArgumentParser StringExtensions.swift
[45/68] Compiling ArgumentParser Tree.swift
[46/68] Compiling Units Equations.swift
[47/68] Compiling Units Unit+DefaultUnits.swift
[50/68] Compiling Units Unit.swift
[55/68] Compiling Units DefinedUnit.swift
[56/68] Compiling Units DefaultUnits.swift
[57/68] Compiling Units Registry.swift
/Users/admin/builder/spi-builder-workspace/Sources/Units/Registry.swift:5:16: warning: static property 'instance' is not concurrency-safe because non-'Sendable' type 'Registry' may have shared mutable state; this is an error in the Swift 6 language mode
1 | /// UnitRegistry defines a structure that contains all defined units. This ensures
2 | /// that we are able to parse to and from unit symbol representations.
3 | class Registry {
| `- note: class 'Registry' does not conform to the 'Sendable' protocol
4 | // TODO: Should we eliminate this singleton and make clients keep track?
5 | static let instance = Registry()
| |- warning: static property 'instance' is not concurrency-safe because non-'Sendable' type 'Registry' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'instance' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 |
7 | // Quick access based on symbol
[58/68] Compiling ArgumentParser ParserError.swift
[59/68] Compiling ArgumentParser SplitArguments.swift
[60/68] Compiling ArgumentParser DumpHelpGenerator.swift
[61/68] Compiling ArgumentParser HelpCommand.swift
[62/68] Compiling ArgumentParser HelpGenerator.swift
[63/68] Compiling ArgumentParser MessageInfo.swift
[64/68] Compiling ArgumentParser UsageGenerator.swift
[65/68] Compiling ArgumentParser CollectionExtensions.swift
[66/73] Compiling CLI main.swift
[67/73] Compiling CLI Unit.swift
/Users/admin/builder/spi-builder-workspace/Sources/CLI/Unit.swift:4:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | struct Unit: ParsableCommand {
4 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 | abstract: "A utility for performing unit conversions.",
6 | subcommands: [Convert.self, List.self]
[68/73] Compiling CLI List.swift
/Users/admin/builder/spi-builder-workspace/Sources/CLI/List.swift:5:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 |
4 | struct List: ParsableCommand {
5 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 | abstract: "Print a table of the available units, their symbols, and their dimensionality."
7 | )
[69/73] Emitting module CLI
/Users/admin/builder/spi-builder-workspace/Sources/CLI/Convert.swift:5:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 |
4 | struct Convert: ParsableCommand {
5 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 | abstract: "Convert a measurement expression to a specified unit.",
7 | discussion: """
/Users/admin/builder/spi-builder-workspace/Sources/CLI/Convert.swift:42:1: warning: extension declares a conformance of imported type 'Expression' to imported protocol 'ExpressibleByArgument'; this will not behave correctly if the owners of 'Units' introduce this conformance in the future
40 | }
41 |
42 | extension Expression: ExpressibleByArgument {
| |- warning: extension declares a conformance of imported type 'Expression' to imported protocol 'ExpressibleByArgument'; this will not behave correctly if the owners of 'Units' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
43 | public convenience init?(argument: String) {
44 | let argument = argument.replacingOccurrences(of: "_", with: " ")
/Users/admin/builder/spi-builder-workspace/Sources/CLI/Convert.swift:49:1: warning: extension declares a conformance of imported type 'Unit' to imported protocol 'ExpressibleByArgument'; this will not behave correctly if the owners of 'Units' introduce this conformance in the future
47 | }
48 |
49 | extension Units.Unit: ExpressibleByArgument {
| |- warning: extension declares a conformance of imported type 'Unit' to imported protocol 'ExpressibleByArgument'; this will not behave correctly if the owners of 'Units' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
50 | public init?(argument: String) {
51 | if let unit = try? Self(fromName: argument) {
/Users/admin/builder/spi-builder-workspace/Sources/CLI/List.swift:5:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 |
4 | struct List: ParsableCommand {
5 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 | abstract: "Print a table of the available units, their symbols, and their dimensionality."
7 | )
/Users/admin/builder/spi-builder-workspace/Sources/CLI/Unit.swift:4:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
2 |
3 | struct Unit: ParsableCommand {
4 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
5 | abstract: "A utility for performing unit conversions.",
6 | subcommands: [Convert.self, List.self]
[70/73] Compiling CLI Convert.swift
/Users/admin/builder/spi-builder-workspace/Sources/CLI/Convert.swift:5:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 |
4 | struct Convert: ParsableCommand {
5 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'configuration' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 | abstract: "Convert a measurement expression to a specified unit.",
7 | discussion: """
/Users/admin/builder/spi-builder-workspace/Sources/CLI/Convert.swift:42:1: warning: extension declares a conformance of imported type 'Expression' to imported protocol 'ExpressibleByArgument'; this will not behave correctly if the owners of 'Units' introduce this conformance in the future
40 | }
41 |
42 | extension Expression: ExpressibleByArgument {
| |- warning: extension declares a conformance of imported type 'Expression' to imported protocol 'ExpressibleByArgument'; this will not behave correctly if the owners of 'Units' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
43 | public convenience init?(argument: String) {
44 | let argument = argument.replacingOccurrences(of: "_", with: " ")
/Users/admin/builder/spi-builder-workspace/Sources/CLI/Convert.swift:49:1: warning: extension declares a conformance of imported type 'Unit' to imported protocol 'ExpressibleByArgument'; this will not behave correctly if the owners of 'Units' introduce this conformance in the future
47 | }
48 |
49 | extension Units.Unit: ExpressibleByArgument {
| |- warning: extension declares a conformance of imported type 'Unit' to imported protocol 'ExpressibleByArgument'; this will not behave correctly if the owners of 'Units' introduce this conformance in the future
| `- note: add '@retroactive' to silence this warning
50 | public init?(argument: String) {
51 | if let unit = try? Self(fromName: argument) {
[70/73] Write Objects.LinkFileList
[71/73] Linking unit
[72/73] Applying unit
Build complete! (7.68s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-argument-parser",
"requirement" : {
"range" : [
{
"lower_bound" : "1.2.1",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-argument-parser"
}
],
"manifest_display_name" : "Units",
"name" : "Units",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "Units",
"targets" : [
"Units"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "unit",
"targets" : [
"CLI"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "UnitsTests",
"module_type" : "SwiftTarget",
"name" : "UnitsTests",
"path" : "Tests/UnitsTests",
"sources" : [
"DefinitionTests.swift",
"ExpressionTests.swift",
"MeasurementTests.swift",
"ParserTests.swift",
"UnitTests.swift",
"XCTest+Measurement.swift"
],
"target_dependencies" : [
"Units"
],
"type" : "test"
},
{
"c99name" : "Units",
"module_type" : "SwiftTarget",
"name" : "Units",
"path" : "Sources/Units",
"product_memberships" : [
"Units",
"unit"
],
"sources" : [
"Expression.swift",
"Measurement/Double+Measurement.swift",
"Measurement/Int+Measurement.swift",
"Measurement/Measurement.swift",
"Parser.swift",
"Quantity.swift",
"Registry.swift",
"Unit/DefaultUnits.swift",
"Unit/DefinedUnit.swift",
"Unit/Equations.swift",
"Unit/Unit+DefaultUnits.swift",
"Unit/Unit.swift",
"UnitError.swift"
],
"type" : "library"
},
{
"c99name" : "PerformanceTests",
"module_type" : "SwiftTarget",
"name" : "PerformanceTests",
"path" : "Tests/PerformanceTests",
"sources" : [
"PerformanceTests.swift"
],
"target_dependencies" : [
"Units"
],
"type" : "test"
},
{
"c99name" : "CLI",
"module_type" : "SwiftTarget",
"name" : "CLI",
"path" : "Sources/CLI",
"product_dependencies" : [
"ArgumentParser"
],
"product_memberships" : [
"unit"
],
"sources" : [
"Convert.swift",
"List.swift",
"Unit.swift",
"main.swift"
],
"target_dependencies" : [
"Units"
],
"type" : "executable"
}
],
"tools_version" : "5.4"
}
Done.