From b2dba4822a3a73ccd4886766b9e7cbf47faea521 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sat, 22 Sep 2018 10:11:19 +0200 Subject: [PATCH 1/2] Upgrade to Swift 4.2 (Xcode 10) --- .swift-version | 2 +- TunnelKit.xcodeproj/project.pbxproj | 11 +++++++++-- TunnelKitHost/AppDelegate.swift | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.swift-version b/.swift-version index 5186d07..bf77d54 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -4.0 +4.2 diff --git a/TunnelKit.xcodeproj/project.pbxproj b/TunnelKit.xcodeproj/project.pbxproj index 687b0b8..5e7eb7f 100644 --- a/TunnelKit.xcodeproj/project.pbxproj +++ b/TunnelKit.xcodeproj/project.pbxproj @@ -665,11 +665,13 @@ TargetAttributes = { 0E1108991F77B9E800A92462 = { CreatedOnToolsVersion = 9.0; + LastSwiftMigration = 1000; ProvisioningStyle = Automatic; TestTargetID = 0E1108A81F77B9F900A92462; }; 0E1108A81F77B9F900A92462 = { CreatedOnToolsVersion = 9.0; + LastSwiftMigration = 1000; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.ApplicationGroups.iOS = { @@ -682,6 +684,7 @@ }; 0E17D7F81F730D9F009EE129 = { CreatedOnToolsVersion = 9.0; + LastSwiftMigration = 1000; ProvisioningStyle = Automatic; }; 0E3251C41F95770D00C108D9 = { @@ -1011,6 +1014,7 @@ INFOPLIST_FILE = TunnelKitTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TunnelKitHost.app/TunnelKitHost"; }; @@ -1025,6 +1029,7 @@ INFOPLIST_FILE = TunnelKitTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TunnelKitHost.app/TunnelKitHost"; }; @@ -1042,6 +1047,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.TunnelKitHost; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -1058,6 +1064,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.TunnelKitHost; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -1120,7 +1127,7 @@ SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1176,7 +1183,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; diff --git a/TunnelKitHost/AppDelegate.swift b/TunnelKitHost/AppDelegate.swift index 7624da6..dc5f442 100644 --- a/TunnelKitHost/AppDelegate.swift +++ b/TunnelKitHost/AppDelegate.swift @@ -43,7 +43,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } From 58726a67d7859ce083375e2a9e4722827f3969c8 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sun, 23 Sep 2018 11:02:20 +0200 Subject: [PATCH 2/2] Update SwiftyBeaver for MemoryDestination See for reference: - https://github.com/pia-foss/tunnel-apple/pull/15 - https://github.com/SwiftyBeaver/SwiftyBeaver/pull/299 --- Podfile.lock | 4 +-- .../AppExtension/MemoryDestination.swift | 25 ++++++++----------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index 5dce3e6..38af694 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,6 +1,6 @@ PODS: - OpenSSL-Apple (1.1.0h) - - SwiftyBeaver (1.6.0) + - SwiftyBeaver (1.6.1) DEPENDENCIES: - OpenSSL-Apple (~> 1.1.0h) @@ -13,7 +13,7 @@ SPEC REPOS: SPEC CHECKSUMS: OpenSSL-Apple: cd153d705ef350eb834ae7ff5f21f792b51ed208 - SwiftyBeaver: e45759613e50b522b0e6f53b1f0f14389b45ca34 + SwiftyBeaver: ccfcdf85a04d429f1633f668650b0ce8020bda3a PODFILE CHECKSUM: db783bdfb06f72df39d3c99df20aafdb51e0f7c6 diff --git a/TunnelKit/Sources/AppExtension/MemoryDestination.swift b/TunnelKit/Sources/AppExtension/MemoryDestination.swift index 4de81c7..4630a23 100644 --- a/TunnelKit/Sources/AppExtension/MemoryDestination.swift +++ b/TunnelKit/Sources/AppExtension/MemoryDestination.swift @@ -39,8 +39,6 @@ import Foundation import SwiftyBeaver class MemoryDestination: BaseDestination, CustomStringConvertible { - private let queue = DispatchQueue(label: "MemoryDestination") - private var buffer: [String] = [] var maxLines: Int? @@ -51,36 +49,35 @@ class MemoryDestination: BaseDestination, CustomStringConvertible { } func start(with existing: [String]) { - queue.sync { - buffer = existing + execute(synchronously: true) { + self.buffer = existing } } func flush(to: UserDefaults, with key: String) { - queue.sync { - to.set(buffer, forKey: key) + execute(synchronously: true) { + to.set(self.buffer, forKey: key) } to.synchronize() } var description: String { - return queue.sync { - return buffer.joined(separator: "\n") + return executeSynchronously { + return self.buffer.joined(separator: "\n") } } // MARK: BaseDestination + // XXX: executed in SwiftyBeaver queue. DO NOT invoke execute* here (sync in sync would crash otherwise) override func send(_ level: SwiftyBeaver.Level, msg: String, thread: String, file: String, function: String, line: Int, context: Any?) -> String? { guard let message = super.send(level, msg: msg, thread: thread, file: file, function: function, line: line) else { return nil } - queue.sync { - buffer.append(message) - if let maxLines = maxLines { - while (buffer.count > maxLines) { - buffer.removeFirst() - } + buffer.append(message) + if let maxLines = maxLines { + while buffer.count > maxLines { + buffer.removeFirst() } } return message