Build Information
Successful build of PerfectRedis, reference main (c47ddd), with Swift 6.4 for Linux on 16 Sep 2026 02:52:32 UTC.
Swift 6 data race errors: 0
Build Command
bash -c docker run --pull=always --rm -v "checkouts-53886770-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest swift build --triple x86_64-unknown-linux-gnu 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/perfectlysoft/perfect-redis.git
Reference: main
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/perfectlysoft/perfect-redis
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at c47ddd8 Merge pull request #22 from PerfectlySoft/swift6-modernization
Cloned https://github.com/perfectlysoft/perfect-redis.git
Revision (git rev-parse @):
c47ddd85e1ca705e0750ff9fc7b4c709795513aa
SUCCESS checkout https://github.com/perfectlysoft/perfect-redis.git at main
========================================
Build
========================================
Selected platform: linux
Swift version: 6.4
Building package at path: $PWD
https://github.com/perfectlysoft/perfect-redis.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-53886770-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest swift build --triple x86_64-unknown-linux-gnu 2>&1
basic-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:c77fcce225e223ac0fafed844619173fc6de8d62dd560eeb28db3182af6a282b
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest
Fetching https://github.com/swift-server/RediStack.git
[1/4803] Fetching redistack
Fetched https://github.com/swift-server/RediStack.git (0.58s)
Computing version for https://github.com/swift-server/RediStack.git
Computed https://github.com/swift-server/RediStack.git at 1.6.3 (0.76s)
Fetching https://github.com/apple/swift-nio.git
Fetching https://github.com/apple/swift-atomics.git
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/apple/swift-nio-ssl.git
Fetching https://github.com/apple/swift-metrics.git
[1/8083] Fetching swift-log
[2/11591] Fetching swift-log, swift-metrics
[2355/27655] Fetching swift-log, swift-metrics, swift-nio-ssl
[11831/29530] Fetching swift-log, swift-metrics, swift-nio-ssl, swift-atomics
[29531/115477] Fetching swift-log, swift-metrics, swift-nio-ssl, swift-atomics, swift-nio
Fetched https://github.com/apple/swift-atomics.git (1.08s)
Fetched https://github.com/apple/swift-log.git (1.08s)
[42778/105519] Fetching swift-metrics, swift-nio-ssl, swift-nio
Fetched https://github.com/apple/swift-nio-ssl.git (1.09s)
[27574/89455] Fetching swift-metrics, swift-nio
Fetched https://github.com/apple/swift-metrics.git (2.84s)
Fetched https://github.com/apple/swift-nio.git (2.88s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.1 (3.06s)
Computing version for https://github.com/apple/swift-nio-ssl.git
Computed https://github.com/apple/swift-nio-ssl.git at 2.37.4 (0.22s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.102.0 (0.37s)
Fetching https://github.com/apple/swift-collections.git
Fetching https://github.com/apple/swift-system.git
[1/27245] Fetching swift-collections
[546/34143] Fetching swift-collections, swift-system
Fetched https://github.com/apple/swift-system.git (0.74s)
[3542/27245] Fetching swift-collections
Fetched https://github.com/apple/swift-collections.git (1.21s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.6.0 (1.51s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.8.1 (0.20s)
Computing version for https://github.com/apple/swift-metrics.git
Computed https://github.com/apple/swift-metrics.git at 2.11.0 (0.18s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.15.1 (0.19s)
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.6.0
Creating working copy for https://github.com/swift-server/RediStack.git
Working copy of https://github.com/swift-server/RediStack.git resolved at 1.6.3
Creating working copy for https://github.com/apple/swift-metrics.git
Working copy of https://github.com/apple/swift-metrics.git resolved at 2.11.0
Creating working copy for https://github.com/apple/swift-atomics.git
Working copy of https://github.com/apple/swift-atomics.git resolved at 1.3.1
Creating working copy for https://github.com/apple/swift-nio-ssl.git
Working copy of https://github.com/apple/swift-nio-ssl.git resolved at 2.37.4
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.15.1
Creating working copy for https://github.com/apple/swift-system.git
Working copy of https://github.com/apple/swift-system.git resolved at 1.8.1
Creating working copy for https://github.com/apple/swift-nio.git
Working copy of https://github.com/apple/swift-nio.git resolved at 2.102.0
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 900]
[Planning deferred tasks]
[Starting]
[48 / 709] NIOSSL
[176 / 742] InternalCollectionsUtilities
[179 / 751] _NIODataStructures
[179 / 751] CoreMetrics
[197 / 751] _NIODataStructures
[208 / 751] NIOConcurrencyHelpers
[210 / 751] _NIOBase64
[216 / 752] _NIOBase64
[218 / 752] _NIOBase64
[219 / 752] NIOConcurrencyHelpers-product
[224 / 753] NIOConcurrencyHelpers
[230 / 754] NIOConcurrencyHelpers
[236 / 754] InternalCollectionsUtilities
[237 / 754] InternalCollectionsUtilities
[239 / 754] CoreMetrics
[245 / 754] CNIOWASI
[258 / 765] CNIOLinux
[266 / 765] CNIOBoringSSL
[267 / 765] CNIOBoringSSL
[268 / 766] CNIOBoringSSL
[272 / 766] CoreMetrics
[273 / 767] CNIOBoringSSL
[276 / 767] CNIOBoringSSL
[284 / 767] CNIOBoringSSL
[285 / 767] CNIOBoringSSL
[287 / 767] CNIOBoringSSL
[288 / 767] CNIOBoringSSL
[292 / 767] Atomics
[293 / 767] CNIOBoringSSL
[300 / 767] CNIOBoringSSL
[302 / 767] CNIOBoringSSL
[306 / 767] CNIOBoringSSL
[309 / 767] CNIOBoringSSL
[318 / 767] CNIOBoringSSL
[320 / 767] CNIOBoringSSL
[323 / 767] CNIOBoringSSL
[324 / 767] CNIOBoringSSL
[327 / 767] CNIOBoringSSL
[330 / 767] CNIOBoringSSL
[333 / 767] CNIOBoringSSL
[335 / 767] CNIOBoringSSL
[338 / 767] CNIOBoringSSL
[342 / 767] CNIOBoringSSL
[344 / 767] CNIOBoringSSL
[349 / 767] CNIOBoringSSL
[350 / 767] CNIOBoringSSL
[351 / 767] CNIOBoringSSL
[354 / 767] CNIOBoringSSL
[357 / 767] CNIOBoringSSL
[362 / 767] CNIOBoringSSL
[366 / 767] CNIOBoringSSL
[367 / 767] CNIOBoringSSL
[369 / 767] CNIOBoringSSL
[373 / 767] CNIOBoringSSL
[377 / 767] CNIOBoringSSL
[378 / 767] CNIOBoringSSL
[379 / 767] CNIOBoringSSL
[381 / 767] CNIOBoringSSL
[383 / 767] CNIOBoringSSL
[386 / 767] CNIOBoringSSL
[388 / 767] CNIOBoringSSL
[397 / 767] CNIOBoringSSL
[412 / 767] CNIOBoringSSL
[422 / 767] CNIOBoringSSL
[424 / 767] CNIOBoringSSL
[428 / 767] CNIOBoringSSL
[431 / 767] CNIOBoringSSL
[434 / 767] CNIOBoringSSL
[436 / 767] CNIOBoringSSL
[438 / 767] CNIOBoringSSL
[441 / 767] CNIOBoringSSL
[446 / 767] CNIOBoringSSL
[447 / 767] CNIOBoringSSL
[450 / 767] CNIOBoringSSL
[455 / 767] CNIOBoringSSL
[460 / 767] CNIOBoringSSL
[461 / 767] CNIOBoringSSL
[466 / 767] CNIOBoringSSL
[469 / 767] CNIOBoringSSL
[471 / 767] CNIOBoringSSL
[482 / 767] CNIOBoringSSL
[486 / 767] CNIOBoringSSL
[492 / 767] CNIOBoringSSL
[495 / 767] CNIOBoringSSL
[497 / 767] CNIOBoringSSL
[502 / 767] CNIOBoringSSL
[505 / 767] CNIOBoringSSL
[513 / 767] CNIOBoringSSL
[521 / 767] CNIOBoringSSL
[524 / 767] CNIOBoringSSL
[531 / 767] CNIOBoringSSL
[534 / 767] CNIOBoringSSL
[537 / 767] CNIOBoringSSL
[541 / 767] CNIOBoringSSL
[544 / 767] CNIOBoringSSL
[548 / 767] CNIOBoringSSL
[549 / 767] CNIOBoringSSL
[551 / 767] CNIOBoringSSL
[555 / 767] CNIOBoringSSL
[558 / 767] CNIOBoringSSL
[561 / 767] CNIOBoringSSL
[562 / 767] CNIOBoringSSL
[564 / 767] CNIOBoringSSL
[566 / 767] CNIOBoringSSL
[570 / 767] CNIOBoringSSL
[572 / 767] CNIOBoringSSL
[575 / 767] CNIOBoringSSL
[576 / 767] CNIOBoringSSL
[581 / 767] CNIOBoringSSL
[584 / 767] CNIOBoringSSL
[594 / 767] CNIOBoringSSL
[605 / 767] CNIOBoringSSL
[610 / 767] CNIOBoringSSL
[614 / 767] CNIOBoringSSL
[618 / 767] CNIOBoringSSL
[622 / 767] CNIOBoringSSL
[624 / 767] CNIOBoringSSL
[634 / 767] CNIOBoringSSL
[642 / 767] CNIOBoringSSL
[651 / 767] CNIOBoringSSL
[652 / 767] CNIOBoringSSL
[654 / 767] CNIOBoringSSL
[657 / 767] CNIOBoringSSL
[659 / 767] CNIOBoringSSL
[661 / 767] CNIOBoringSSL
[664 / 767] CNIOBoringSSL
[675 / 767] CoreMetrics
[678 / 767] CoreMetrics
[681 / 767]
[684 / 770]
[686 / 770] CNIOWindows
[690 / 780] ContainersPreview
[695 / 780] ContainersPreview
[702 / 780] CNIOBoringSSL
[708 / 791] Metrics
[710 / 791] Metrics
[716 / 791] Metrics
[717 / 791] Metrics-product
[718 / 791] Metrics-product
[719 / 791] Metrics-product
[726 / 792] DequeModule
[727 / 793] Atomics
[729 / 793] DequeModule
[729 / 794] DequeModule
[747 / 804] NIOCore
[747 / 804] DequeModule
[747 / 804] NIOCore
[747 / 805] NIOCore
[765 / 820] NIOPosix
[765 / 820] NIOEmbedded
[767 / 820] NIOEmbedded
[768 / 820] NIOEmbedded
[773 / 820] NIOEmbedded
[775 / 821] NIOPosix
[778 / 821] NIOPosix
[790 / 825] NIO
[796 / 832] NIOTLS
[804 / 832] NIOTLS
[806 / 833]
[809 / 842] NIOSSL
[809 / 842] NIOTLS
[811 / 843] NIOTLS
[812 / 843] NIOPosix
[815 / 843] NIOSSL
[816 / 843] NIOSSL
[817 / 843] NIOSSL
[823 / 844] RediStack
[829 / 854] NIOSSL
[833 / 854] RediStack
[834 / 854] RediStack
[835 / 855] RediStack
[839 / 855] NIOTLS
[846 / 856] RediStack
[850 / 862] PerfectRedis
[852 / 862] PerfectRedis
[855 / 863] RediStack
[860 / 863] PerfectRedis
/host/spi-builder-workspace/Sources/PerfectRedis/PerfectRedis.swift:165:11: [1;33mwarning: [1;39mtype 'RedisConnection' does not conform to the 'Sendable' protocol[0;0m
[0;36m163 |[0;0m configuration: config,
[0;36m164 |[0;0m boundEventLoop: eventLoop
[0;36m165 |[0;0m ).get()
[0;36m|[0;0m `- [1;33mwarning: [1;39mtype 'RedisConnection' does not conform to the 'Sendable' protocol[0;0m
[0;36m166 |[0;0m return RedisClient(connection: connection)
[0;36m167 |[0;0m }
/host/spi-builder-workspace/.build/checkouts/RediStack/Sources/RediStack/RedisConnection.swift:88:20: [1;39mnote: [1;39mclass 'RedisConnection' does not conform to the 'Sendable' protocol[0;0m
[0;36m86 |[0;0m ///
[0;36m87 |[0;0m /// Note: `wait()` is used in the example for simplicity. Never call `wait()` on an event loop.
[0;36m88 |[0;0m public final class RedisConnection: RedisClient, RedisClientWithUserContext {
[0;36m|[0;0m `- [1;39mnote: [1;39mclass 'RedisConnection' does not conform to the 'Sendable' protocol[0;0m
[0;36m89 |[0;0m /// A unique identifer to represent this connection.
[0;36m90 |[0;0m public let id = UUID()
/host/spi-builder-workspace/Sources/PerfectRedis/PerfectRedis.swift:2:1: [1;33mwarning: [1;39madd '@preconcurrency' to treat 'Sendable'-related errors from module 'RediStack' as warnings[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/add-preconcurrency-import\AddPreconcurrencyImport]8;;\]
[0;36m1 |[0;0m import Foundation
[0;36m2 |[0;0m import RediStack
[0;36m|[0;0m `- [1;33mwarning: [1;39madd '@preconcurrency' to treat 'Sendable'-related errors from module 'RediStack' as warnings[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/add-preconcurrency-import\AddPreconcurrencyImport]8;;\]
[0;36m3 |[0;0m import NIOCore
[0;36m4 |[0;0m import NIOPosix
/host/spi-builder-workspace/Sources/PerfectRedis/PerfectRedis.swift:179:78: [1;33mwarning: [1;39mtype 'RESPValue' does not conform to the 'Sendable' protocol[0;0m
[0;36m177 |[0;0m // All public commands route through here.
[0;36m178 |[0;0m func send(_ command: String, _ args: [RESPValue] = []) async throws -> RedisResponse {
[0;36m179 |[0;0m let result = try await connection.send(command: command, with: args).get()
[0;36m|[0;0m `- [1;33mwarning: [1;39mtype 'RESPValue' does not conform to the 'Sendable' protocol[0;0m
[0;36m180 |[0;0m return RedisResponse(result)
[0;36m181 |[0;0m }
/host/spi-builder-workspace/.build/checkouts/RediStack/Sources/RediStack/RESP/RESPValue.swift:30:13: [1;39mnote: [1;39menum 'RESPValue' does not conform to the 'Sendable' protocol[0;0m
[0;36m28 |[0;0m ///
[0;36m29 |[0;0m /// See: [https://redis.io/topics/protocol](https://redis.io/topics/protocol)
[0;36m30 |[0;0m public enum RESPValue {
[0;36m|[0;0m `- [1;39mnote: [1;39menum 'RESPValue' does not conform to the 'Sendable' protocol[0;0m
[0;36m31 |[0;0m case null
[0;36m32 |[0;0m case simpleString(ByteBuffer)
[#AddPreconcurrencyImport]: <https://docs.swift.org/compiler/documentation/diagnostics/add-preconcurrency-import>
Build complete! (42.60 secs)
Build complete.
{
"dependencies" : [
{
"identity" : "redistack",
"requirement" : {
"range" : [
{
"lower_bound" : "1.6.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/swift-server/RediStack.git"
}
],
"manifest_display_name" : "PerfectRedis",
"name" : "PerfectRedis",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "PerfectRedis",
"targets" : [
"PerfectRedis"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "PerfectRedisTests",
"module_type" : "SwiftTarget",
"name" : "PerfectRedisTests",
"path" : "Tests/PerfectRedisTests",
"sources" : [
"HashTests.swift",
"PerfectRedisTests.swift"
],
"target_dependencies" : [
"PerfectRedis"
],
"type" : "test"
},
{
"c99name" : "PerfectRedis",
"module_type" : "SwiftTarget",
"name" : "PerfectRedis",
"path" : "Sources/PerfectRedis",
"product_dependencies" : [
"RediStack"
],
"product_memberships" : [
"PerfectRedis"
],
"sources" : [
"PerfectRedis.swift",
"RedisClientSync.swift",
"RedisHash.swift",
"RedisList.swift",
"RedisSet.swift"
],
"type" : "library"
}
],
"tools_version" : "6.2"
}
basic-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:c77fcce225e223ac0fafed844619173fc6de8d62dd560eeb28db3182af6a282b
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest
Done.