mirror of
https://github.com/apple/swift-nio-extras.git
synced 2025-05-15 09:22:38 +08:00
Raise minimum supported Swift version from 5.4 to 5.5
Motivation: SwiftNIO periodically drops support for older Swift versions. Now that 5.7 has been released, 5.4 will be dropped. Modifications: - Remove 5.4 specific Package.swift and docker-compose - Update the 5.7 docker-compose to use the released 5.7 and move from focal (2004) to jammy (2204) - Update docs Results: Minimum Swift version is 5.5
This commit is contained in:
parent
6c84d24775
commit
dcb8cf89d4
@ -119,7 +119,7 @@ let package = Package(
|
|||||||
.library(name: "NIOHTTPCompression", targets: ["NIOHTTPCompression"]),
|
.library(name: "NIOHTTPCompression", targets: ["NIOHTTPCompression"]),
|
||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
.package(url: "https://github.com/apple/swift-nio.git", from: "2.34.0"),
|
.package(url: "https://github.com/apple/swift-nio.git", from: "2.42.0"),
|
||||||
.package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"),
|
.package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"),
|
||||||
],
|
],
|
||||||
targets: targets
|
targets: targets
|
||||||
|
@ -1,125 +0,0 @@
|
|||||||
// swift-tools-version:5.4
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
//
|
|
||||||
// This source file is part of the SwiftNIO open source project
|
|
||||||
//
|
|
||||||
// Copyright (c) 2017-2022 Apple Inc. and the SwiftNIO project authors
|
|
||||||
// Licensed under Apache License v2.0
|
|
||||||
//
|
|
||||||
// See LICENSE.txt for license information
|
|
||||||
// See CONTRIBUTORS.txt for the list of SwiftNIO project authors
|
|
||||||
//
|
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
import PackageDescription
|
|
||||||
|
|
||||||
var targets: [PackageDescription.Target] = [
|
|
||||||
.target(
|
|
||||||
name: "NIOExtras",
|
|
||||||
dependencies: [
|
|
||||||
.product(name: "NIO", package: "swift-nio"),
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
]),
|
|
||||||
.target(
|
|
||||||
name: "NIOHTTPCompression",
|
|
||||||
dependencies: [
|
|
||||||
"CNIOExtrasZlib",
|
|
||||||
.product(name: "NIO", package: "swift-nio"),
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
.product(name: "NIOHTTP1", package: "swift-nio"),
|
|
||||||
]),
|
|
||||||
.executableTarget(
|
|
||||||
name: "HTTPServerWithQuiescingDemo",
|
|
||||||
dependencies: [
|
|
||||||
"NIOExtras",
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
.product(name: "NIOPosix", package: "swift-nio"),
|
|
||||||
.product(name: "NIOHTTP1", package: "swift-nio"),
|
|
||||||
]),
|
|
||||||
.executableTarget(
|
|
||||||
name: "NIOWritePCAPDemo",
|
|
||||||
dependencies: [
|
|
||||||
"NIOExtras",
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
.product(name: "NIOPosix", package: "swift-nio"),
|
|
||||||
.product(name: "NIOHTTP1", package: "swift-nio"),
|
|
||||||
]),
|
|
||||||
.executableTarget(
|
|
||||||
name: "NIOWritePartialPCAPDemo",
|
|
||||||
dependencies: [
|
|
||||||
"NIOExtras",
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
.product(name: "NIOPosix", package: "swift-nio"),
|
|
||||||
.product(name: "NIOHTTP1", package: "swift-nio"),
|
|
||||||
]),
|
|
||||||
.executableTarget(
|
|
||||||
name: "NIOExtrasPerformanceTester",
|
|
||||||
dependencies: [
|
|
||||||
"NIOExtras",
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
.product(name: "NIOPosix", package: "swift-nio"),
|
|
||||||
.product(name: "NIOEmbedded", package: "swift-nio"),
|
|
||||||
.product(name: "NIOHTTP1", package: "swift-nio"),
|
|
||||||
]),
|
|
||||||
.target(
|
|
||||||
name: "NIOSOCKS",
|
|
||||||
dependencies: [
|
|
||||||
.product(name: "NIO", package: "swift-nio"),
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
]),
|
|
||||||
.executableTarget(
|
|
||||||
name: "NIOSOCKSClient",
|
|
||||||
dependencies: [
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
.product(name: "NIOPosix", package: "swift-nio"),
|
|
||||||
"NIOSOCKS"
|
|
||||||
]),
|
|
||||||
.target(
|
|
||||||
name: "CNIOExtrasZlib",
|
|
||||||
dependencies: [],
|
|
||||||
linkerSettings: [
|
|
||||||
.linkedLibrary("z")
|
|
||||||
]),
|
|
||||||
.testTarget(
|
|
||||||
name: "NIOExtrasTests",
|
|
||||||
dependencies: [
|
|
||||||
"NIOExtras",
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
.product(name: "NIOEmbedded", package: "swift-nio"),
|
|
||||||
.product(name: "NIOPosix", package: "swift-nio"),
|
|
||||||
.product(name: "NIOTestUtils", package: "swift-nio"),
|
|
||||||
.product(name: "NIOConcurrencyHelpers", package: "swift-nio"),
|
|
||||||
]),
|
|
||||||
.testTarget(
|
|
||||||
name: "NIOHTTPCompressionTests",
|
|
||||||
dependencies: [
|
|
||||||
"CNIOExtrasZlib",
|
|
||||||
"NIOHTTPCompression",
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
.product(name: "NIOEmbedded", package: "swift-nio"),
|
|
||||||
.product(name: "NIOHTTP1", package: "swift-nio"),
|
|
||||||
.product(name: "NIOConcurrencyHelpers", package: "swift-nio"),
|
|
||||||
]),
|
|
||||||
.testTarget(
|
|
||||||
name: "NIOSOCKSTests",
|
|
||||||
dependencies: [
|
|
||||||
"NIOSOCKS",
|
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
|
||||||
.product(name: "NIOEmbedded", package: "swift-nio"),
|
|
||||||
])
|
|
||||||
]
|
|
||||||
|
|
||||||
let package = Package(
|
|
||||||
name: "swift-nio-extras",
|
|
||||||
products: [
|
|
||||||
.library(name: "NIOExtras", targets: ["NIOExtras"]),
|
|
||||||
.library(name: "NIOSOCKS", targets: ["NIOSOCKS"]),
|
|
||||||
.library(name: "NIOHTTPCompression", targets: ["NIOHTTPCompression"]),
|
|
||||||
],
|
|
||||||
dependencies: [
|
|
||||||
.package(url: "https://github.com/apple/swift-nio.git", from: "2.34.0"),
|
|
||||||
],
|
|
||||||
targets: targets
|
|
||||||
)
|
|
11
README.md
11
README.md
@ -14,7 +14,7 @@ All code will go through code review like in the other repositories related to t
|
|||||||
`swift-nio-extras` part of the SwiftNIO 2 family of repositories and depends on the following:
|
`swift-nio-extras` part of the SwiftNIO 2 family of repositories and depends on the following:
|
||||||
|
|
||||||
- [`swift-nio`](https://github.com/apple/swift-nio), version 2.30.0 or better.
|
- [`swift-nio`](https://github.com/apple/swift-nio), version 2.30.0 or better.
|
||||||
- Swift 5.4.
|
- Swift 5.5.
|
||||||
- `zlib` and its development headers installed on the system. But don't worry, you'll find `zlib` on pretty much any UNIX system that can compile any sort of code.
|
- `zlib` and its development headers installed on the system. But don't worry, you'll find `zlib` on pretty much any UNIX system that can compile any sort of code.
|
||||||
|
|
||||||
To depend on `swift-nio-extras`, put the following in the `dependencies` of your `Package.swift`:
|
To depend on `swift-nio-extras`, put the following in the `dependencies` of your `Package.swift`:
|
||||||
@ -25,7 +25,14 @@ To depend on `swift-nio-extras`, put the following in the `dependencies` of your
|
|||||||
|
|
||||||
### Support for older Swift versions
|
### Support for older Swift versions
|
||||||
|
|
||||||
Earlier versions of SwiftNIO (2.39.x and lower) and SwiftNIOExtras (1.10.x and lower) supported Swift 5.2 and 5.3, SwiftNIO (2.29.x and lower) and SwiftNIOExtras (1.9.x and lower) supported Swift 5.0 and 5.1.
|
The most recent versions of SwiftNIO Extras support Swift 5.5 and newer. The minimum Swift version supported by SwiftNIO Extras releases are detailed below:
|
||||||
|
|
||||||
|
SwiftNIO Extras | Minimum Swift Version
|
||||||
|
--------------------|----------------------
|
||||||
|
`1.0.0 ..< 1.10.0` | 5.0
|
||||||
|
`1.10.0 ..< 1.11.0` | 5.2
|
||||||
|
`1.11.0 ..< 1.14.0` | 5.4
|
||||||
|
`1.14.0 ...` | 5.5
|
||||||
|
|
||||||
On the [`nio-extras-0.1`](https://github.com/apple/swift-nio-extras/tree/nio-extras-0.1) branch, you can find the `swift-nio-extras` version for the SwiftNIO 1 family. It requires Swift 4.1 or better.
|
On the [`nio-extras-0.1`](https://github.com/apple/swift-nio-extras/tree/nio-extras-0.1) branch, you can find the `swift-nio-extras` version for the SwiftNIO 1 family. It requires Swift 4.1 or better.
|
||||||
|
|
||||||
|
@ -546,7 +546,7 @@ class HTTPResponseCompressorTest: XCTestCase {
|
|||||||
XCTAssertNoThrow(try channel.pipeline.removeHandler(name: "compressor").wait())
|
XCTAssertNoThrow(try channel.pipeline.removeHandler(name: "compressor").wait())
|
||||||
XCTAssertNoThrow(try writePromise.futureResult.wait())
|
XCTAssertNoThrow(try writePromise.futureResult.wait())
|
||||||
}
|
}
|
||||||
|
|
||||||
func testChunkedGzipResponseProducesCorrectNumberOfWrites() throws {
|
func testChunkedGzipResponseProducesCorrectNumberOfWrites() throws {
|
||||||
let channel = try compressionChannel()
|
let channel = try compressionChannel()
|
||||||
try sendRequest(acceptEncoding: "gzip", channel: channel)
|
try sendRequest(acceptEncoding: "gzip", channel: channel)
|
||||||
@ -558,14 +558,14 @@ class HTTPResponseCompressorTest: XCTestCase {
|
|||||||
channel.write(NIOAny(HTTPServerResponsePart.head(head)), promise: nil)
|
channel.write(NIOAny(HTTPServerResponsePart.head(head)), promise: nil)
|
||||||
channel.writeAndFlush(NIOAny(HTTPServerResponsePart.body(.byteBuffer(bodyBuffer))), promise: nil)
|
channel.writeAndFlush(NIOAny(HTTPServerResponsePart.body(.byteBuffer(bodyBuffer))), promise: nil)
|
||||||
channel.writeAndFlush(NIOAny(HTTPServerResponsePart.end(nil)), promise: finalPromise)
|
channel.writeAndFlush(NIOAny(HTTPServerResponsePart.end(nil)), promise: finalPromise)
|
||||||
|
|
||||||
try finalPromise.futureResult.wait()
|
try finalPromise.futureResult.wait()
|
||||||
|
|
||||||
var writeCount = 0
|
var writeCount = 0
|
||||||
while try channel.readOutbound(as: ByteBuffer.self) != nil {
|
while try channel.readOutbound(as: ByteBuffer.self) != nil {
|
||||||
writeCount += 1
|
writeCount += 1
|
||||||
}
|
}
|
||||||
|
|
||||||
// Expected number of emitted writes in the chunked response is 8:
|
// Expected number of emitted writes in the chunked response is 8:
|
||||||
// 1. HTTP response header
|
// 1. HTTP response header
|
||||||
// 2. First chunk length
|
// 2. First chunk length
|
||||||
@ -673,7 +673,7 @@ extension EventLoopFuture {
|
|||||||
}
|
}
|
||||||
return fulfilled
|
return fulfilled
|
||||||
} else {
|
} else {
|
||||||
let lock = Lock()
|
let lock = NIOLock()
|
||||||
let group = DispatchGroup()
|
let group = DispatchGroup()
|
||||||
var fulfilled = false // protected by lock
|
var fulfilled = false // protected by lock
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ARG swift_version=5.4
|
ARG swift_version=5.7
|
||||||
ARG ubuntu_version=focal
|
ARG ubuntu_version=focal
|
||||||
ARG base_image=swift:$swift_version-$ubuntu_version
|
ARG base_image=swift:$swift_version-$ubuntu_version
|
||||||
FROM $base_image
|
FROM $base_image
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
version: "3"
|
|
||||||
|
|
||||||
services:
|
|
||||||
|
|
||||||
runtime-setup:
|
|
||||||
image: swift-nio-extras:18.04-5.4
|
|
||||||
build:
|
|
||||||
args:
|
|
||||||
base_image: "swift:5.4-bionic"
|
|
||||||
ubuntu_version: "bionic"
|
|
||||||
swift_version: "5.4"
|
|
||||||
|
|
||||||
test:
|
|
||||||
image: swift-nio-extras:18.04-5.4
|
|
||||||
command: /bin/bash -xcl "cat /etc/lsb-release && swift -version && swift test -Xswiftc -warnings-as-errors $${SANITIZER_ARG-}"
|
|
||||||
|
|
||||||
shell:
|
|
||||||
image: swift-nio-extras:18.04-5.4
|
|
@ -1,15 +0,0 @@
|
|||||||
version: "3"
|
|
||||||
|
|
||||||
services:
|
|
||||||
|
|
||||||
runtime-setup:
|
|
||||||
image: swift-nio-extras:20.04-5.7
|
|
||||||
build:
|
|
||||||
args:
|
|
||||||
base_image: "swiftlang/swift:nightly-5.7-focal"
|
|
||||||
|
|
||||||
test:
|
|
||||||
image: swift-nio-extras:20.04-5.7
|
|
||||||
|
|
||||||
shell:
|
|
||||||
image: swift-nio-extras:20.04-5.7
|
|
16
docker/docker-compose.2204.57.yaml
Normal file
16
docker/docker-compose.2204.57.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
runtime-setup:
|
||||||
|
image: swift-nio-extras:22.04-5.7
|
||||||
|
build:
|
||||||
|
args:
|
||||||
|
ubuntu_version: "jammy"
|
||||||
|
swift_version: "5.7"
|
||||||
|
|
||||||
|
test:
|
||||||
|
image: swift-nio-extras:22.04-5.7
|
||||||
|
|
||||||
|
shell:
|
||||||
|
image: swift-nio-extras:22.04-5.7
|
Loading…
x
Reference in New Issue
Block a user