SwiftNIO 1.7.0 released!

I'm delighted to announce that the SwiftNIO project has just released SwiftNIO version 1.7.0. This release contains 19 changes from 7 contributors. Huge thanks to everyone who contributed!

The full release is available on the GitHub releases page, but the release notes are reproduced below:

Semver Minor

  • Added ChannelCore.removeHandlers to help implementers building custom channels do correct channel shutdown.
  • Added initial support for sending quiescing signals to Channels, and support for these signals to AcceptHandler and HTTPServerPipelineHandler.
  • Added executable product NIOPerformanceTester to run standardised NIO performance tests.
  • Made EventLoopFuture.hopTo(eventLoop:) public: while it was introduced in 1.3.0 it was accidentally left internal.

Semver Patch

  • Improved the resilience of ByteToMessageDecoder against re-entrant calls to decode.
  • Improved performance of writingSequences to ByteBuffer objects in cases where the standard library has fast-path access.
  • Fixed an issue where we could accidentally corrupt headers or URIs when parsing HTTP/1 messages due to re-entrant calls to decode.
  • Enhanced SocketChannel objects to register themselves with the Selector lazily, allowing them to more easily be used without needing to handle their registration and binding/connection very carefully.
  • Removed some warnings when compiling in Swift 4.2 mode.
  • Removed a String allocation when reading Connection headers to determine keep-alive state for HTTP/1.
  • Attempted to use http_parser's detected keep-alive status as much as possible in server applications, reducing the computation overhead of checking keep-alive status in most cases.
  • Removed some reliance on implicit importing of header files on Linux.
  • Fixed minor invalid pointer type assumption.
  • Fixed broken 32-bit support.
  • Miscellaneous tooling and code quality improvements. (#390, #394, #398, #403)