Build Information
Successful build of JSONSafeEncoding, reference 2.0.0 (af6a8b), with Swift 6.1 for Android on 29 May 2025 08:27:09 UTC.
Swift 6 data race errors: 5
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4606859-3":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 -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 2>&1Build Log
========================================
RunAll
========================================
Builder version: 4.63.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/segmentio/JSONSafeEncoding-Swift.git
Reference: 2.0.0
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/segmentio/JSONSafeEncoding-Swift
* tag 2.0.0 -> FETCH_HEAD
HEAD is now at af6a8b3 Version 2.0.0
Cloned https://github.com/segmentio/JSONSafeEncoding-Swift.git
Revision (git rev-parse @):
af6a8b360984085e36c6341b21ecb35c12f47ebd
SUCCESS checkout https://github.com/segmentio/JSONSafeEncoding-Swift.git at 2.0.0
========================================
Build
========================================
Selected platform: android
Swift version: 6.1
Building package at path: $PWD
https://github.com/segmentio/JSONSafeEncoding-Swift.git
https://github.com/segmentio/JSONSafeEncoding-Swift.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
"dependencies" : [
],
"manifest_display_name" : "JSONSafeEncoding",
"name" : "JSONSafeEncoding",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "tvos",
"version" : "13.0"
},
{
"name" : "watchos",
"version" : "7.1"
}
],
"products" : [
{
"name" : "JSONSafeEncoding",
"targets" : [
"JSONSafeEncoding"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "JSONSafeEncodingTests",
"module_type" : "SwiftTarget",
"name" : "JSONSafeEncodingTests",
"path" : "Tests/JSONSafeEncodingTests",
"sources" : [
"JSONSafeEncoderTests.swift"
],
"target_dependencies" : [
"JSONSafeEncoding"
],
"type" : "test"
},
{
"c99name" : "JSONSafeEncoding",
"module_type" : "SwiftTarget",
"name" : "JSONSafeEncoding",
"path" : "Sources/JSONSafeEncoding",
"product_memberships" : [
"JSONSafeEncoding"
],
"sources" : [
"Extensions.swift",
"JSONError.swift",
"JSONSafeEncoder.swift",
"JSONValue.swift",
"Version.swift"
],
"type" : "library"
}
],
"tools_version" : "5.7"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-3":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 -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 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
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
[3/8] Compiling JSONSafeEncoding JSONValue.swift
[4/8] Compiling JSONSafeEncoding Version.swift
[5/8] Compiling JSONSafeEncoding JSONError.swift
[6/8] Compiling JSONSafeEncoding JSONSafeEncoder.swift
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:48:27: warning: static property 'prettyPrinted' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
36 |
37 | /// The formatting of the output JSON data.
38 | public struct OutputFormatting: OptionSet {
| `- note: consider making struct 'OutputFormatting' conform to the 'Sendable' protocol
39 | /// The format's default value.
40 | public let rawValue: UInt
:
46 |
47 | /// Produce human-readable JSON with indented output.
48 | public static let prettyPrinted = OutputFormatting(rawValue: 1 << 0)
| |- warning: static property 'prettyPrinted' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'prettyPrinted' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
49 |
50 | /// Produce JSON with dictionary keys sorted in lexicographic order.
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:52:27: warning: static property 'sortedKeys' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
36 |
37 | /// The formatting of the output JSON data.
38 | public struct OutputFormatting: OptionSet {
| `- note: consider making struct 'OutputFormatting' conform to the 'Sendable' protocol
39 | /// The format's default value.
40 | public let rawValue: UInt
:
50 | /// Produce JSON with dictionary keys sorted in lexicographic order.
51 | @available(macOS 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *)
52 | public static let sortedKeys = OutputFormatting(rawValue: 1 << 1)
| |- warning: static property 'sortedKeys' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'sortedKeys' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 |
54 | /// By default slashes get escaped ("/" → "\/", "http://apple.com/" → "http:\/\/apple.com\/")
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:58:27: warning: static property 'withoutEscapingSlashes' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
36 |
37 | /// The formatting of the output JSON data.
38 | public struct OutputFormatting: OptionSet {
| `- note: consider making struct 'OutputFormatting' conform to the 'Sendable' protocol
39 | /// The format's default value.
40 | public let rawValue: UInt
:
56 | /// In contexts where this escaping is unnecessary, the JSON is known to not be embedded,
57 | /// or is intended only for display, this option avoids this escaping.
58 | public static let withoutEscapingSlashes = OutputFormatting(rawValue: 1 << 3)
| |- warning: static property 'withoutEscapingSlashes' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'withoutEscapingSlashes' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
59 | }
60 |
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:115:20: warning: static property 'convertToStringDefaults' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
113 |
114 | /// Default strings, similar to Python
115 | static var convertToStringDefaults = NonConformingFloatEncodingStrategy.convertToString(
| |- warning: static property 'convertToStringDefaults' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'convertToStringDefaults' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'convertToStringDefaults' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | positiveInfinity: "Infinity",
117 | negativeInfinity: "-Infinity",
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:1264:14: warning: var '_iso8601Formatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
1262 | // NOTE: This value is implicitly lazy and _must_ be lazy. We're compiled against the latest SDK (w/ ISO8601DateFormatter), but linked against whichever Foundation the user has. ISO8601DateFormatter might not exist, so we better not hit this code path on an older OS.
1263 | @available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
1264 | internal var _iso8601Formatter: ISO8601DateFormatter = {
| |- warning: var '_iso8601Formatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_iso8601Formatter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make var '_iso8601Formatter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
1265 | let formatter = ISO8601DateFormatter()
1266 | formatter.formatOptions = .withInternetDateTime
[7/8] Compiling JSONSafeEncoding Extensions.swift
[8/8] Emitting module JSONSafeEncoding
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:48:27: warning: static property 'prettyPrinted' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
36 |
37 | /// The formatting of the output JSON data.
38 | public struct OutputFormatting: OptionSet {
| `- note: consider making struct 'OutputFormatting' conform to the 'Sendable' protocol
39 | /// The format's default value.
40 | public let rawValue: UInt
:
46 |
47 | /// Produce human-readable JSON with indented output.
48 | public static let prettyPrinted = OutputFormatting(rawValue: 1 << 0)
| |- warning: static property 'prettyPrinted' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'prettyPrinted' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
49 |
50 | /// Produce JSON with dictionary keys sorted in lexicographic order.
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:52:27: warning: static property 'sortedKeys' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
36 |
37 | /// The formatting of the output JSON data.
38 | public struct OutputFormatting: OptionSet {
| `- note: consider making struct 'OutputFormatting' conform to the 'Sendable' protocol
39 | /// The format's default value.
40 | public let rawValue: UInt
:
50 | /// Produce JSON with dictionary keys sorted in lexicographic order.
51 | @available(macOS 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *)
52 | public static let sortedKeys = OutputFormatting(rawValue: 1 << 1)
| |- warning: static property 'sortedKeys' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'sortedKeys' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 |
54 | /// By default slashes get escaped ("/" → "\/", "http://apple.com/" → "http:\/\/apple.com\/")
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:58:27: warning: static property 'withoutEscapingSlashes' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
36 |
37 | /// The formatting of the output JSON data.
38 | public struct OutputFormatting: OptionSet {
| `- note: consider making struct 'OutputFormatting' conform to the 'Sendable' protocol
39 | /// The format's default value.
40 | public let rawValue: UInt
:
56 | /// In contexts where this escaping is unnecessary, the JSON is known to not be embedded,
57 | /// or is intended only for display, this option avoids this escaping.
58 | public static let withoutEscapingSlashes = OutputFormatting(rawValue: 1 << 3)
| |- warning: static property 'withoutEscapingSlashes' is not concurrency-safe because non-'Sendable' type 'JSONSafeEncoder.OutputFormatting' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'withoutEscapingSlashes' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
59 | }
60 |
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:115:20: warning: static property 'convertToStringDefaults' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
113 |
114 | /// Default strings, similar to Python
115 | static var convertToStringDefaults = NonConformingFloatEncodingStrategy.convertToString(
| |- warning: static property 'convertToStringDefaults' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'convertToStringDefaults' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'convertToStringDefaults' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
116 | positiveInfinity: "Infinity",
117 | negativeInfinity: "-Infinity",
/host/spi-builder-workspace/Sources/JSONSafeEncoding/JSONSafeEncoder.swift:1264:14: warning: var '_iso8601Formatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
1262 | // NOTE: This value is implicitly lazy and _must_ be lazy. We're compiled against the latest SDK (w/ ISO8601DateFormatter), but linked against whichever Foundation the user has. ISO8601DateFormatter might not exist, so we better not hit this code path on an older OS.
1263 | @available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *)
1264 | internal var _iso8601Formatter: ISO8601DateFormatter = {
| |- warning: var '_iso8601Formatter' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert '_iso8601Formatter' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make var '_iso8601Formatter' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
1265 | let formatter = ISO8601DateFormatter()
1266 | formatter.formatOptions = .withInternetDateTime
Build complete! (12.49s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "JSONSafeEncoding",
"name" : "JSONSafeEncoding",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "tvos",
"version" : "13.0"
},
{
"name" : "watchos",
"version" : "7.1"
}
],
"products" : [
{
"name" : "JSONSafeEncoding",
"targets" : [
"JSONSafeEncoding"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "JSONSafeEncodingTests",
"module_type" : "SwiftTarget",
"name" : "JSONSafeEncodingTests",
"path" : "Tests/JSONSafeEncodingTests",
"sources" : [
"JSONSafeEncoderTests.swift"
],
"target_dependencies" : [
"JSONSafeEncoding"
],
"type" : "test"
},
{
"c99name" : "JSONSafeEncoding",
"module_type" : "SwiftTarget",
"name" : "JSONSafeEncoding",
"path" : "Sources/JSONSafeEncoding",
"product_memberships" : [
"JSONSafeEncoding"
],
"sources" : [
"Extensions.swift",
"JSONError.swift",
"JSONSafeEncoder.swift",
"JSONValue.swift",
"Version.swift"
],
"type" : "library"
}
],
"tools_version" : "5.7"
}
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
Done.