diff --git a/.gitignore b/.gitignore index a3ea0ac..dc1a05b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ DerivedData/ .netrc Package.resolved .swiftpm/xcode/ +.vscode +.swift-version diff --git a/Package.swift b/Package.swift index 9a2eb69..4794ae2 100644 --- a/Package.swift +++ b/Package.swift @@ -5,12 +5,14 @@ import PackageDescription let extraSettings: [SwiftSetting] = [ .enableExperimentalFeature("SuppressedAssociatedTypes"), .enableExperimentalFeature("LifetimeDependence"), + .enableExperimentalFeature("NonescapableTypes"), .enableUpcomingFeature("LifetimeDependence"), .enableUpcomingFeature("NonisolatedNonsendingByDefault"), .enableUpcomingFeature("InferIsolatedConformances"), .enableUpcomingFeature("ExistentialAny"), .enableUpcomingFeature("MemberImportVisibility"), - .enableUpcomingFeature("InternalImportsByDefault") + .enableUpcomingFeature("InternalImportsByDefault"), + .unsafeFlags(["-Xfrontend", "-require-explicit-sendable", "-warnings-as-errors"]) ] let package = Package( diff --git a/Sources/HTTPServer/HTTPServer.swift b/Sources/HTTPServer/HTTPServer.swift index 1670f68..401becc 100644 --- a/Sources/HTTPServer/HTTPServer.swift +++ b/Sources/HTTPServer/HTTPServer.swift @@ -62,7 +62,7 @@ import Synchronization /// } /// ``` @available(macOS 26.0, iOS 26.0, watchOS 26.0, tvOS 26.0, visionOS 26.0, *) -public final class Server { +public final class Server: Sendable { /// Starts an HTTP server with a closure-based request handler. /// /// This method provides a convenient way to start an HTTP server using a closure to handle incoming requests. diff --git a/Sources/HTTPServer/HTTPServerClosureRequestHandler.swift b/Sources/HTTPServer/HTTPServerClosureRequestHandler.swift index b677191..fadce2e 100644 --- a/Sources/HTTPServer/HTTPServerClosureRequestHandler.swift +++ b/Sources/HTTPServer/HTTPServerClosureRequestHandler.swift @@ -24,7 +24,7 @@ public import HTTPTypes /// } /// ``` @available(macOS 26.0, iOS 26.0, watchOS 26.0, tvOS 26.0, visionOS 26.0, *) -public struct HTTPServerClosureRequestHandler: HTTPServerRequestHandler { +public struct HTTPServerClosureRequestHandler: HTTPServerRequestHandler, Sendable { /// The underlying closure that handles HTTP requests private let _handler: nonisolated(nonsending) @Sendable ( diff --git a/Sources/Middleware/MiddlewareBuilder.swift b/Sources/Middleware/MiddlewareBuilder.swift index b742aea..3e16713 100644 --- a/Sources/Middleware/MiddlewareBuilder.swift +++ b/Sources/Middleware/MiddlewareBuilder.swift @@ -21,7 +21,7 @@ /// } /// ``` @resultBuilder -public struct MiddlewareChainBuilder { +public struct MiddlewareChainBuilder: Sendable { /// Builds a middleware chain from a single middleware component. /// /// This is the base case for the result builder pattern, handling a single middleware.