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 SwiftSlash, reference master (10a608), with Swift 6.1 for macOS (SPM) on 27 Apr 2025 10:09:00 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.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/tannerdsilva/SwiftSlash.git
Reference: master
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/tannerdsilva/SwiftSlash
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at 10a6080 Update README.md with some rendering niceties and code corrections (#16)
Cloned https://github.com/tannerdsilva/SwiftSlash.git
Revision (git rev-parse @):
10a6080470d0fe481ca2b5ad6acdfc8246cf5406
SUCCESS checkout https://github.com/tannerdsilva/SwiftSlash.git at master
========================================
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": "swiftslash",
      "name": "SwiftSlash",
      "url": "https://github.com/tannerdsilva/SwiftSlash.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SwiftSlash",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/tannerdsilva/SwiftSlash.git
[1/3541] Fetching swiftslash
Fetched https://github.com/tannerdsilva/SwiftSlash.git from cache (0.94s)
Creating working copy for https://github.com/tannerdsilva/SwiftSlash.git
Working copy of https://github.com/tannerdsilva/SwiftSlash.git resolved at master (10a6080)
warning: '.resolve-product-dependencies': dependency 'swiftslash' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/tannerdsilva/SwiftSlash.git
https://github.com/tannerdsilva/SwiftSlash.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "SwiftSlash",
  "name" : "SwiftSlash",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "SwiftSlash",
      "targets" : [
        "SwiftSlash"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SwiftSlashTests",
      "module_type" : "SwiftTarget",
      "name" : "SwiftSlashTests",
      "path" : "Tests/SwiftSlashTests",
      "sources" : [
        "ConcurrentExitTest.swift",
        "ConcurrentReadTest.swift",
        "ConcurrentWriteTest.swift",
        "InternalTests.swift"
      ],
      "target_dependencies" : [
        "SwiftSlash"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SwiftSlash",
      "module_type" : "SwiftTarget",
      "name" : "SwiftSlash",
      "path" : "Sources/SwiftSlash",
      "product_memberships" : [
        "SwiftSlash"
      ],
      "sources" : [
        "Child Signal Handler/ChildSignalCatcher.swift",
        "Command.swift",
        "CurrentProcessState.swift",
        "DataChannel.swift",
        "Extensions/Command/Equatable.swift",
        "Extensions/Command/Hashable.swift",
        "Framework Internals/IO Handlers/Channels/BufferedLineParser.swift",
        "Framework Internals/IO Handlers/Channels/EventTrigger.swift",
        "Framework Internals/IO Handlers/Channels/States/InboundChannelState.swift",
        "Framework Internals/IO Handlers/Channels/States/OutboundChannelState.swift",
        "Framework Internals/IO Handlers/PosixBasics.swift",
        "Framework Internals/ProcessSpawner.swift",
        "ProcessInterface.swift",
        "SwiftSlash.swift"
      ],
      "target_dependencies" : [
        "ClibSwiftSlash"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ClibSwiftSlash",
      "module_type" : "ClangTarget",
      "name" : "ClibSwiftSlash",
      "path" : "Sources/ClibSwiftSlash",
      "product_memberships" : [
        "SwiftSlash"
      ],
      "sources" : [
        "libswiftslash.c"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.5"
}
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] Write swift-version-2F0A5646E1D333AE.txt
[2/3] Compiling ClibSwiftSlash libswiftslash.c
[4/17] Compiling SwiftSlash ProcessInterface.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/ProcessInterface.swift:164:37: warning: sending 'self.outboundChannels' risks causing data races; this is an error in the Swift 6 language mode
162 | 		do {
163 | 			let exitPid = try await withThrowingTaskGroup(of:Void.self, returning:pid_t.self, body: { tg in
164 | 				try await ProcessSpawner.global.launch(path:self.command.executable, args:self.command.arguments, wd:self.command.workingDirectory, env:self.command.environment, writables:self.outboundChannels, readables:self.inboundChannels, taskGroup:&tg, onBehalfOf:self)
    |                                     |- warning: sending 'self.outboundChannels' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending 'self'-isolated 'self.outboundChannels' to actor-isolated instance method 'launch(path:args:wd:env:writables:readables:taskGroup:onBehalfOf:)' risks causing data races between actor-isolated and 'self'-isolated uses
165 | 			})
166 | 			self._state = .running(exitPid)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/ProcessInterface.swift:164:37: warning: sending 'self.inboundChannels' risks causing data races; this is an error in the Swift 6 language mode
162 | 		do {
163 | 			let exitPid = try await withThrowingTaskGroup(of:Void.self, returning:pid_t.self, body: { tg in
164 | 				try await ProcessSpawner.global.launch(path:self.command.executable, args:self.command.arguments, wd:self.command.workingDirectory, env:self.command.environment, writables:self.outboundChannels, readables:self.inboundChannels, taskGroup:&tg, onBehalfOf:self)
    |                                     |- warning: sending 'self.inboundChannels' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending 'self'-isolated 'self.inboundChannels' to actor-isolated instance method 'launch(path:args:wd:env:writables:readables:taskGroup:onBehalfOf:)' risks causing data races between actor-isolated and 'self'-isolated uses
165 | 			})
166 | 			self._state = .running(exitPid)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/ProcessInterface.swift:164:37: warning: sending 'tg' risks causing data races; this is an error in the Swift 6 language mode
162 | 		do {
163 | 			let exitPid = try await withThrowingTaskGroup(of:Void.self, returning:pid_t.self, body: { tg in
164 | 				try await ProcessSpawner.global.launch(path:self.command.executable, args:self.command.arguments, wd:self.command.workingDirectory, env:self.command.environment, writables:self.outboundChannels, readables:self.inboundChannels, taskGroup:&tg, onBehalfOf:self)
    |                                     |- warning: sending 'tg' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: sending 'self'-isolated 'tg' to actor-isolated instance method 'launch(path:args:wd:env:writables:readables:taskGroup:onBehalfOf:)' risks causing data races between actor-isolated and 'self'-isolated uses
165 | 			})
166 | 			self._state = .running(exitPid)
[5/18] Compiling SwiftSlash InboundChannelState.swift
[6/18] Compiling SwiftSlash BufferedLineParser.swift
[7/18] Compiling SwiftSlash EventTrigger.swift
[8/18] Compiling SwiftSlash OutboundChannelState.swift
[9/18] Compiling SwiftSlash ProcessSpawner.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Framework Internals/ProcessSpawner.swift:230:20: warning: sending value of non-Sendable type 'DataChannel.Outbound' risks causing data races; this is an error in the Swift 6 language mode
228 | 						fhWritersToDeregisterIfThrown.update(with:newPipe.writing)
229 | 						enabledWriters.update(with:newPipe)
230 | 						let newOut = OutboundChannelState(channel:curOut.value)
    |                    |- warning: sending value of non-Sendable type 'DataChannel.Outbound' risks causing data races; this is an error in the Swift 6 language mode
    |                    `- note: sending 'self'-isolated value of non-Sendable type 'DataChannel.Outbound' to actor-isolated callee risks causing races in between 'self'-isolated and actor-isolated uses
231 | 						buildOut[curOut.key] = newOut
232 | 						_ = self.writerTrigger.updateValue(newOut.continuation, forKey:newPipe.writing)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Framework Internals/ProcessSpawner.swift:264:19: warning: sending 'parseMode' risks causing data races; this is an error in the Swift 6 language mode
262 | 						readPipes[curIn.key] = newPipe
263 | 						enabledReaders.update(with:newPipe)
264 | 						let newIn = InboundChannelState(mode:parseMode, continuation:curIn.value.continuation)
    |                   |- warning: sending 'parseMode' risks causing data races; this is an error in the Swift 6 language mode
    |                   `- note: sending 'self'-isolated 'parseMode' to actor-isolated callee risks causing data races between actor-isolated and 'self'-isolated uses
265 | 						buildIn[curIn.key] = newIn
266 | 						_ = self.readerTrigger.updateValue(newIn.eventContinuation, forKey:newPipe.reading)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Framework Internals/ProcessSpawner.swift:384:124: warning: sending 'writables' risks causing data races; this is an error in the Swift 6 language mode
381 | 		do {
382 | 			if utilized > threshold {
383 | 				let result:pid_t = try await withUnsafeThrowingContinuation { exitCont in
    |                                                                 `- note: access can happen concurrently
384 | 					self.pendingLaunchPackages.append(PackagedLaunch(interface:interface, path:path, args:args, wd:wd, env:env, writables:writables, readables:readables, exitContinuation:exitCont))
    |                                                                                                                            |- warning: sending 'writables' risks causing data races; this is an error in the Swift 6 language mode
    |                                                                                                                            `- note: 'self'-isolated 'writables' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
385 | 				}
386 | 				try await taskGroup.waitForAll()
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Framework Internals/ProcessSpawner.swift:384:145: warning: sending 'readables' risks causing data races; this is an error in the Swift 6 language mode
382 | 			if utilized > threshold {
383 | 				let result:pid_t = try await withUnsafeThrowingContinuation { exitCont in
384 | 					self.pendingLaunchPackages.append(PackagedLaunch(interface:interface, path:path, args:args, wd:wd, env:env, writables:writables, readables:readables, exitContinuation:exitCont))
    |                                                                                                                                                 |- warning: sending 'readables' risks causing data races; this is an error in the Swift 6 language mode
    |                                                                                                                                                 `- note: 'self'-isolated 'readables' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
385 | 				}
386 | 				try await taskGroup.waitForAll()
    |                         `- note: access can happen concurrently
387 | 				return result
388 | 			} else {
    :
394 | 			}
395 | 		} catch let error {
396 | 			taskGroup.cancelAll()
    |              `- note: access can happen concurrently
397 | 			throw error
398 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Framework Internals/ProcessSpawner.swift:390:110: warning: sending 'writables' risks causing data races; this is an error in the Swift 6 language mode
387 | 				return result
388 | 			} else {
389 | 				let result:pid_t = try await withUnsafeThrowingContinuation { exitCont in
    |                                                                 `- note: access can happen concurrently
390 | 					self.launch(package:PackagedLaunch(interface:interface, path:path, args:args, wd:wd, env:env, writables:writables, readables:readables, exitContinuation:exitCont))
    |                                                                                                              |- warning: sending 'writables' risks causing data races; this is an error in the Swift 6 language mode
    |                                                                                                              `- note: 'self'-isolated 'writables' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
391 | 				}
392 | 				try await taskGroup.waitForAll()
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Framework Internals/ProcessSpawner.swift:390:131: warning: sending 'readables' risks causing data races; this is an error in the Swift 6 language mode
388 | 			} else {
389 | 				let result:pid_t = try await withUnsafeThrowingContinuation { exitCont in
390 | 					self.launch(package:PackagedLaunch(interface:interface, path:path, args:args, wd:wd, env:env, writables:writables, readables:readables, exitContinuation:exitCont))
    |                                                                                                                                   |- warning: sending 'readables' risks causing data races; this is an error in the Swift 6 language mode
    |                                                                                                                                   `- note: 'self'-isolated 'readables' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
391 | 				}
392 | 				try await taskGroup.waitForAll()
    |                         `- note: access can happen concurrently
393 | 				return result
394 | 			}
395 | 		} catch let error {
396 | 			taskGroup.cancelAll()
    |              `- note: access can happen concurrently
397 | 			throw error
398 | 		}
[10/18] Compiling SwiftSlash Equatable.swift
[11/18] Compiling SwiftSlash Hashable.swift
[12/18] Compiling SwiftSlash CurrentProcessState.swift
[13/18] Compiling SwiftSlash DataChannel.swift
[14/18] Emitting module SwiftSlash
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Child Signal Handler/ChildSignalCatcher.swift:30:53: warning: non-sendable type 'Set<ChildSignalCatcher.KeyedHandler>' of property 'handlerStack' cannot exit actor-isolated context; this is an error in the Swift 6 language mode
28 | 			if (waitResult > 0) {
29 | 				Task.detached { [waitResult, status] in
30 | 					for handler in await ChildSignalCatcher.global.handlerStack {
   |                                                     `- warning: non-sendable type 'Set<ChildSignalCatcher.KeyedHandler>' of property 'handlerStack' cannot exit actor-isolated context; this is an error in the Swift 6 language mode
31 | 						await handler.handler(waitResult, status)
32 | 					}
   :
43 | 	public typealias SignalHandle = UInt64
44 |
45 | 	fileprivate struct KeyedHandler:Hashable{
   |                     `- note: consider making struct 'KeyedHandler' conform to the 'Sendable' protocol
46 | 		let handle:SignalHandle
47 | 		let handler:SignalHandler
[15/18] Compiling SwiftSlash ChildSignalCatcher.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Child Signal Handler/ChildSignalCatcher.swift:30:53: warning: non-sendable type 'Set<ChildSignalCatcher.KeyedHandler>' of property 'handlerStack' cannot exit actor-isolated context; this is an error in the Swift 6 language mode
28 | 			if (waitResult > 0) {
29 | 				Task.detached { [waitResult, status] in
30 | 					for handler in await ChildSignalCatcher.global.handlerStack {
   |                                                     `- warning: non-sendable type 'Set<ChildSignalCatcher.KeyedHandler>' of property 'handlerStack' cannot exit actor-isolated context; this is an error in the Swift 6 language mode
31 | 						await handler.handler(waitResult, status)
32 | 					}
   :
43 | 	public typealias SignalHandle = UInt64
44 |
45 | 	fileprivate struct KeyedHandler:Hashable{
   |                     `- note: consider making struct 'KeyedHandler' conform to the 'Sendable' protocol
46 | 		let handle:SignalHandle
47 | 		let handler:SignalHandler
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Command.swift:112:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
110 |     /// - Returns: Results of the command are captured in a ``Result`` and returned after the command has finished executing
111 |     public func runSync() async throws -> Command.Result {
112 | 		let procInterface = ProcessInterface(command:self)
    |                       |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                       `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
113 | 		try await procInterface.launch()
114 | 		//add the stdout task
[16/18] Compiling SwiftSlash Command.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Child Signal Handler/ChildSignalCatcher.swift:30:53: warning: non-sendable type 'Set<ChildSignalCatcher.KeyedHandler>' of property 'handlerStack' cannot exit actor-isolated context; this is an error in the Swift 6 language mode
28 | 			if (waitResult > 0) {
29 | 				Task.detached { [waitResult, status] in
30 | 					for handler in await ChildSignalCatcher.global.handlerStack {
   |                                                     `- warning: non-sendable type 'Set<ChildSignalCatcher.KeyedHandler>' of property 'handlerStack' cannot exit actor-isolated context; this is an error in the Swift 6 language mode
31 | 						await handler.handler(waitResult, status)
32 | 					}
   :
43 | 	public typealias SignalHandle = UInt64
44 |
45 | 	fileprivate struct KeyedHandler:Hashable{
   |                     `- note: consider making struct 'KeyedHandler' conform to the 'Sendable' protocol
46 | 		let handle:SignalHandle
47 | 		let handler:SignalHandler
/Users/admin/builder/spi-builder-workspace/Sources/SwiftSlash/Command.swift:112:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
110 |     /// - Returns: Results of the command are captured in a ``Result`` and returned after the command has finished executing
111 |     public func runSync() async throws -> Command.Result {
112 | 		let procInterface = ProcessInterface(command:self)
    |                       |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                       `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
113 | 		try await procInterface.launch()
114 | 		//add the stdout task
[17/18] Compiling SwiftSlash PosixBasics.swift
[18/18] Compiling SwiftSlash SwiftSlash.swift
Build complete! (5.32s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "SwiftSlash",
  "name" : "SwiftSlash",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "SwiftSlash",
      "targets" : [
        "SwiftSlash"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "SwiftSlashTests",
      "module_type" : "SwiftTarget",
      "name" : "SwiftSlashTests",
      "path" : "Tests/SwiftSlashTests",
      "sources" : [
        "ConcurrentExitTest.swift",
        "ConcurrentReadTest.swift",
        "ConcurrentWriteTest.swift",
        "InternalTests.swift"
      ],
      "target_dependencies" : [
        "SwiftSlash"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SwiftSlash",
      "module_type" : "SwiftTarget",
      "name" : "SwiftSlash",
      "path" : "Sources/SwiftSlash",
      "product_memberships" : [
        "SwiftSlash"
      ],
      "sources" : [
        "Child Signal Handler/ChildSignalCatcher.swift",
        "Command.swift",
        "CurrentProcessState.swift",
        "DataChannel.swift",
        "Extensions/Command/Equatable.swift",
        "Extensions/Command/Hashable.swift",
        "Framework Internals/IO Handlers/Channels/BufferedLineParser.swift",
        "Framework Internals/IO Handlers/Channels/EventTrigger.swift",
        "Framework Internals/IO Handlers/Channels/States/InboundChannelState.swift",
        "Framework Internals/IO Handlers/Channels/States/OutboundChannelState.swift",
        "Framework Internals/IO Handlers/PosixBasics.swift",
        "Framework Internals/ProcessSpawner.swift",
        "ProcessInterface.swift",
        "SwiftSlash.swift"
      ],
      "target_dependencies" : [
        "ClibSwiftSlash"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ClibSwiftSlash",
      "module_type" : "ClangTarget",
      "name" : "ClibSwiftSlash",
      "path" : "Sources/ClibSwiftSlash",
      "product_memberships" : [
        "SwiftSlash"
      ],
      "sources" : [
        "libswiftslash.c"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.5"
}
Done.