Build Information
Successful build of swift-concurrency-extras, reference main (8a4260), with Swift 6.4 for macOS (SPM) on 16 Oct 2026 14:48:05 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 5.1.3
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/pointfreeco/swift-concurrency-extras.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/pointfreeco/swift-concurrency-extras
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 8a4260f Fix Task.never() trap when cancelled before suspending. (#78)
Cloned https://github.com/pointfreeco/swift-concurrency-extras.git
Revision (git rev-parse @):
8a4260f7373493435bd21194585c95b72bfdd401
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/pointfreeco/swift-concurrency-extras.git at main
Fetching https://github.com/apple/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin (1.36s)
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.0.0
========================================
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",
"traits": [
"default"
],
"dependencies": [
{
"identity": "swift-concurrency-extras",
"name": "swift-concurrency-extras",
"url": "https://github.com/pointfreeco/swift-concurrency-extras.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-concurrency-extras",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
Fetching https://github.com/pointfreeco/swift-concurrency-extras.git
[1/1118] Fetching swift-concurrency-extras
Fetched https://github.com/pointfreeco/swift-concurrency-extras.git (1.02s)
Creating working copy for https://github.com/pointfreeco/swift-concurrency-extras.git
Working copy of https://github.com/pointfreeco/swift-concurrency-extras.git resolved at main (8a4260f)
warning: '.resolve-product-dependencies': dependency 'swift-concurrency-extras' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.4
Building package at path: $PWD
https://github.com/pointfreeco/swift-concurrency-extras.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64
Building for debugging...
[Pre-planning 1 / 124]
[Planning deferred tasks]
[26 / 44]
[28 / 46] ConcurrencyExtrasTestSupport
[37 / 67]
[43 / 94]
[46 / 94]
[47 / 94]
[51 / 94]
[54 / 94]
[57 / 94]
[62 / 94]
[68 / 94]
[70 / 94]
[71 / 94] ConcurrencyExtrasTestSupport
[74 / 94]
[85 / 94] ConcurrencyExtras
[91 / 94] ConcurrencyExtras
Build complete! (6.91 sec)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-docc-plugin"
}
],
"manifest_display_name" : "swift-concurrency-extras",
"name" : "swift-concurrency-extras",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "macos",
"version" : "10.15"
},
{
"name" : "tvos",
"version" : "13.0"
},
{
"name" : "watchos",
"version" : "6.0"
}
],
"products" : [
{
"name" : "ConcurrencyExtras",
"targets" : [
"ConcurrencyExtras"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "ConcurrencyExtrasTestSupport",
"targets" : [
"ConcurrencyExtrasTestSupport"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"6"
],
"targets" : [
{
"c99name" : "ConcurrencyExtrasTests",
"module_type" : "SwiftTarget",
"name" : "ConcurrencyExtrasTests",
"path" : "Tests/ConcurrencyExtrasTests",
"sources" : [
"ActorIsolatedTests.swift",
"AnyHashableSendableTests.swift",
"AsyncStreamTests.swift",
"LockIsolatedTests.swift",
"MainSerialExecutorTests.swift",
"ResultTests.swift",
"TaskNeverTests.swift"
],
"target_dependencies" : [
"ConcurrencyExtras"
],
"type" : "test"
},
{
"c99name" : "ConcurrencyExtrasTestSupport",
"module_type" : "SwiftTarget",
"name" : "ConcurrencyExtrasTestSupport",
"path" : "Sources/ConcurrencyExtrasTestSupport",
"product_memberships" : [
"ConcurrencyExtrasTestSupport"
],
"sources" : [
"TaskLocalTrait.swift"
],
"type" : "library"
},
{
"c99name" : "ConcurrencyExtras",
"module_type" : "SwiftTarget",
"name" : "ConcurrencyExtras",
"path" : "Sources/ConcurrencyExtras",
"product_memberships" : [
"ConcurrencyExtras"
],
"sources" : [
"ActorIsolated.swift",
"AnyHashableSendable.swift",
"AsyncStream.swift",
"AsyncThrowingStream.swift",
"Internal/Locking.swift",
"Internal/UncheckedBox.swift",
"LockIsolated.swift",
"MainSerialExecutor.swift",
"Result.swift",
"Task.swift",
"UncheckedSendable.swift"
],
"type" : "library"
}
],
"tools_version" : "6.0"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/pointfreeco/swift-concurrency-extras/main
Repository: pointfreeco/swift-concurrency-extras
Swift version used: 6.4
.package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0")
Target: ConcurrencyExtras
Generating documentation for 'ConcurrencyExtras'...
Converting documentation...
warning: '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ConcurrencyExtras.md:92:47-92:53
90 | Some asynchronous code is [notoriously difficult][reliably-testing-swift-concurrency] to test in
91 | Swift due to how suspension points are processed by the runtime. The library comes with a static
92 + function, ``withMainSerialExecutor(operation:)-79jpc``, that runs all tasks spawned in an operation
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
93 | serially and deterministically. This function can be used to make asynchronous tests faster and less
94 | flakey.
warning: '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ConcurrencyExtras.md:189:67-189:73
187 | causing a test failure.
188 |
189 + If we wrap the entire test in ``withMainSerialExecutor(operation:)-79jpc``, then it will pass
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
190 | deterministically, 100% of the time:
191 |
warning: '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ConcurrencyExtras.md:220:56-220:62
218 | Now the entire `FeatureModelTests` test case will be run on the main, serial executor.
219 |
220 + Note that by using ``withMainSerialExecutor(operation:)-79jpc`` you are technically making your
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
221 | tests behave in a manner that is different from how they would run in production. However, many
222 | tests written on a day-to-day basis due not invoke the full-blown vagaries of concurrency. Instead
warning: '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ConcurrencyExtras.md:228:37-228:43
226 | If your code has truly complex asynchronous and concurrent operations, then it may be handy to write
227 | two sets of tests: one set that targets the main executor (using
228 + ``withMainSerialExecutor(operation:)-79jpc``) so that you can deterministically assert how the core
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
229 | system behaves, and then another set that targets the default, global executor that will probably
230 | need to make weaker assertions due to non-determinism, but can still assert on some things.
warning: '5wq73' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ConcurrencyExtras.md:244:39-244:45
242 |
243 | - <doc:ReliablyTestingAsync>
244 + - ``withMainSerialExecutor(operation:)-5wq73``
| ├─suggestion: Replace '5wq73' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '5wq73' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
245 |
246 | ### Preconcurrency
warning: '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ReliablyTestingAsync.md:178:68-178:74
176 | And so if Apple can write tests like this, why can't we?
177 |
178 + Well, now we can thanks to the ``withMainSerialExecutor(operation:)-79jpc`` tool that ships with
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
179 | this library. It temporarily alters the manner in which Swift enqueues asynchronous work in order
180 | to serialize it to the main thread. This allows you to test every facet of the async code, including
warning: '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ReliablyTestingAsync.md:226:56-226:62
224 | ## Testing reality
225 |
226 + Note that by using ``withMainSerialExecutor(operation:)-79jpc`` you are technically making your
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
227 | tests behave in a manner that is different from how they would run in production. However, many
228 | tests written on a day-to-day basis do not invoke the full-blown vagaries of concurrency. Instead,
warning: '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ReliablyTestingAsync.md:251:37-251:43
249 | a deterministic sequence of outputs, the same is true of user actions in an application. And so we
250 | too feel that many of the tests we write on a daily basis can be run inside
251 + ``withMainSerialExecutor(operation:)-79jpc`` and that we are not weakening the strength of those
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
252 | tests in the least.
253 |
warning: '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ReliablyTestingAsync.md:255:111-255:117
253 |
254 | However, if your code has truly complex asynchronous and concurrent operations, then it may be handy
255 + to write two sets of tests: one set that targets the main executor (using ``withMainSerialExecutor(operation:)-79jpc``)
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
256 | so that you can deterministically assert how the core system behaves, and then another set that
257 | targets the default, global executor. The latter tests will probably need to make weaker assertions
warning: No symbol matched 'ConcurrencyExtras/withMainSerialExecutor(operation:)-79jpc'. '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'.
--> WithMainSerialExecutor.md:1:3-1:65
1 + # ``ConcurrencyExtras/withMainSerialExecutor(operation:)-79jpc``
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
2 |
3 | ## Topics
warning: '79jpc' isn't a disambiguation for 'withMainSerialExecutor(operation:)' at '/ConcurrencyExtras'
--> ../Task.swift:9:75-9:81
7 | /// This function can be used to make flakey async tests less flakey, as described in
8 | /// [this Swift Forums post](https://forums.swift.org/t/reliably-testing-code-that-adopts-swift-concurrency/57304).
9 + /// You may, however, prefer to use ``withMainSerialExecutor(operation:)-79jpc`` to improve the
| ├─suggestion: Replace '79jpc' with '6s3c0' for '@MainActor func withMainSerialExecutor(operation: () async throws -> Void) async rethrows'
| ╰─suggestion: Replace '79jpc' with '7fqt1' for 'func withMainSerialExecutor(operation: () throws -> Void) rethrows'
10 | /// reliability of async tests, and to make their execution deterministic.
11 | public static func megaYield(count: Int = _defaultMegaYieldCount) async {
Conversion complete! (0.14s)
Generated DocC archive at '/Users/admin/builder/spi-builder-workspace/.docs/pointfreeco/swift-concurrency-extras/main'
Building for debugging...
[Planning deferred tasks]
[2 / 10]
[3 / 11] ConcurrencyExtras
[14 / 22] ConcurrencyExtras
[16 / 18] ConcurrencyExtras
Build complete! (0.94 sec)
Target: ConcurrencyExtrasTestSupport
Generating documentation for 'ConcurrencyExtrasTestSupport'...
Converting documentation...
Conversion complete! (0.08s)
Generated DocC archive at '/Users/admin/builder/spi-builder-workspace/.docs/pointfreeco/swift-concurrency-extras/main'
Building for debugging...
[Planning deferred tasks]
[2 / 10]
[3 / 11] ConcurrencyExtrasTestSupport
Build complete! (0.71 sec)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/pointfreeco/swift-concurrency-extras/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/pointfreeco/swift-concurrency-extras/main/linkable-paths.json
316
3 /Users/admin/builder/spi-builder-workspace/.docs/pointfreeco/swift-concurrency-extras/main
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/pointfreeco/swift-concurrency-extras/main
File count: 316
Doc size: 3.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -pointfreeco-swift-concurrency-extras-main-82d1f4e6.zip to presigned URL
Starting upload of 687775 bytes...
Upload completed successfully
Done.