Build Information
Successful build of Markdown, reference v2.0.1 (0da4c7), with Swift 6.1 for macOS (SPM) on 25 Sep 2026 19:33:38 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 InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/gewill/swiftui-markdown.git
Reference: v2.0.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/gewill/swiftui-markdown
* tag v2.0.1 -> FETCH_HEAD
HEAD is now at 0da4c7a Merge pull request #23 from gewill/release/v2.0.1
Cloned https://github.com/gewill/swiftui-markdown.git
Revision (git rev-parse @):
0da4c7a7db3f79b782e646e0029e62269adc2b9b
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/gewill/swiftui-markdown.git at v2.0.1
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/gewill/swiftui-markdown.git
https://github.com/gewill/swiftui-markdown.git
{
"dependencies" : [
],
"manifest_display_name" : "Markdown",
"name" : "Markdown",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "11.0"
},
{
"name" : "visionos",
"version" : "1.0"
}
],
"products" : [
{
"name" : "Markdown",
"targets" : [
"Markdown"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "MarkdownTests",
"module_type" : "SwiftTarget",
"name" : "MarkdownTests",
"path" : "Tests/MarkdownTests",
"sources" : [
"MarkdownTests.swift"
],
"target_dependencies" : [
"Markdown"
],
"type" : "test"
},
{
"c99name" : "Markdown",
"module_type" : "SwiftTarget",
"name" : "Markdown",
"path" : "Sources/Markdown",
"product_memberships" : [
"Markdown"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/Markdown/Resources/web.bundle",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"Markdown.swift",
"MarkdownStyle.swift",
"MarkdownWebView.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/3] Write sources
[1/3] Copying web.bundle
[2/3] Write swift-version-2F0A5646E1D333AE.txt
[4/8] Compiling Markdown MarkdownStyle.swift
[5/8] Compiling Markdown Markdown.swift
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/Markdown.swift:168:14: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'MarkdownStyle' may have shared mutable state; this is an error in the Swift 6 language mode
166 |
167 | private struct MarkdownStyleKey: EnvironmentKey {
168 | static let defaultValue = MarkdownStyle()
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'MarkdownStyle' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 | }
170 |
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/MarkdownStyle.swift:127:15: note: consider making struct 'MarkdownStyle' conform to the 'Sendable' protocol
125 | /// Changing the style on a preview that is already on screen updates it in
126 | /// place.
127 | public struct MarkdownStyle: Hashable {
| `- note: consider making struct 'MarkdownStyle' conform to the 'Sendable' protocol
128 | /// Padding on all four edges, in points.
129 | public var padding: Int?
[6/8] Compiling Markdown resource_bundle_accessor.swift
[7/8] Compiling Markdown MarkdownWebView.swift
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/MarkdownWebView.swift:282:17: warning: instance method 'webView(_:decidePolicyFor:decisionHandler:)' nearly matches optional requirement 'webView(_:decidePolicyFor:decisionHandler:)' of protocol 'WKNavigationDelegate'
280 | }
281 | /// open links in browsers
282 | public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
| |- warning: instance method 'webView(_:decidePolicyFor:decisionHandler:)' nearly matches optional requirement 'webView(_:decidePolicyFor:decisionHandler:)' of protocol 'WKNavigationDelegate'
| |- note: candidate has non-matching type '(WKWebView, WKNavigationAction, @escaping (WKNavigationActionPolicy) -> Void) -> ()'
| `- note: move 'webView(_:decidePolicyFor:decisionHandler:)' to an extension to silence this warning
283 | if let url = navigationAction.request.url {
284 | if url.isFileURL == false {
WebKit.WKNavigationDelegate.webView:3:28: note: requirement 'webView(_:decidePolicyFor:decisionHandler:)' declared here
1 | protocol WKNavigationDelegate {
2 | @available(macOS 10.10, *)
3 | @MainActor optional func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping @MainActor @Sendable (WKNavigationActionPolicy) -> Void)}
| `- note: requirement 'webView(_:decidePolicyFor:decisionHandler:)' declared here
4 |
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/MarkdownWebView.swift:208:45: warning: capture of 'fontFaces' with non-sendable type '[MarkdownFontFace]' in a '@Sendable' closure
206 | // the SwiftUI update path, so keep it off the main thread.
207 | DispatchQueue.global(qos: .userInitiated).async { [weak self] in
208 | let css = Self.fontFaceCSS(for: fontFaces)
| `- warning: capture of 'fontFaces' with non-sendable type '[MarkdownFontFace]' in a '@Sendable' closure
209 | DispatchQueue.main.async {
210 | // A newer style may have landed while this was encoding.
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/MarkdownStyle.swift:79:15: note: consider making struct 'MarkdownFontFace' conform to the 'Sendable' protocol
77 | ///
78 | /// To actually use the family, name it in ``MarkdownStyle/fontFamily`` as well.
79 | public struct MarkdownFontFace: Hashable {
| `- note: consider making struct 'MarkdownFontFace' conform to the 'Sendable' protocol
80 | /// The name this face is registered under, and the name to use in a font
81 | /// stack.
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/MarkdownWebView.swift:208:28: warning: call to main actor-isolated static method 'fontFaceCSS(for:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
206 | // the SwiftUI update path, so keep it off the main thread.
207 | DispatchQueue.global(qos: .userInitiated).async { [weak self] in
208 | let css = Self.fontFaceCSS(for: fontFaces)
| `- warning: call to main actor-isolated static method 'fontFaceCSS(for:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
209 | DispatchQueue.main.async {
210 | // A newer style may have landed while this was encoding.
:
393 | }
394 |
395 | static func fontFaceCSS(for fontFaces: [MarkdownFontFace]) -> String {
| |- note: calls to static method 'fontFaceCSS(for:)' from outside of its actor context are implicitly asynchronous
| `- note: main actor isolation inferred from inheritance from class 'NSView'
396 | fontFaces.compactMap(fontFaceCSS).joined(separator: "\n")
397 | }
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/MarkdownWebView.swift:208:28: warning: sending 'fontFaces' risks causing data races; this is an error in the Swift 6 language mode
206 | // the SwiftUI update path, so keep it off the main thread.
207 | DispatchQueue.global(qos: .userInitiated).async { [weak self] in
208 | let css = Self.fontFaceCSS(for: fontFaces)
| |- warning: sending 'fontFaces' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending 'fontFaces' to main actor-isolated static method 'fontFaceCSS(for:)' risks causing data races between main actor-isolated and local nonisolated uses
209 | DispatchQueue.main.async {
| `- note: access can happen concurrently
210 | // A newer style may have landed while this was encoding.
211 | guard let self = self, self.appliedFontFaces == fontFaces else {
[8/8] Emitting module Markdown
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/Markdown.swift:168:14: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'MarkdownStyle' may have shared mutable state; this is an error in the Swift 6 language mode
166 |
167 | private struct MarkdownStyleKey: EnvironmentKey {
168 | static let defaultValue = MarkdownStyle()
| |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'MarkdownStyle' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
169 | }
170 |
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/MarkdownStyle.swift:127:15: note: consider making struct 'MarkdownStyle' conform to the 'Sendable' protocol
125 | /// Changing the style on a preview that is already on screen updates it in
126 | /// place.
127 | public struct MarkdownStyle: Hashable {
| `- note: consider making struct 'MarkdownStyle' conform to the 'Sendable' protocol
128 | /// Padding on all four edges, in points.
129 | public var padding: Int?
/Users/admin/builder/spi-builder-workspace/Sources/Markdown/MarkdownWebView.swift:282:17: warning: instance method 'webView(_:decidePolicyFor:decisionHandler:)' nearly matches optional requirement 'webView(_:decidePolicyFor:decisionHandler:)' of protocol 'WKNavigationDelegate'
280 | }
281 | /// open links in browsers
282 | public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
| |- warning: instance method 'webView(_:decidePolicyFor:decisionHandler:)' nearly matches optional requirement 'webView(_:decidePolicyFor:decisionHandler:)' of protocol 'WKNavigationDelegate'
| |- note: candidate has non-matching type '(WKWebView, WKNavigationAction, @escaping (WKNavigationActionPolicy) -> Void) -> ()'
| `- note: move 'webView(_:decidePolicyFor:decisionHandler:)' to an extension to silence this warning
283 | if let url = navigationAction.request.url {
284 | if url.isFileURL == false {
WebKit.WKNavigationDelegate.webView:3:28: note: requirement 'webView(_:decidePolicyFor:decisionHandler:)' declared here
1 | protocol WKNavigationDelegate {
2 | @available(macOS 10.10, *)
3 | @MainActor optional func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping @MainActor @Sendable (WKNavigationActionPolicy) -> Void)}
| `- note: requirement 'webView(_:decidePolicyFor:decisionHandler:)' declared here
4 |
Build complete! (8.92s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "Markdown",
"name" : "Markdown",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "11.0"
},
{
"name" : "visionos",
"version" : "1.0"
}
],
"products" : [
{
"name" : "Markdown",
"targets" : [
"Markdown"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "MarkdownTests",
"module_type" : "SwiftTarget",
"name" : "MarkdownTests",
"path" : "Tests/MarkdownTests",
"sources" : [
"MarkdownTests.swift"
],
"target_dependencies" : [
"Markdown"
],
"type" : "test"
},
{
"c99name" : "Markdown",
"module_type" : "SwiftTarget",
"name" : "Markdown",
"path" : "Sources/Markdown",
"product_memberships" : [
"Markdown"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/Markdown/Resources/web.bundle",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"Markdown.swift",
"MarkdownStyle.swift",
"MarkdownWebView.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.