diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 7bf6fc926..89c102789 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -42,8 +42,8 @@ on: matrix_linux_swift_container_image: type: string # Note: we don't use Amazon Linux 2 here because zip is not installed by default. - description: "Container image for the matrix test jobs. Defaults to Swift 6.2" - default: "swift:6.2" + description: "Container image for the matrix test jobs. Defaults to Swift 6.3" + default: "swift:6.3" ## We are cancelling previously triggered workflow runs concurrency: diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 5c17f54e2..13131b7f7 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -15,9 +15,9 @@ jobs: license_header_check_project_name: "SwiftAWSLambdaRuntime" shell_check_enabled: true python_lint_check_enabled: true - api_breakage_check_container_image: "swift:6.2-noble" - docs_check_container_image: "swift:6.2-noble" - format_check_container_image: "swift:6.2-noble" + api_breakage_check_container_image: "swift:6.3-noble" + docs_check_container_image: "swift:6.3-noble" + format_check_container_image: "swift:6.3-noble" yamllint_check_enabled: true unit-tests: @@ -25,7 +25,7 @@ jobs: uses: swiftlang/github-workflows/.github/workflows/swift_package_test.yml@main with: enable_windows_checks: false - linux_exclude_swift_versions: "[{\"swift_version\": \"5.9\"}, {\"swift_version\": \"5.10\"}]" + linux_exclude_swift_versions: "[{\"swift_version\": \"5.9\"}, {\"swift_version\": \"5.10\"}, {\"swift_version\": \"6.0\"}]" swift_flags: "--explicit-target-dependency-import-check error" swift_nightly_flags: "--explicit-target-dependency-import-check error" enable_linux_static_sdk_build: true diff --git a/Examples/APIGatewayV1/Package.swift b/Examples/APIGatewayV1/Package.swift index 0297dea2b..4e121e69b 100644 --- a/Examples/APIGatewayV1/Package.swift +++ b/Examples/APIGatewayV1/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/APIGatewayV2+LambdaAuthorizer/Package.swift b/Examples/APIGatewayV2+LambdaAuthorizer/Package.swift index 42640c69a..37193b34a 100644 --- a/Examples/APIGatewayV2+LambdaAuthorizer/Package.swift +++ b/Examples/APIGatewayV2+LambdaAuthorizer/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/APIGatewayV2/Package.swift b/Examples/APIGatewayV2/Package.swift index 0297dea2b..4e121e69b 100644 --- a/Examples/APIGatewayV2/Package.swift +++ b/Examples/APIGatewayV2/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/BackgroundTasks/Package.swift b/Examples/BackgroundTasks/Package.swift index 70da51dff..65199acea 100644 --- a/Examples/BackgroundTasks/Package.swift +++ b/Examples/BackgroundTasks/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/CDK/Package.swift b/Examples/CDK/Package.swift index 0297dea2b..4e121e69b 100644 --- a/Examples/CDK/Package.swift +++ b/Examples/CDK/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/HelloJSON/Package.swift b/Examples/HelloJSON/Package.swift index 625fdcdb2..10cc03367 100644 --- a/Examples/HelloJSON/Package.swift +++ b/Examples/HelloJSON/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/HelloWorld/Package.swift b/Examples/HelloWorld/Package.swift index 1b716e4b7..5edc198f3 100644 --- a/Examples/HelloWorld/Package.swift +++ b/Examples/HelloWorld/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/HelloWorldNoTraits/Package.swift b/Examples/HelloWorldNoTraits/Package.swift index 1b716e4b7..5edc198f3 100644 --- a/Examples/HelloWorldNoTraits/Package.swift +++ b/Examples/HelloWorldNoTraits/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/HummingbirdLambda/Package.swift b/Examples/HummingbirdLambda/Package.swift index f447b15f0..03fc9f623 100644 --- a/Examples/HummingbirdLambda/Package.swift +++ b/Examples/HummingbirdLambda/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.2 +// swift-tools-version: 6.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Examples/JSONLogging/Package.swift b/Examples/JSONLogging/Package.swift index 9a831f753..56239ff0d 100644 --- a/Examples/JSONLogging/Package.swift +++ b/Examples/JSONLogging/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/ManagedInstances/Package.swift b/Examples/ManagedInstances/Package.swift index c9542a96f..1fe0b0532 100644 --- a/Examples/ManagedInstances/Package.swift +++ b/Examples/ManagedInstances/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/ManagedInstances/README.md b/Examples/ManagedInstances/README.md index d26f8fc56..c687413f2 100644 --- a/Examples/ManagedInstances/README.md +++ b/Examples/ManagedInstances/README.md @@ -12,7 +12,7 @@ This example demonstrates deploying Swift Lambda functions to Lambda Managed Ins - AWS CLI configured with appropriate permissions - SAM CLI installed -- Swift 6.0+ installed +- Swift 6.3+ installed - An existing [Lambda Managed Instances capacity provider](https://docs.aws.amazon.com/lambda/latest/dg/lambda-managed-instances-capacity-providers.html) ## Capacity Provider Configuration diff --git a/Examples/MultiSourceAPI/Package.swift b/Examples/MultiSourceAPI/Package.swift index b23308f25..d069803a9 100644 --- a/Examples/MultiSourceAPI/Package.swift +++ b/Examples/MultiSourceAPI/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/MultiTenant/Package.swift b/Examples/MultiTenant/Package.swift index c915eba58..23d219f5e 100644 --- a/Examples/MultiTenant/Package.swift +++ b/Examples/MultiTenant/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/MultiTenant/README.md b/Examples/MultiTenant/README.md index d4b0e671e..2491dea8a 100644 --- a/Examples/MultiTenant/README.md +++ b/Examples/MultiTenant/README.md @@ -157,7 +157,7 @@ requestParameters: ### Prerequisites -- Swift (>=6.2) +- Swift (>=6.3) - Docker (for cross-compilation to Amazon Linux) - AWS SAM CLI (>=1.147.1) - AWS CLI configured with appropriate credentials diff --git a/Examples/ResourcesPackaging/Package.swift b/Examples/ResourcesPackaging/Package.swift index 17a1d3f50..a10cb4f38 100644 --- a/Examples/ResourcesPackaging/Package.swift +++ b/Examples/ResourcesPackaging/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/S3EventNotifier/Package.swift b/Examples/S3EventNotifier/Package.swift index 55cf1993d..0f479880f 100644 --- a/Examples/S3EventNotifier/Package.swift +++ b/Examples/S3EventNotifier/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.2 +// swift-tools-version: 6.3 import PackageDescription let package = Package( diff --git a/Examples/S3_AWSSDK/Package.swift b/Examples/S3_AWSSDK/Package.swift index d6d5aa6a9..ef9023881 100644 --- a/Examples/S3_AWSSDK/Package.swift +++ b/Examples/S3_AWSSDK/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.2 +// swift-tools-version: 6.3 import PackageDescription diff --git a/Examples/S3_Soto/Package.swift b/Examples/S3_Soto/Package.swift index 41123bdf6..297065e59 100644 --- a/Examples/S3_Soto/Package.swift +++ b/Examples/S3_Soto/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.2 +// swift-tools-version: 6.3 import PackageDescription diff --git a/Examples/ServiceLifecycle+Postgres/Package.swift b/Examples/ServiceLifecycle+Postgres/Package.swift index 0822f4403..88c967820 100644 --- a/Examples/ServiceLifecycle+Postgres/Package.swift +++ b/Examples/ServiceLifecycle+Postgres/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.2 +// swift-tools-version: 6.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Examples/Streaming+APIGateway/Package.swift b/Examples/Streaming+APIGateway/Package.swift index 8a82081c2..8c3c05a66 100644 --- a/Examples/Streaming+APIGateway/Package.swift +++ b/Examples/Streaming+APIGateway/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/Streaming+Codable/Package.swift b/Examples/Streaming+Codable/Package.swift index b0118aff0..9c506dce9 100644 --- a/Examples/Streaming+Codable/Package.swift +++ b/Examples/Streaming+Codable/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.2 +// swift-tools-version: 6.3 import PackageDescription diff --git a/Examples/Streaming+FunctionUrl/Package.swift b/Examples/Streaming+FunctionUrl/Package.swift index 7011d2940..ee7becce4 100644 --- a/Examples/Streaming+FunctionUrl/Package.swift +++ b/Examples/Streaming+FunctionUrl/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/Testing/Package.swift b/Examples/Testing/Package.swift index f0e7c35a6..787725992 100644 --- a/Examples/Testing/Package.swift +++ b/Examples/Testing/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Examples/Tutorial/Package.swift b/Examples/Tutorial/Package.swift index 388de897b..7bd64a9e7 100644 --- a/Examples/Tutorial/Package.swift +++ b/Examples/Tutorial/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.2 +// swift-tools-version: 6.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Examples/_MyFirstFunction/create_and_deploy_function.sh b/Examples/_MyFirstFunction/create_and_deploy_function.sh index fe3ae57dd..0f26f8e6b 100755 --- a/Examples/_MyFirstFunction/create_and_deploy_function.sh +++ b/Examples/_MyFirstFunction/create_and_deploy_function.sh @@ -85,7 +85,7 @@ create_swift_project() { # swift package add-target-dependency AWSLambdaRuntime MyLambda --package swift-aws-lambda-runtime # swift package add-target-dependency AWSLambdaEvents MyLambda --package swift-aws-lambda-events cat < Package.swift -// swift-tools-version:6.2 +// swift-tools-version:6.3 import PackageDescription diff --git a/Package.swift b/Package.swift index 3f971016e..4faa2dd0f 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.1 import PackageDescription diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift deleted file mode 100644 index be01537f7..000000000 --- a/Package@swift-6.0.swift +++ /dev/null @@ -1,79 +0,0 @@ -// swift-tools-version:6.0 - -import PackageDescription - -let defaultSwiftSettings: [SwiftSetting] = [ - .define("FoundationJSONSupport"), - .define("ServiceLifecycleSupport"), - .define("LocalServerSupport"), - .define("ManagedRuntimeSupport"), - .enableExperimentalFeature( - "AvailabilityMacro=LambdaSwift 2.0:macOS 15.0" - ), -] - -let package = Package( - name: "swift-aws-lambda-runtime", - products: [ - .library(name: "AWSLambdaRuntime", targets: ["AWSLambdaRuntime"]), - // plugin to package the lambda, creating an archive that can be uploaded to AWS - // requires Linux or at least macOS v15 - .plugin(name: "AWSLambdaPackager", targets: ["AWSLambdaPackager"]), - ], - dependencies: [ - .package(url: "https://github.com/apple/swift-nio.git", from: "2.92.0"), - .package(url: "https://github.com/apple/swift-log.git", from: "1.8.0"), - .package(url: "https://github.com/apple/swift-collections.git", from: "1.3.0"), - .package(url: "https://github.com/swift-server/swift-service-lifecycle.git", from: "2.9.0"), - ], - targets: [ - .target( - name: "AWSLambdaRuntime", - dependencies: [ - .product(name: "NIOCore", package: "swift-nio"), - .product(name: "DequeModule", package: "swift-collections"), - .product(name: "Logging", package: "swift-log"), - .product(name: "NIOHTTP1", package: "swift-nio"), - .product(name: "NIOPosix", package: "swift-nio"), - .product(name: "ServiceLifecycle", package: "swift-service-lifecycle"), - ], - swiftSettings: defaultSwiftSettings - ), - .plugin( - name: "AWSLambdaPackager", - capability: .command( - intent: .custom( - verb: "archive", - description: - "Archive the Lambda binary and prepare it for uploading to AWS. Requires docker on macOS or non Amazonlinux 2 distributions." - ), - permissions: [ - .allowNetworkConnections( - scope: .docker, - reason: "This plugin uses Docker to create the AWS Lambda ZIP package." - ) - ] - ) - ), - .testTarget( - name: "AWSLambdaRuntimeTests", - dependencies: [ - .byName(name: "AWSLambdaRuntime"), - .product(name: "NIOTestUtils", package: "swift-nio"), - .product(name: "NIOFoundationCompat", package: "swift-nio"), - ], - swiftSettings: defaultSwiftSettings - ), - // for perf testing - .executableTarget( - name: "MockServer", - dependencies: [ - .product(name: "Logging", package: "swift-log"), - .product(name: "NIOHTTP1", package: "swift-nio"), - .product(name: "NIOCore", package: "swift-nio"), - .product(name: "NIOPosix", package: "swift-nio"), - ], - swiftSettings: defaultSwiftSettings - ), - ] -) diff --git a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-01-package.swift b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-01-package.swift index 155bda8d6..a928e0f2f 100644 --- a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-01-package.swift +++ b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-01-package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-02-package.swift b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-02-package.swift index 45be7f2cb..d8ea48cc9 100644 --- a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-02-package.swift +++ b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-02-package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-03-package.swift b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-03-package.swift index c911110a4..ca7d67f2b 100644 --- a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-03-package.swift +++ b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-03-package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-04-package.swift b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-04-package.swift index 953f6ffd6..1cc498459 100644 --- a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-04-package.swift +++ b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-04-package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-05-package.swift b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-05-package.swift index 96f91bc47..0be7e68e2 100644 --- a/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-05-package.swift +++ b/Sources/AWSLambdaRuntime/Docs.docc/Resources/code/03-02-05-package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:6.2 +// swift-tools-version:6.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Sources/AWSLambdaRuntime/Docs.docc/quick-setup.md b/Sources/AWSLambdaRuntime/Docs.docc/quick-setup.md index bc2e4ff8e..c81f9f4e8 100644 --- a/Sources/AWSLambdaRuntime/Docs.docc/quick-setup.md +++ b/Sources/AWSLambdaRuntime/Docs.docc/quick-setup.md @@ -30,7 +30,7 @@ swift package init --type executable 2. Add dependencies on `AWSLambdaRuntime` library ```swift -// swift-tools-version:6.2 +// swift-tools-version:6.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Sources/AWSLambdaRuntime/Logging/JSONLogHandler.swift b/Sources/AWSLambdaRuntime/Logging/JSONLogHandler.swift index d8bdfc382..462da92ce 100644 --- a/Sources/AWSLambdaRuntime/Logging/JSONLogHandler.swift +++ b/Sources/AWSLambdaRuntime/Logging/JSONLogHandler.swift @@ -53,6 +53,7 @@ public struct JSONLogHandler: LogHandler { self.traceID = traceID } + @available(*, deprecated, message: "Use log(event:) instead") public func log( level: Logger.Level, message: Logger.Message, @@ -62,22 +63,38 @@ public struct JSONLogHandler: LogHandler { function: String, line: UInt ) { + self.log( + event: LogEvent( + level: level, + message: message, + metadata: metadata, + source: source as String?, + file: file, + function: function, + line: line + ) + ) + } + + public func log(event: LogEvent) { // Merge metadata var allMetadata = self.metadata - if let metadata = metadata { + if let metadata = event.metadata { allMetadata.merge(metadata) { _, new in new } } // Create log entry struct let logEntry = LogEntry( timestamp: Date(), - level: Self.mapLogLevel(level), - message: message.description, + level: Self.mapLogLevel(event.level), + message: event.message.description, + source: event.source, + error: event.error.map { String(describing: $0) }, requestId: self.requestID, traceId: self.traceID, - file: file, - function: function, - line: line, + file: event.file, + function: event.function, + line: event.line, metadata: allMetadata.isEmpty ? nil : allMetadata.mapValues { $0.description } ) @@ -175,6 +192,8 @@ public struct JSONLogHandler: LogHandler { let timestamp: Date let level: String let message: String + let source: String + let error: String? let requestId: String let traceId: String let file: String diff --git a/Sources/AWSLambdaRuntime/Utils.swift b/Sources/AWSLambdaRuntime/Utils.swift index 8a8d04423..61fc10306 100644 --- a/Sources/AWSLambdaRuntime/Utils.swift +++ b/Sources/AWSLambdaRuntime/Utils.swift @@ -13,10 +13,8 @@ // //===----------------------------------------------------------------------===// -import NIOConcurrencyHelpers import NIOPosix - -// import Synchronization +import Synchronization enum Consts { static let apiPrefix = "/2018-06-01" @@ -108,9 +106,8 @@ extension AmazonHeaders { } /// Temporary storage for value being sent from one isolation domain to another -// use NIOLockedValueBox instead of Mutex to avoid compiler crashes on 6.0 -// see https://github.com/swiftlang/swift/issues/78048 @usableFromInline +@available(LambdaSwift 2.0, *) struct SendingStorage: ~Copyable, @unchecked Sendable { @usableFromInline struct ValueAlreadySentError: Error { @@ -119,18 +116,16 @@ struct SendingStorage: ~Copyable, @unchecked Sendable { } @usableFromInline - // let storage: Mutex - let storage: NIOLockedValueBox + let storage: Mutex @inlinable init(_ value: sending Value) { - self.storage = .init(value) + self.storage = Mutex(value) } @inlinable func get() throws -> Value { - // try self.storage.withLock { - try self.storage.withLockedValue { + try self.storage.withLock { guard let value = $0 else { throw ValueAlreadySentError() } $0 = nil return value diff --git a/Tests/AWSLambdaRuntimeTests/JSONLogHandlerTests.swift b/Tests/AWSLambdaRuntimeTests/JSONLogHandlerTests.swift index c1cd5681a..cc572fbc8 100644 --- a/Tests/AWSLambdaRuntimeTests/JSONLogHandlerTests.swift +++ b/Tests/AWSLambdaRuntimeTests/JSONLogHandlerTests.swift @@ -42,6 +42,8 @@ struct JSONLogHandlerTests { let timestamp: String let level: String let message: String + let source: String + let error: String? let requestId: String let traceId: String let file: String? @@ -73,6 +75,8 @@ struct JSONLogHandlerTests { timestamp: Date(), level: JSONLogHandler.mapLogLevel(level), message: message, + source: "TestSource", + error: nil, requestId: requestID, traceId: traceID, file: file, @@ -239,6 +243,8 @@ struct JSONLogHandlerTests { timestamp: Date(), level: "INFO", message: "test", + source: "TestSource", + error: nil, requestId: "r", traceId: "t", file: "Test.swift", diff --git a/Tests/AWSLambdaRuntimeTests/LocalServerPoolCancellationTests.swift b/Tests/AWSLambdaRuntimeTests/LocalServerPoolCancellationTests.swift index 8bc14595a..33ee902b9 100644 --- a/Tests/AWSLambdaRuntimeTests/LocalServerPoolCancellationTests.swift +++ b/Tests/AWSLambdaRuntimeTests/LocalServerPoolCancellationTests.swift @@ -34,7 +34,6 @@ struct LocalServerPoolCancellationTests { @Test("Cancelling one task should not affect other waiting tasks") @available(LambdaSwift 2.0, *) func testCancellationOnlyAffectsOwnTask() async throws { - #if compiler(>=6.0) let pool = LambdaHTTPServer.Pool(name: "Test Pool") let cancelledFlags = Mutex<[Bool]>([false, false, false]) @@ -95,9 +94,6 @@ struct LocalServerPoolCancellationTests { _ = await task2.result _ = await task3.result - #else - throw XCTSkip("This test requires Swift 6.0 or later") - #endif } /// Test concurrent invocations with one being cancelled @@ -107,8 +103,6 @@ struct LocalServerPoolCancellationTests { @Test("Multiple concurrent invocations with one cancellation") @available(LambdaSwift 2.0, *) func testConcurrentInvocationsWithCancellation() async throws { - #if compiler(>=6.0) - try await withThrowingTaskGroup(of: Void.self) { group in // Timeout task group.addTask { @@ -169,10 +163,6 @@ struct LocalServerPoolCancellationTests { try await group.next() group.cancelAll() } - - #else - throw XCTSkip("This test requires Swift 6.0 or later") - #endif } /// Test that FIFO mode doesn't have the same issue @@ -181,7 +171,6 @@ struct LocalServerPoolCancellationTests { @Test("FIFO mode cancellation works correctly") @available(LambdaSwift 2.0, *) func testFIFOModeCancellation() async throws { - #if compiler(>=6.0) let pool = LambdaHTTPServer.Pool(name: "FIFO Test Pool") try await withThrowingTaskGroup(of: Void.self) { group in @@ -222,9 +211,6 @@ struct LocalServerPoolCancellationTests { try await group.next() group.cancelAll() } - #else - throw XCTSkip("This test requires Swift 6.0 or later") - #endif } } diff --git a/Tests/AWSLambdaRuntimeTests/PoolTests.swift b/Tests/AWSLambdaRuntimeTests/PoolTests.swift index 0716d4ae2..0f51eb768 100644 --- a/Tests/AWSLambdaRuntimeTests/PoolTests.swift +++ b/Tests/AWSLambdaRuntimeTests/PoolTests.swift @@ -163,10 +163,6 @@ struct PoolTests { #expect(Set(receivedValues).count == producerCount * messagesPerProducer) } - // in Swift 6.0, the error returned by #expect(throwing:) macro is a tuple () - // I decided to skip these tests on Swift 6.0 - #if swift(>=6.1) - @Test @available(LambdaSwift 2.0, *) func testConcurrentNext() async throws { @@ -514,7 +510,5 @@ struct PoolTests { let third = try await pool.next(for: "req1") #expect(String(buffer: third.body!) == "third") } - #endif //swift >= 6.1 - } #endif // trait diff --git a/readme.md b/readme.md index e8be5c706..79080eacc 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,8 @@ -This package makes it easy to run AWS Lambda Functions written in Swift. +This package allows you to develop and deploy AWS Lambda Functions written in Swift. + +[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fawslabs%2Fswift-aws-lambda-runtime%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/awslabs/swift-aws-lambda-runtime) +[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fawslabs%2Fswift-aws-lambda-runtime%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/awslabs/swift-aws-lambda-runtime) You can read [the Swift AWS Lambda Runtime documentation](https://swiftpackageindex.com/awslabs/swift-aws-lambda-runtime/2.3.0/documentation/awslambdaruntime) on the Swift Package Index. @@ -85,7 +88,7 @@ swift package init --type executable --name MyLambda 2.3 Your `Package.swift` file must look like this ```swift - // swift-tools-version: 6.0 + // swift-tools-version: 6.3 import PackageDescription