The Swift Package Index logo.Swift Package Index

Build Information

Successful build of attributed-string-builder, reference main (d5ca47), with Swift 6.4 for macOS (SPM) on 3 Oct 2026 00:54:34 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 5.1.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/objcio/attributed-string-builder.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/objcio/attributed-string-builder
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at d5ca47c Checkpoint
Cloned https://github.com/objcio/attributed-string-builder.git
Revision (git rev-parse @):
d5ca47c1f91e64fc4a78c1773c90ba6428338e43
SUCCESS checkout https://github.com/objcio/attributed-string-builder.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.4
Building package at path:  $PWD
https://github.com/objcio/attributed-string-builder.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun swift build --arch arm64
Building for debugging...
[Provisioning 3 / 10]
[Pre-planning 1 / 188]
[Planning deferred tasks]
[31 / 121]
[42 / 122] cmark-gfm-extensions
[66 / 134] cmark-gfm
[76 / 136]
[83 / 136] CAtomic
[101 / 136] cmark-gfm
[119 / 184] cmark-gfm-extensions
[129 / 184]
[135 / 184]
[139 / 184]
[141 / 184]
[145 / 184]
[147 / 184]
[150 / 184]
[153 / 184]
[155 / 184]
[156 / 184]
[167 / 184] Markdown
[168 / 184] Markdown
[174 / 185] AttributedStringBuilder
[180 / 230]
[183 / 230]
[186 / 230]
[195 / 230] Markdown
[200 / 230]
[201 / 230]
[205 / 230]
[207 / 230]
[210 / 230]
[221 / 230] AttributedStringBuilder
[227 / 230] AttributedStringBuilder
Build complete! (11.09 sec)
Fetching https://github.com/apple/swift-markdown
[1/7762] Fetching swift-markdown
Fetched https://github.com/apple/swift-markdown (1.59s)
Fetching https://github.com/swiftlang/swift-cmark.git
[1/18610] Fetching swift-cmark
Fetched https://github.com/swiftlang/swift-cmark.git (1.95s)
Creating working copy for https://github.com/apple/swift-markdown
Working copy of https://github.com/apple/swift-markdown resolved at main (392b73b)
Creating working copy for https://github.com/swiftlang/swift-cmark.git
Working copy of https://github.com/swiftlang/swift-cmark.git resolved at gfm (0c8947b)
/Users/admin/builder/spi-builder-workspace/Sources/AttributedStringBuilder/MarkdownHelper.swift:67:1: warning: '(unsafe)' global actors are deprecated; use '@preconcurrency' instead; this is an error in the Swift 6 language mode
 65 | }
 66 |
 67 | @MainActor(unsafe)
    | `- warning: '(unsafe)' global actors are deprecated; use '@preconcurrency' instead; this is an error in the Swift 6 language mode
 68 | struct AttributedStringWalker: MarkupWalker {
 69 |     var interpolationSegments: [any AttributedStringConvertible]
/Users/admin/builder/spi-builder-workspace/Sources/AttributedStringBuilder/MarkdownHelper.swift:68:8: warning: conformance of 'AttributedStringWalker' to protocol 'MarkupVisitor' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/conformance-isolation\ConformanceIsolation]8;;\]
 66 |
 67 | @MainActor(unsafe)
 68 | struct AttributedStringWalker: MarkupWalker {
    |        |- warning: conformance of 'AttributedStringWalker' to protocol 'MarkupVisitor' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/conformance-isolation\ConformanceIsolation]8;;\]
    |        |- note: isolate this conformance to the main actor with '@MainActor'
    |        `- note: turn data races into runtime errors with '@preconcurrency'
 69 |     var interpolationSegments: [any AttributedStringConvertible]
 70 |     var context: Context
    :
 90 |     var customLinkVisitor: ((Link, NSAttributedString) -> any AttributedStringConvertible)?
 91 |
 92 |     mutating func visitDocument(_ document: Document) -> () {
    |                   |- note: main actor-isolated instance method 'visitDocument' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitDocument' 'nonisolated'
 93 |         for block in document.blockChildren {
 94 |             if !attributedString.string.isEmpty {
    :
 99 |     }
100 |
101 |     func visitText(_ text: Text) -> () {
    |          |- note: main actor-isolated instance method 'visitText' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitText' 'nonisolated'
102 |         attributedString.append(NSAttributedString(string: text.string, attributes: attributes))
103 |     }
104 |
105 |     func visitLineBreak(_ lineBreak: LineBreak) -> () {
    |          |- note: main actor-isolated instance method 'visitLineBreak' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitLineBreak' 'nonisolated'
106 |         attributedString.append(NSAttributedString(string: "\n", attributes: attributes))
107 |     }
108 |
109 |     func visitSoftBreak(_ softBreak: SoftBreak) -> () {
    |          |- note: main actor-isolated instance method 'visitSoftBreak' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitSoftBreak' 'nonisolated'
110 |         return
111 |     }
112 |
113 |     func visitInlineCode(_ inlineCode: InlineCode) -> () {
    |          |- note: main actor-isolated instance method 'visitInlineCode' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitInlineCode' 'nonisolated'
114 |         var attributes = attributes
115 |         stylesheet.inlineCode(attributes: &attributes)
    :
117 |     }
118 |
119 |     mutating func visitCodeBlock(_ codeBlock: CodeBlock) -> () {
    |                   |- note: main actor-isolated instance method 'visitCodeBlock' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitCodeBlock' 'nonisolated'
120 |         var attributes = attributes
121 |         let code = codeBlock.code.trimmingCharacters(in: .whitespacesAndNewlines)
    :
131 |     }
132 |
133 |     func visitInlineHTML(_ inlineHTML: InlineHTML) -> () {
    |          |- note: main actor-isolated instance method 'visitInlineHTML' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitInlineHTML' 'nonisolated'
134 |         fatalError()
135 |     }
136 |
137 |     func visitHTMLBlock(_ html: HTMLBlock) -> () {
    |          |- note: main actor-isolated instance method 'visitHTMLBlock' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitHTMLBlock' 'nonisolated'
138 |         fatalError()
139 |     }
140 |
141 |     mutating func visitSymbolLink(_ symbolLink: SymbolLink) -> () {
    |                   |- note: main actor-isolated instance method 'visitSymbolLink' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitSymbolLink' 'nonisolated'
142 |         let prefixStr = "io.objc.interpolate."
143 |         var remainder = symbolLink.destination ?? ""
    :
154 |     }
155 |
156 |     mutating func visitEmphasis(_ emphasis: Emphasis) -> () {
    |                   |- note: main actor-isolated instance method 'visitEmphasis' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitEmphasis' 'nonisolated'
157 |         let original = attributes
158 |         defer { attributes = original }
    :
165 |     }
166 |
167 |     mutating func visitStrong(_ strong: Strong) -> () {
    |                   |- note: main actor-isolated instance method 'visitStrong' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitStrong' 'nonisolated'
168 |         let original = attributes
169 |         defer { attributes = original }
    :
176 |     }
177 |
178 |     func visitCustomBlock(_ customBlock: CustomBlock) -> () {
    |          |- note: main actor-isolated instance method 'visitCustomBlock' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitCustomBlock' 'nonisolated'
179 |         fatalError()
180 |     }
181 |
182 |     func visitCustomInline(_ customInline: CustomInline) -> () {
    |          |- note: main actor-isolated instance method 'visitCustomInline' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitCustomInline' 'nonisolated'
183 |         fatalError()
184 |     }
185 |
186 |     mutating func visitLink(_ link: Link) -> () {
    |                   |- note: main actor-isolated instance method 'visitLink' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitLink' 'nonisolated'
187 |         let original = attributes
188 |         defer { attributes = original }
    :
205 |     }
206 |
207 |     mutating func visitHeading(_ heading: Heading) -> () {
    |                   |- note: main actor-isolated instance method 'visitHeading' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitHeading' 'nonisolated'
208 |         let original = attributes
209 |         defer { attributes = original }
    :
225 |     }
226 |
227 |     mutating func visitOrderedList(_ orderedList: OrderedList) -> () {
    |                   |- note: main actor-isolated instance method 'visitOrderedList' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitOrderedList' 'nonisolated'
228 |         visit(list: orderedList)
229 |     }
230 |
231 |     mutating func visitUnorderedList(_ unorderedList: UnorderedList) -> () {
    |                   |- note: main actor-isolated instance method 'visitUnorderedList' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitUnorderedList' 'nonisolated'
232 |         visit(list: unorderedList)
233 |     }
    :
290 |     }
291 |
292 |     mutating func visitListItem(_ listItem: ListItem) -> () {
    |                   |- note: main actor-isolated instance method 'visitListItem' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitListItem' 'nonisolated'
293 |         let original = attributes
294 |         defer { attributes = original }
    :
306 |     }
307 |
308 |     mutating func visitBlockQuote(_ blockQuote: BlockQuote) -> () {
    |                   |- note: main actor-isolated instance method 'visitBlockQuote' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitBlockQuote' 'nonisolated'
309 |         let original = attributes
310 |         defer { attributes = original }
    :
315 |     }
316 |
317 |     func visitThematicBreak(_ thematicBreak: ThematicBreak) -> () {
    |          |- note: main actor-isolated instance method 'visitThematicBreak' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitThematicBreak' 'nonisolated'
318 |         // TODO we could consider making this stylable, but ideally the stylesheet doesn't know about NSAttributedString?
319 |         let thematicBreak = NSAttributedString(string: "\n\r\u{00A0} \u{0009} \u{00A0}\n\n", attributes: [.strikethroughStyle: NSUnderlineStyle.single.rawValue, .strikethroughColor: NSColor.gray])
[#ConformanceIsolation]: <https://docs.swift.org/compiler/documentation/diagnostics/conformance-isolation>
/Users/admin/builder/spi-builder-workspace/Sources/AttributedStringBuilder/MarkdownHelper.swift:67:1: warning: '(unsafe)' global actors are deprecated; use '@preconcurrency' instead; this is an error in the Swift 6 language mode
 65 | }
 66 |
 67 | @MainActor(unsafe)
    | `- warning: '(unsafe)' global actors are deprecated; use '@preconcurrency' instead; this is an error in the Swift 6 language mode
 68 | struct AttributedStringWalker: MarkupWalker {
 69 |     var interpolationSegments: [any AttributedStringConvertible]
/Users/admin/builder/spi-builder-workspace/Sources/AttributedStringBuilder/MarkdownHelper.swift:68:8: warning: conformance of 'AttributedStringWalker' to protocol 'MarkupVisitor' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/conformance-isolation\ConformanceIsolation]8;;\]
 66 |
 67 | @MainActor(unsafe)
 68 | struct AttributedStringWalker: MarkupWalker {
    |        |- warning: conformance of 'AttributedStringWalker' to protocol 'MarkupVisitor' crosses into main actor-isolated code and can cause data races; this is an error in the Swift 6 language mode [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/conformance-isolation\ConformanceIsolation]8;;\]
    |        |- note: isolate this conformance to the main actor with '@MainActor'
    |        `- note: turn data races into runtime errors with '@preconcurrency'
 69 |     var interpolationSegments: [any AttributedStringConvertible]
 70 |     var context: Context
    :
 90 |     var customLinkVisitor: ((Link, NSAttributedString) -> any AttributedStringConvertible)?
 91 |
 92 |     mutating func visitDocument(_ document: Document) -> () {
    |                   |- note: main actor-isolated instance method 'visitDocument' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitDocument' 'nonisolated'
 93 |         for block in document.blockChildren {
 94 |             if !attributedString.string.isEmpty {
    :
 99 |     }
100 |
101 |     func visitText(_ text: Text) -> () {
    |          |- note: main actor-isolated instance method 'visitText' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitText' 'nonisolated'
102 |         attributedString.append(NSAttributedString(string: text.string, attributes: attributes))
103 |     }
104 |
105 |     func visitLineBreak(_ lineBreak: LineBreak) -> () {
    |          |- note: main actor-isolated instance method 'visitLineBreak' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitLineBreak' 'nonisolated'
106 |         attributedString.append(NSAttributedString(string: "\n", attributes: attributes))
107 |     }
108 |
109 |     func visitSoftBreak(_ softBreak: SoftBreak) -> () {
    |          |- note: main actor-isolated instance method 'visitSoftBreak' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitSoftBreak' 'nonisolated'
110 |         return
111 |     }
112 |
113 |     func visitInlineCode(_ inlineCode: InlineCode) -> () {
    |          |- note: main actor-isolated instance method 'visitInlineCode' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitInlineCode' 'nonisolated'
114 |         var attributes = attributes
115 |         stylesheet.inlineCode(attributes: &attributes)
    :
117 |     }
118 |
119 |     mutating func visitCodeBlock(_ codeBlock: CodeBlock) -> () {
    |                   |- note: main actor-isolated instance method 'visitCodeBlock' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitCodeBlock' 'nonisolated'
120 |         var attributes = attributes
121 |         let code = codeBlock.code.trimmingCharacters(in: .whitespacesAndNewlines)
    :
131 |     }
132 |
133 |     func visitInlineHTML(_ inlineHTML: InlineHTML) -> () {
    |          |- note: main actor-isolated instance method 'visitInlineHTML' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitInlineHTML' 'nonisolated'
134 |         fatalError()
135 |     }
136 |
137 |     func visitHTMLBlock(_ html: HTMLBlock) -> () {
    |          |- note: main actor-isolated instance method 'visitHTMLBlock' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitHTMLBlock' 'nonisolated'
138 |         fatalError()
139 |     }
140 |
141 |     mutating func visitSymbolLink(_ symbolLink: SymbolLink) -> () {
    |                   |- note: main actor-isolated instance method 'visitSymbolLink' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitSymbolLink' 'nonisolated'
142 |         let prefixStr = "io.objc.interpolate."
143 |         var remainder = symbolLink.destination ?? ""
    :
154 |     }
155 |
156 |     mutating func visitEmphasis(_ emphasis: Emphasis) -> () {
    |                   |- note: main actor-isolated instance method 'visitEmphasis' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitEmphasis' 'nonisolated'
157 |         let original = attributes
158 |         defer { attributes = original }
    :
165 |     }
166 |
167 |     mutating func visitStrong(_ strong: Strong) -> () {
    |                   |- note: main actor-isolated instance method 'visitStrong' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitStrong' 'nonisolated'
168 |         let original = attributes
169 |         defer { attributes = original }
    :
176 |     }
177 |
178 |     func visitCustomBlock(_ customBlock: CustomBlock) -> () {
    |          |- note: main actor-isolated instance method 'visitCustomBlock' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitCustomBlock' 'nonisolated'
179 |         fatalError()
180 |     }
181 |
182 |     func visitCustomInline(_ customInline: CustomInline) -> () {
    |          |- note: main actor-isolated instance method 'visitCustomInline' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitCustomInline' 'nonisolated'
183 |         fatalError()
184 |     }
185 |
186 |     mutating func visitLink(_ link: Link) -> () {
    |                   |- note: main actor-isolated instance method 'visitLink' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitLink' 'nonisolated'
187 |         let original = attributes
188 |         defer { attributes = original }
    :
205 |     }
206 |
207 |     mutating func visitHeading(_ heading: Heading) -> () {
    |                   |- note: main actor-isolated instance method 'visitHeading' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitHeading' 'nonisolated'
208 |         let original = attributes
209 |         defer { attributes = original }
    :
225 |     }
226 |
227 |     mutating func visitOrderedList(_ orderedList: OrderedList) -> () {
    |                   |- note: main actor-isolated instance method 'visitOrderedList' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitOrderedList' 'nonisolated'
228 |         visit(list: orderedList)
229 |     }
230 |
231 |     mutating func visitUnorderedList(_ unorderedList: UnorderedList) -> () {
    |                   |- note: main actor-isolated instance method 'visitUnorderedList' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitUnorderedList' 'nonisolated'
232 |         visit(list: unorderedList)
233 |     }
    :
290 |     }
291 |
292 |     mutating func visitListItem(_ listItem: ListItem) -> () {
    |                   |- note: main actor-isolated instance method 'visitListItem' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitListItem' 'nonisolated'
293 |         let original = attributes
294 |         defer { attributes = original }
    :
306 |     }
307 |
308 |     mutating func visitBlockQuote(_ blockQuote: BlockQuote) -> () {
    |                   |- note: main actor-isolated instance method 'visitBlockQuote' cannot satisfy nonisolated requirement
    |                   `- note: mark instance method 'visitBlockQuote' 'nonisolated'
309 |         let original = attributes
310 |         defer { attributes = original }
    :
315 |     }
316 |
317 |     func visitThematicBreak(_ thematicBreak: ThematicBreak) -> () {
    |          |- note: main actor-isolated instance method 'visitThematicBreak' cannot satisfy nonisolated requirement
    |          `- note: mark instance method 'visitThematicBreak' 'nonisolated'
318 |         // TODO we could consider making this stylable, but ideally the stylesheet doesn't know about NSAttributedString?
319 |         let thematicBreak = NSAttributedString(string: "\n\r\u{00A0} \u{0009} \u{00A0}\n\n", attributes: [.strikethroughStyle: NSUnderlineStyle.single.rawValue, .strikethroughColor: NSColor.gray])
/Users/admin/builder/spi-builder-workspace/Sources/AttributedStringBuilder/MarkdownHelper.swift:191:16: warning: value 'c' was defined but never used; consider replacing with boolean test [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
189 |
190 |         stylesheet.link(attributes: &attributes, destination: link.destination ?? "")
191 |         if let c = customLinkVisitor {
    |                `- warning: value 'c' was defined but never used; consider replacing with boolean test [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
192 |             attributedStringStack.append(NSMutableAttributedString())
193 |         }
[#ConformanceIsolation]: <https://docs.swift.org/compiler/documentation/diagnostics/conformance-isolation>
[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-markdown",
      "requirement" : {
        "branch" : [
          "main"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-markdown"
    }
  ],
  "manifest_display_name" : "attributed-string-builder",
  "name" : "attributed-string-builder",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "13.0"
    }
  ],
  "products" : [
    {
      "name" : "AttributedStringBuilder",
      "targets" : [
        "AttributedStringBuilder"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "Tests",
      "module_type" : "SwiftTarget",
      "name" : "Tests",
      "path" : "Sources/Tests",
      "sources" : [
        "Environment.swift",
        "MarkdownTests.swift",
        "ReadmeTests.swift",
        "Tests.swift"
      ],
      "target_dependencies" : [
        "AttributedStringBuilder"
      ],
      "type" : "test"
    },
    {
      "c99name" : "AttributedStringBuilder",
      "module_type" : "SwiftTarget",
      "name" : "AttributedStringBuilder",
      "path" : "Sources/AttributedStringBuilder",
      "product_dependencies" : [
        "Markdown"
      ],
      "product_memberships" : [
        "AttributedStringBuilder"
      ],
      "sources" : [
        "AddOutline.swift",
        "AttributedStringBuilder.swift",
        "AttributedStringConvertible.swift",
        "AttributedStringToPDF_TextKit.swift",
        "Attributes.swift",
        "Checklist.swift",
        "CustomKeys.swift",
        "Environment.swift",
        "Footnote.swift",
        "Heading.swift",
        "Image.swift",
        "InternalLinks.swift",
        "Join.swift",
        "LayoutManagerHelpers.swift",
        "MarkdownHelper.swift",
        "MarkdownString.swift",
        "MarkdownStylesheet.swift",
        "Modify.swift",
        "PDF.swift",
        "State.swift",
        "StringHelpers.swift",
        "SwiftUI.swift",
        "Table.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.7"
}
Done.