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 Citadel, reference main (66be8c), with Swift 6.1 for Linux on 27 Apr 2025 19:46:16 UTC.

Swift 6 data race errors: 33

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -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 2>&1

Build Log

 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:454:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
452 |
453 |     public struct Name: SFTPMessageContent, Sendable {
454 |         public static let id = SFTPMessageType.name
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
455 |
456 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:470:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
468 |
469 |     public struct Attributes: SFTPMessageContent, Sendable {
470 |         public static let id = SFTPMessageType.attributes
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
471 |
472 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:481:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
479 |
480 |     public struct ReadDir: SFTPMessageContent, Sendable {
481 |         public static let id = SFTPMessageType.readdir
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
482 |
483 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
[866/879] Compiling Citadel SFTPSerializer.swift
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:60:27: warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
 53 |     public struct Flags: OptionSet {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 58 |         }
 59 |
 60 |         public static let size = Flags(rawValue: 0x00000001)
    |                           |- warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'size' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:61:27: warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
 53 |     public struct Flags: OptionSet {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 59 |
 60 |         public static let size = Flags(rawValue: 0x00000001)
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
    |                           |- warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'uidgid' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:62:27: warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
 53 |     public struct Flags: OptionSet {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 60 |         public static let size = Flags(rawValue: 0x00000001)
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
    |                           |- warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'permissions' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:63:27: warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
 53 |     public struct Flags: OptionSet {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
    |                           |- warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'acmodtime' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 64 |         public static let extended = Flags(rawValue: 0x80000000)
 65 |     }
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:64:27: warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
 53 |     public struct Flags: OptionSet {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
    |                           |- warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'extended' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 65 |     }
 66 |
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:208:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
206 | public enum SFTPMessage: Sendable {
207 |     public struct Initialize: SFTPMessageContent, Sendable {
208 |         public static let id = SFTPMessageType.initialize
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
209 |
210 |         public let version: SFTPProtocolVersion
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:217:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
215 |
216 |     public struct Version: SFTPMessageContent, Sendable {
217 |         public static let id = SFTPMessageType.version
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
218 |
219 |         public let version: SFTPProtocolVersion
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:227:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
225 |
226 |     public struct OpenFile: SFTPMessageContent, Sendable {
227 |         public static let id = SFTPMessageType.openFile
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
228 |
229 |         public var requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:242:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
240 |
241 |     public struct CloseFile: SFTPMessageContent, Sendable {
242 |         public static let id = SFTPMessageType.closeFile
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
243 |
244 |         public var requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:252:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
250 |
251 |     public struct ReadFile: SFTPMessageContent, Sendable {
252 |         public static let id = SFTPMessageType.read
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
253 |
254 |         public var requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:264:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
262 |
263 |     public struct WriteFile: SFTPMessageContent, Sendable {
264 |         public static let id = SFTPMessageType.write
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
265 |
266 |         public var requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:276:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
274 |
275 |     public struct Status: Error, SFTPMessageContent, Sendable {
276 |         public static let id = SFTPMessageType.status
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
277 |
278 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:289:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
287 |
288 |     public struct Handle: SFTPMessageContent, Sendable {
289 |         public static let id = SFTPMessageType.handle
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
290 |
291 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:299:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
297 |
298 |     public struct FileStat: SFTPMessageContent, Sendable {
299 |         public static let id = SFTPMessageType.fstat
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
300 |
301 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:309:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
307 |
308 |     public struct Remove: SFTPMessageContent, Sendable {
309 |         public static let id = SFTPMessageType.remove
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
310 |
311 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:319:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
317 |
318 |     public struct FileSetStat: SFTPMessageContent, Sendable {
319 |         public static let id = SFTPMessageType.fsetstat
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
320 |
321 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:330:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
328 |
329 |     public struct SetStat: SFTPMessageContent, Sendable {
330 |         public static let id = SFTPMessageType.setstat
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
331 |
332 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:341:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
339 |
340 |     public struct Rename: SFTPMessageContent, Sendable {
341 |         public static let id = SFTPMessageType.rename
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
342 |
343 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:353:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
351 |
352 |     public struct Symlink: SFTPMessageContent, Sendable {
353 |         public static let id = SFTPMessageType.symlink
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
354 |
355 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:364:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
362 |
363 |     public struct Readlink: SFTPMessageContent, Sendable {
364 |         public static let id = SFTPMessageType.readlink
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
365 |
366 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:374:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
372 |
373 |     public struct FileData: SFTPMessageContent, Sendable {
374 |         public static let id = SFTPMessageType.data
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
375 |
376 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:384:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
382 |
383 |     public struct MkDir: SFTPMessageContent, Sendable {
384 |         public static let id = SFTPMessageType.mkdir
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
385 |
386 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:397:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
395 |
396 |     public struct RmDir: SFTPMessageContent, Sendable {
397 |         public static let id = SFTPMessageType.rmdir
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
398 |
399 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:409:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
407 |
408 |     public struct OpenDir: SFTPMessageContent, Sendable {
409 |         public static let id = SFTPMessageType.opendir
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
410 |
411 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:421:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
419 |
420 |     public struct Stat: SFTPMessageContent, Sendable {
421 |         public static let id = SFTPMessageType.stat
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
422 |
423 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:432:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
430 |
431 |     public struct LStat: SFTPMessageContent, Sendable {
432 |         public static let id = SFTPMessageType.lstat
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
433 |
434 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:443:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
441 |
442 |     public struct RealPath: SFTPMessageContent, Sendable {
443 |         public static let id = SFTPMessageType.realpath
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
444 |
445 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:454:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
452 |
453 |     public struct Name: SFTPMessageContent, Sendable {
454 |         public static let id = SFTPMessageType.name
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
455 |
456 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:470:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
468 |
469 |     public struct Attributes: SFTPMessageContent, Sendable {
470 |         public static let id = SFTPMessageType.attributes
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
471 |
472 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:481:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
479 |
480 |     public struct ReadDir: SFTPMessageContent, Sendable {
481 |         public static let id = SFTPMessageType.readdir
    |                           |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
482 |
483 |         public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
[867/879] Compiling Citadel SSHConnectionPoolSettings.swift
/host/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/host/spi-builder-workspace/Sources/Citadel/Server.swift:163:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
161 |             handlers.append(ExecHandler(delegate: exec, username: username))
162 |
163 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
164 |         case .directTCPIP(let request):
165 |             guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:169:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
167 |             }
168 |
169 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
170 |                 return delegate.initializeDirectTCPIPChannel(
171 |                     channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:13: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class DataToBufferCodec: ChannelDuplexHandler {
   |             `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:270:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
268 |                         }
269 |                     ),
270 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
271 |                 ])
272 |             }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:278:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 |     let channel: Channel
188 |     let delegate: CitadelServerDelegate
    :
276 |         return try await bootstrap.bind(host: host, port: port).map { channel in
277 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
278 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
279 |     }
280 | }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/host/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
465 |         )
466 |
467 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
468 |             do {
469 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
470 |                 for try await chunk in stream {
471 |                     switch chunk {
[868/879] Compiling Citadel Server.swift
/host/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/host/spi-builder-workspace/Sources/Citadel/Server.swift:163:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
161 |             handlers.append(ExecHandler(delegate: exec, username: username))
162 |
163 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
164 |         case .directTCPIP(let request):
165 |             guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:169:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
167 |             }
168 |
169 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
170 |                 return delegate.initializeDirectTCPIPChannel(
171 |                     channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:13: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class DataToBufferCodec: ChannelDuplexHandler {
   |             `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:270:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
268 |                         }
269 |                     ),
270 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
271 |                 ])
272 |             }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:278:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 |     let channel: Channel
188 |     let delegate: CitadelServerDelegate
    :
276 |         return try await bootstrap.bind(host: host, port: port).map { channel in
277 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
278 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
279 |     }
280 | }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/host/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
465 |         )
466 |
467 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
468 |             do {
469 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
470 |                 for try await chunk in stream {
471 |                     switch chunk {
[869/879] Compiling Citadel ShellDelegate.swift
/host/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/host/spi-builder-workspace/Sources/Citadel/Server.swift:163:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
161 |             handlers.append(ExecHandler(delegate: exec, username: username))
162 |
163 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
164 |         case .directTCPIP(let request):
165 |             guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:169:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
167 |             }
168 |
169 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
170 |                 return delegate.initializeDirectTCPIPChannel(
171 |                     channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:13: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class DataToBufferCodec: ChannelDuplexHandler {
   |             `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:270:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
268 |                         }
269 |                     ),
270 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
271 |                 ])
272 |             }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:278:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 |     let channel: Channel
188 |     let delegate: CitadelServerDelegate
    :
276 |         return try await bootstrap.bind(host: host, port: port).map { channel in
277 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
278 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
279 |     }
280 | }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/host/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
465 |         )
466 |
467 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
468 |             do {
469 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
470 |                 for try await chunk in stream {
471 |                     switch chunk {
[870/879] Compiling Citadel TTY.swift
/host/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/host/spi-builder-workspace/Sources/Citadel/Server.swift:163:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
161 |             handlers.append(ExecHandler(delegate: exec, username: username))
162 |
163 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
164 |         case .directTCPIP(let request):
165 |             guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:169:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
167 |             }
168 |
169 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
170 |                 return delegate.initializeDirectTCPIPChannel(
171 |                     channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:13: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class DataToBufferCodec: ChannelDuplexHandler {
   |             `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:270:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
268 |                         }
269 |                     ),
270 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
271 |                 ])
272 |             }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:278:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 |     let channel: Channel
188 |     let delegate: CitadelServerDelegate
    :
276 |         return try await bootstrap.bind(host: host, port: port).map { channel in
277 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
278 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
279 |     }
280 | }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 |     // visible for ChannelPipeline to modify
1788 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/host/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
465 |         )
466 |
467 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
468 |             do {
469 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
470 |                 for try await chunk in stream {
471 |                     switch chunk {
[871/879] Compiling Citadel AES.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
 96 |             let serialized = Array(bignum.serialize())
 97 |             (buffer.baseAddress! + 1)
 98 |                 .assign(from: serialized, count: serialized.count)
    |                  |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                  `- note: use 'update(from:count:)' instead
 99 |
100 |             if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[872/879] Compiling Citadel DH-Helpers.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
 96 |             let serialized = Array(bignum.serialize())
 97 |             (buffer.baseAddress! + 1)
 98 |                 .assign(from: serialized, count: serialized.count)
    |                  |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                  `- note: use 'update(from:count:)' instead
 99 |
100 |             if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[873/879] Compiling Citadel DiffieHellmanGroup14Sha1.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
 96 |             let serialized = Array(bignum.serialize())
 97 |             (buffer.baseAddress! + 1)
 98 |                 .assign(from: serialized, count: serialized.count)
    |                  |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                  `- note: use 'update(from:count:)' instead
 99 |
100 |             if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[874/879] Compiling Citadel DiffieHellmanGroup14Sha256.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
 96 |             let serialized = Array(bignum.serialize())
 97 |             (buffer.baseAddress! + 1)
 98 |                 .assign(from: serialized, count: serialized.count)
    |                  |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                  `- note: use 'update(from:count:)' instead
 99 |
100 |             if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[875/879] Compiling Citadel RSA.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
 96 |             let serialized = Array(bignum.serialize())
 97 |             (buffer.baseAddress! + 1)
 98 |                 .assign(from: serialized, count: serialized.count)
    |                  |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
    |                  `- note: use 'update(from:count:)' instead
 99 |
100 |             if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[876/880] Wrapping AST for Citadel for debugging
[878/887] Compiling CitadelServerExample Extensions.swift
[879/887] Emitting module CitadelServerExample
[880/887] Compiling CitadelServerExample HostKeyFile.swift
[881/887] Compiling CitadelServerExample Terminal.swift
[882/887] Compiling CitadelServerExample Server.swift
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:24:42: warning: non-sendable result type 'SSHServer' cannot be sent from nonisolated context in call to static method 'host(host:port:hostKeys:algorithms:protocolOptions:logger:authenticationDelegate:group:)'; this is an error in the Swift 6 language mode
22 |         }
23 |
24 |         let server = try await SSHServer.host(
   |                                          `- warning: non-sendable result type 'SSHServer' cannot be sent from nonisolated context in call to static method 'host(host:port:hostKeys:algorithms:protocolOptions:logger:authenticationDelegate:group:)'; this is an error in the Swift 6 language mode
25 |             host: "localhost",
26 |             port: 2323,
/host/spi-builder-workspace/Sources/Citadel/Server.swift:186:20: note: class 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 |     let channel: Channel
188 |     let delegate: CitadelServerDelegate
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:1:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Citadel'
 1 | import Citadel
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Citadel'
 2 | import Crypto
 3 | import Foundation
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:52:36: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
50 |     ) {
51 |         if case .password(.init(password: password)) = request.request, request.username == username {
52 |             return responsePromise.succeed(.success)
   |                                    `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
53 |         }
54 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:211:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
209 |
210 | /// The outcome of a user authentication attempt.
211 | public enum NIOSSHUserAuthenticationOutcome {
    |             `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
212 |     case success
213 |     case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:5:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 3 | import Foundation
 4 | import NIO
 5 | import NIOSSH
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 6 |
 7 | @main struct ExampleSSHServer {
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:55:32: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
53 |         }
54 |
55 |         return responsePromise.succeed(.failure)
   |                                `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
56 |     }
57 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:211:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
209 |
210 | /// The outcome of a user authentication attempt.
211 | public enum NIOSSHUserAuthenticationOutcome {
    |             `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
212 |     case success
213 |     case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
[883/887] Compiling CitadelServerExample EchoShell.swift
[884/887] Compiling CitadelServerExample BasicCommands.swift
[885/888] Wrapping AST for CitadelServerExample for debugging
[886/888] Write Objects.LinkFileList
[887/888] Linking CitadelServerExample
Build complete! (107.15s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-nio-ssh",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.3.2",
            "upper_bound" : "0.4.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Joannis/swift-nio-ssh.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "bigint",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "5.2.0",
            "upper_bound" : "6.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/attaswift/BigInt.git"
    },
    {
      "identity" : "swift-crypto",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.1.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-crypto.git"
    },
    {
      "identity" : "colorizeswift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/mtynior/ColorizeSwift.git"
    }
  ],
  "manifest_display_name" : "Citadel",
  "name" : "Citadel",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "12.0"
    },
    {
      "name" : "ios",
      "version" : "14.0"
    }
  ],
  "products" : [
    {
      "name" : "Citadel",
      "targets" : [
        "Citadel"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CitadelServerExample",
      "targets" : [
        "CitadelServerExample"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CitadelTests",
      "module_type" : "SwiftTarget",
      "name" : "CitadelTests",
      "path" : "Tests/CitadelTests",
      "product_dependencies" : [
        "NIOSSH",
        "BigInt",
        "Logging"
      ],
      "sources" : [
        "Citadel2Tests.swift",
        "EndToEndTests.swift",
        "KeyTests.swift"
      ],
      "target_dependencies" : [
        "Citadel"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CitadelServerExample",
      "module_type" : "SwiftTarget",
      "name" : "CitadelServerExample",
      "path" : "Sources/CitadelServerExample",
      "product_dependencies" : [
        "ColorizeSwift"
      ],
      "product_memberships" : [
        "CitadelServerExample"
      ],
      "sources" : [
        "EchoShell/BasicCommands.swift",
        "EchoShell/EchoShell.swift",
        "EchoShell/Extensions.swift",
        "EchoShell/Terminal.swift",
        "HostKeyFile.swift",
        "Server.swift"
      ],
      "target_dependencies" : [
        "Citadel"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "Citadel",
      "module_type" : "SwiftTarget",
      "name" : "Citadel",
      "path" : "Sources/Citadel",
      "product_dependencies" : [
        "NIOSSH",
        "Crypto",
        "_CryptoExtras",
        "BigInt",
        "Logging"
      ],
      "product_memberships" : [
        "Citadel",
        "CitadelServerExample"
      ],
      "sources" : [
        "Algorithms/AES.swift",
        "Algorithms/DH-Helpers.swift",
        "Algorithms/DiffieHellmanGroup14Sha1.swift",
        "Algorithms/DiffieHellmanGroup14Sha256.swift",
        "Algorithms/RSA.swift",
        "BCrypt.swift",
        "ByteBufferHelpers.swift",
        "ChannelUnwrapper.swift",
        "Client.swift",
        "ClientSession.swift",
        "DirectTCPIP/Client/DirectTCPIP+Client.swift",
        "DirectTCPIP/Server/DirectTCPIP+Server.swift",
        "Errors.swift",
        "Exec/Client/ExecClient.swift",
        "Exec/Server/ExecDelegate.swift",
        "Exec/Server/ExecHandler.swift",
        "NIOGlueHandler.swift",
        "OpenSSHKey.swift",
        "SFTP/Client/SFTPClient.swift",
        "SFTP/Client/SFTPClientInboundHandler.swift",
        "SFTP/Client/SFTPFile.swift",
        "SFTP/SFTPBasicEnums.swift",
        "SFTP/SFTPFileFlags.swift",
        "SFTP/SFTPMessage.swift",
        "SFTP/SFTPMessageParser.swift",
        "SFTP/SFTPSerializer.swift",
        "SFTP/Server/SFTPServer.swift",
        "SFTP/Server/SFTPServerInboundHandler.swift",
        "SSHAuthenticationMethod.swift",
        "SSHCert.swift",
        "SSHConnectionPoolSettings.swift",
        "Server.swift",
        "Shell/Server/ShellDelegate.swift",
        "TTY/Client/TTY.swift"
      ],
      "target_dependencies" : [
        "CCitadelBcrypt"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CCitadelBcrypt",
      "module_type" : "ClangTarget",
      "name" : "CCitadelBcrypt",
      "path" : "Sources/CCitadelBcrypt",
      "product_memberships" : [
        "Citadel",
        "CitadelServerExample"
      ],
      "sources" : [
        "bcrypt-kdf.c",
        "bcrypt.c",
        "blf.c"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.5"
}
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Done.