diff --git a/.github/workflows/macos-tests.yml b/.github/workflows/macos-tests.yml index 3bf9f8e3..4daba501 100644 --- a/.github/workflows/macos-tests.yml +++ b/.github/workflows/macos-tests.yml @@ -12,6 +12,9 @@ jobs: LANG: en_US.UTF-8 steps: + - uses: maxim-lobanov/setup-xcode@v1.1 + with: + xcode-version: 12.0 - uses: actions/checkout@v2 - name: Create Test Result Directory run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 2db1eeac..630b19fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,11 +18,16 @@ All notable changes to this project will be documented in this file. Changes not # [Unreleased] +## Removed + +- Support for the iOS 8 deployment target. ([#462](https://github.com/httpswift/swifter/pull/462)) by [@Vkt0r](https://github.com/Vkt0r) + ## Added - Add the `trailing_whitespace` rule in Swiftlint and autocorrect all the source files. ([#421](https://github.com/httpswift/swifter/pull/421)) by [@Vkt0r](https://github.com/Vkt0r) - Update the project for Xcode 11.1. ([#438](https://github.com/httpswift/swifter/pull/438)) by [@Vkt0r](https://github.com/Vkt0r) - Add optional 'Content-Type' to Data HttpResponse. ([#450](https://github.com/httpswift/swifter/pull/450)) by [@SoftwareEngineerChris](https://github.com/SoftwareEngineerChris) +- Support Xcode 12 and Swift 5+. ([#462](https://github.com/httpswift/swifter/pull/462)) by [@Vkt0r](https://github.com/Vkt0r) ## Changed diff --git a/XCode/Sources/HttpResponse.swift b/XCode/Sources/HttpResponse.swift index 114b9422..3a28c3c5 100644 --- a/XCode/Sources/HttpResponse.swift +++ b/XCode/Sources/HttpResponse.swift @@ -85,7 +85,7 @@ public enum HttpResponse { case movedTemporarily(String) case badRequest(HttpResponseBody?), unauthorized, forbidden, notFound case internalServerError - case raw(Int, String, [String:String]?, ((HttpResponseBodyWriter) throws -> Void)? ) + case raw(Int, String, [String: String]?, ((HttpResponseBodyWriter) throws -> Void)? ) public var statusCode: Int { switch self { diff --git a/XCode/Sources/HttpServer.swift b/XCode/Sources/HttpServer.swift index 9802a16f..06f7f3f6 100644 --- a/XCode/Sources/HttpServer.swift +++ b/XCode/Sources/HttpServer.swift @@ -12,7 +12,7 @@ open class HttpServer: HttpServerIO { public static let VERSION: String = { #if os(Linux) - return "1.4.7" + return "1.5.0" #else let bundle = Bundle(for: HttpServer.self) guard let version = bundle.infoDictionary?["CFBundleShortVersionString"] as? String else { return "Unspecified" } diff --git a/XCode/Sources/HttpServerIO.swift b/XCode/Sources/HttpServerIO.swift index 05c636bf..b20dc3fc 100644 --- a/XCode/Sources/HttpServerIO.swift +++ b/XCode/Sources/HttpServerIO.swift @@ -130,7 +130,6 @@ open class HttpServerIO { } } catch { print("Failed to send response: \(error)") - break } if let session = response.socketSession() { delegate?.socketConnectionReceived(socket) diff --git a/XCode/Swifter.xcodeproj/project.pbxproj b/XCode/Swifter.xcodeproj/project.pbxproj index 3f051ff4..5f6035b9 100644 --- a/XCode/Swifter.xcodeproj/project.pbxproj +++ b/XCode/Swifter.xcodeproj/project.pbxproj @@ -629,7 +629,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1010; - LastUpgradeCheck = 1110; + LastUpgradeCheck = 1200; ORGANIZATIONNAME = "Damian Kołakowski"; TargetAttributes = { 043660C121FED34100497989 = { @@ -1078,6 +1078,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + CURRENT_PROJECT_VERSION = 1.5.0; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1087,6 +1088,7 @@ INFOPLIST_FILE = SwiftertvOS/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = pl.kolakowski.SwiftertvOS; PRODUCT_MODULE_NAME = Swifter; @@ -1107,6 +1109,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1.5.0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1116,6 +1119,7 @@ INFOPLIST_FILE = SwiftertvOS/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = pl.kolakowski.SwiftertvOS; PRODUCT_MODULE_NAME = Swifter; @@ -1135,6 +1139,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + CURRENT_PROJECT_VERSION = 1.5.0; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1143,8 +1148,9 @@ GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = SwifteriOS/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = pl.kolakowski.SwifteriOS; PRODUCT_NAME = Swifter; @@ -1162,6 +1168,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1.5.0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1170,8 +1177,9 @@ GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = SwifteriOS/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = pl.kolakowski.SwifteriOS; PRODUCT_NAME = Swifter; @@ -1189,6 +1197,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1.5.0; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1199,6 +1208,7 @@ INFOPLIST_FILE = SwifterMac/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = pl.kolakowski.SwifterMac; PRODUCT_NAME = Swifter; @@ -1217,6 +1227,7 @@ CODE_SIGN_IDENTITY = ""; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1.5.0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1227,6 +1238,7 @@ INFOPLIST_FILE = SwifterMac/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = pl.kolakowski.SwifterMac; PRODUCT_NAME = Swifter; @@ -1263,6 +1275,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -1270,7 +1283,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1.4.7; + CURRENT_PROJECT_VERSION = 1.5.0; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -1288,7 +1301,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MACOSX_DEPLOYMENT_TARGET = 10.10; METAL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; @@ -1325,6 +1338,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -1332,7 +1346,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 1.4.7; + CURRENT_PROJECT_VERSION = 1.5.0; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -1343,7 +1357,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MACOSX_DEPLOYMENT_TARGET = 10.10; METAL_ENABLE_DEBUG_INFO = NO; ONLY_ACTIVE_ARCH = NO; @@ -1361,9 +1375,11 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1.5.0; INFOPLIST_FILE = "$(SRCROOT)/SwifterSampleiOS/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 10.12; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = "pl.kolakowski.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_MODULE_NAME = "$(PRODUCT_NAME:c99extidentifier)"; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; @@ -1381,9 +1397,11 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1.5.0; INFOPLIST_FILE = "$(SRCROOT)/SwifterSampleiOS/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 10.12; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = "pl.kolakowski.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_MODULE_NAME = "$(PRODUCT_NAME:c99extidentifier)"; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; diff --git a/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterMac.xcscheme b/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterMac.xcscheme index b38be005..a4e8eaab 100644 --- a/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterMac.xcscheme +++ b/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterMac.xcscheme @@ -1,6 +1,6 @@ - - - - diff --git a/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterSampleOSX.xcscheme b/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterSampleOSX.xcscheme index 8c98e0a7..263f7ce2 100644 --- a/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterSampleOSX.xcscheme +++ b/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterSampleOSX.xcscheme @@ -1,6 +1,6 @@ - - - - diff --git a/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifteriOSTests.xcscheme b/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifteriOSTests.xcscheme index 6c2a4e20..2ab987b4 100644 --- a/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifteriOSTests.xcscheme +++ b/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifteriOSTests.xcscheme @@ -1,6 +1,6 @@ - - - - diff --git a/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwiftertvOSTests.xcscheme b/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwiftertvOSTests.xcscheme index 288dad81..9afd2e94 100644 --- a/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwiftertvOSTests.xcscheme +++ b/XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwiftertvOSTests.xcscheme @@ -1,6 +1,6 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion diff --git a/XCode/SwifterSampleiOS/Info.plist b/XCode/SwifterSampleiOS/Info.plist index 207d91c0..c9e91915 100644 --- a/XCode/SwifterSampleiOS/Info.plist +++ b/XCode/SwifterSampleiOS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion diff --git a/XCode/SwifterSampleiOS/ViewController.swift b/XCode/SwifterSampleiOS/ViewController.swift index 1f9aeed3..d8b73cd6 100644 --- a/XCode/SwifterSampleiOS/ViewController.swift +++ b/XCode/SwifterSampleiOS/ViewController.swift @@ -14,8 +14,10 @@ class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() do { + let port: in_port_t = 9080 let server = demoServer(Bundle.main.resourcePath!) - try server.start(9080) + try server.start(port) + print("Starting server at port \(port) 🚀.") self.server = server } catch { print("Server start error: \(error)") diff --git a/XCode/SwifteriOS/Info.plist b/XCode/SwifteriOS/Info.plist index 15925a4f..d8fd2997 100644 --- a/XCode/SwifteriOS/Info.plist +++ b/XCode/SwifteriOS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion diff --git a/XCode/SwiftertvOS/Info.plist b/XCode/SwiftertvOS/Info.plist index 15925a4f..d8fd2997 100644 --- a/XCode/SwiftertvOS/Info.plist +++ b/XCode/SwiftertvOS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion diff --git a/XCode/Tests/SwifterTestsHttpParser.swift b/XCode/Tests/SwifterTestsHttpParser.swift index 4fef4135..2b76b525 100644 --- a/XCode/Tests/SwifterTestsHttpParser.swift +++ b/XCode/Tests/SwifterTestsHttpParser.swift @@ -31,7 +31,7 @@ class SwifterTestsHttpParser: XCTestCase { _ = fcntl(fdRead, F_SETFL, O_NONBLOCK) // Push the content bytes into the write socket. - _ = content.withCString { stringPointer in + content.withCString { stringPointer in // Count will be either >=0 to indicate bytes written, or -1 // if the bytes will be written later (non-blocking). let count = write(fdWrite, stringPointer, content.lengthOfBytes(using: .utf8) + 1)