From 416cffe69e6b51cdbea2ee3830d895d8eed53c7a Mon Sep 17 00:00:00 2001 From: Joannis Orlandos Date: Thu, 15 Aug 2024 16:38:42 +0200 Subject: [PATCH] Compile under Swift 6 (#345) --- Package@swift-6.0.swift | 115 ++++++++++++++++++ Sources/Meow/Database.swift | 2 +- .../MongoTransactionDatabase.swift | 2 +- 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 Package@swift-6.0.swift diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift new file mode 100644 index 00000000..0b4a5174 --- /dev/null +++ b/Package@swift-6.0.swift @@ -0,0 +1,115 @@ +// swift-tools-version:6.0 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "MongoKitten", + platforms: [ + .macOS(.v13), + .iOS(.v13) + ], + products: [ + // Products define the executables and libraries produced by a package, and make them visible to other packages. + .library( + name: "MongoKitten", + targets: ["MongoKitten"]), + .library( + name: "Meow", + targets: ["Meow"]), + .library( + name: "MongoClient", + targets: ["MongoClient"]), + .library( + name: "MongoCore", + targets: ["MongoCore"]), + ], + dependencies: [ + // ✏️ + .package(url: "https://github.com/apple/swift-log.git", from: "1.0.0"), + + // 📈 + .package(url: "https://github.com/apple/swift-metrics.git", "1.0.0" ..< "3.0.0"), + + // ✅ + .package(url: "https://github.com/apple/swift-atomics.git", from: "1.0.0"), + + // 💾 + .package(url: "https://github.com/orlandos-nl/BSON.git", from: "8.0.9"), + + // 🚀 + .package(url: "https://github.com/apple/swift-nio.git", from: "2.43.0"), + + // 📚 + .package(url: "https://github.com/orlandos-nl/DNSClient.git", from: "2.2.1"), + + // 🔑 + .package(url: "https://github.com/apple/swift-nio-ssl.git", from: "2.0.0"), + + // 🔍 + .package(url: "https://github.com/apple/swift-distributed-tracing.git", from: "1.0.0"), + ], + targets: [ + .target( + name: "_MongoKittenCrypto", + dependencies: [], + swiftSettings: [ + .enableExperimentalFeature("StrictConcurrency=complete"), + ]), + .target( + name: "MongoCore", + dependencies: [ + .product(name: "BSON", package: "BSON"), + .product(name: "NIO", package: "swift-nio"), + .product(name: "NIOSSL", package: "swift-nio-ssl"), + .product(name: "NIOFoundationCompat", package: "swift-nio"), + .product(name: "Logging", package: "swift-log"), + .product(name: "Metrics", package: "swift-metrics"), + .product(name: "Atomics", package: "swift-atomics"), + ], + swiftSettings: [ + .enableExperimentalFeature("StrictConcurrency=complete"), + ]), + .target( + name: "MongoKittenCore", + dependencies: ["MongoClient"], + swiftSettings: [ + .enableExperimentalFeature("StrictConcurrency=complete"), + ]), + .target( + name: "MongoKitten", + dependencies: ["MongoClient", "MongoKittenCore"], + swiftSettings: [ + .enableExperimentalFeature("StrictConcurrency=complete"), + ]), + .target( + name: "Meow", + dependencies: ["MongoKitten"], + swiftSettings: [ + .enableExperimentalFeature("StrictConcurrency=complete"), + ]), + .target( + name: "MongoClient", + dependencies: [ + "MongoCore", + "_MongoKittenCrypto", + .product(name: "DNSClient", package: "DNSClient"), + .product(name: "Tracing", package: "swift-distributed-tracing") + ], + swiftSettings: [ + .enableExperimentalFeature("StrictConcurrency=complete"), + ] + ), + .testTarget( + name: "MongoCoreTests", + dependencies: ["MongoCore"]), + .testTarget( + name: "MongoKittenTests", + dependencies: [ + "MongoKitten", + ]), + .testTarget( + name: "MeowTests", + dependencies: ["Meow"]), + ] +) diff --git a/Sources/Meow/Database.swift b/Sources/Meow/Database.swift index 63e084d8..0ffc1ca6 100644 --- a/Sources/Meow/Database.swift +++ b/Sources/Meow/Database.swift @@ -57,7 +57,7 @@ public class MeowDatabase: @unchecked Sendable { /// let mongodb: MongoDatabase = mongoCluster["superapp"] /// let meow = MeowDatabase(mongodb) /// let users: MeowCollection = meow[User.self] -public final class MeowTransactionDatabase: MeowDatabase { +public final class MeowTransactionDatabase: MeowDatabase, @unchecked Sendable { private let transaction: MongoTransactionDatabase fileprivate init(_ transaction: MongoTransactionDatabase) { diff --git a/Sources/MongoKitten/MongoTransactionDatabase.swift b/Sources/MongoKitten/MongoTransactionDatabase.swift index 578f0aaf..9d9081a7 100644 --- a/Sources/MongoKitten/MongoTransactionDatabase.swift +++ b/Sources/MongoKitten/MongoTransactionDatabase.swift @@ -1,7 +1,7 @@ import Tracing import MongoCore -public final class MongoTransactionDatabase: MongoDatabase { +public final class MongoTransactionDatabase: MongoDatabase, @unchecked Sendable { /// Commits the transaction and ends the session. public func commit() async throws { span?.addEvent(.init(name: "Commit Transaction"))