Skip to content

Releases: apple/swift-nio

SwiftNIO 1.2.2

27 Jun 17:38
Compare
Choose a tag to compare

Semver Patch

SwiftNIO 1.1.1

27 Jun 17:37
Compare
Choose a tag to compare

Semver Patch

SwiftNIO 1.0.1

27 Jun 17:37
Compare
Choose a tag to compare

Semver Patch

SwiftNIO 1.8.0

31 May 14:42
695afc5
Compare
Choose a tag to compare

Semver Minor

  • Added new ByteBufferView type, exposing portions of a ByteBuffer as a Collection<UInt8>. Added ByteBuffer.readableBytesView and ByteBuffer.viewBytes(at:length:) to obtain ByteBufferView objects. (#411)
  • Renamed MultiThreadedEventLoopGroup.init(numThreads:) to MultiThreadedEventLoopGroup.init(numberOfThreads:). Deprecated the old name. (#443)
  • Made HTTPRequestDecoder.init(leftOverBytesStrategy:) and enum RemoveAfterUpgradeStrategy public, which allows users creating custom HTTP pipelines to ensure that removing HTTPRequestDecoder after an upgrade was attempted does not cause unexpected bytes delivery. (#438)

Semver Patch

  • Conformed internal _UInt24 and _UInt56 structures to CustomStringConvertible. (#445)
  • Prevented crashes on macOS/iOS when under heavy load and remote peers close connections before we realise they connected. (#453)
  • Miscellaneous code cleanups and testing improvements. (#412, #441, #442, #447, #454)

SwiftNIO 1.7.2

24 May 13:07
Compare
Choose a tag to compare

Semver Patch

  • Removed some unnecessary EventLoopPromise allocations. (#437)
  • Fixed issues where removing a HTTPDecoder could lead to the pipeline consuming raw ByteBuffers, rather than decoded HTTP components. (#430)
  • Fixed an issue where datagram writes would be counted incorrectly, potentially leading to precondition failure. (#431)
  • Resolved a number of re-entrancy issues with HTTPDecoder. (#427)

SwiftNIO 1.7.1

22 May 16:24
Compare
Choose a tag to compare

Semver Patch

  • Fixed an issue where the bootstraps may not correctly invoke the channel initialisers on the event loop for the channel being initialised, causing substantial overhead when configuring the channel. (#424)
  • Fixed issues where Channel objects and their associated sockets created by the bootstraps may be leaked if channel registration failed for any reason. (#413)
  • Fixed issues where the Channel may be deallocated before the ChannelPipeline is cleaned up, causing crashes. (#415)
  • Fixed an issue where write promises were satisfied too early on EmbeddedChannel objects. (#421)
  • Fixed an issue where the WebSocketFrameDecoder would write a connection close frame but not flush it when a protocol error was encountered. (#421)
  • Worked around a compiler crash with type aliases in 4.2 snapshots. (#420)
  • Testing and documentation improvements. (#416, #419, #423, #425)

SwiftNIO 1.7.0

18 May 11:19
Compare
Choose a tag to compare

Semver Minor

  • Added ChannelCore.removeHandlers to help implementers building custom channels do correct channel shutdown. (#408)
  • Added initial support for sending quiescing signals to Channels, and support for these signals to AcceptHandler and HTTPServerPipelineHandler. (#399)
  • Added executable product NIOPerformanceTester to run standardised NIO performance tests. (#396)
  • 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. (#370)
  • Improved performance of writingSequences to ByteBuffer objects in cases where the standard library has fast-path access. (#391, #392)
  • Fixed an issue where we could accidentally corrupt headers or URIs when parsing HTTP/1 messages due to re-entrant calls to decode. (#385)
  • 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. (#388)
  • Removed some warnings when compiling in Swift 4.2 mode. (#407)
  • Removed a String allocation when reading Connection headers to determine keep-alive state for HTTP/1. (#402)
  • 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. (#299)
  • Removed some reliance on implicit importing of header files on Linux. (#400)
  • Fixed minor invalid pointer type assumption. (#397)
  • Fixed broken 32-bit support. (#383)
  • Miscellaneous tooling and code quality improvements. (#390, #394, #398, #403)

SwiftNIO 1.6.1

04 May 14:53
a5db2a6
Compare
Choose a tag to compare

Semver Patch

  • fix warning in new ByteBuffer test (#377)
  • fix one more register/bind race (#379)
  • fix Swift 4.2 compile error (#384)
  • don't crash if close is called when close fails (#387)
  • fix event loop hop between registration and activation of accepted channels (#389)

SwiftNIO 1.6.0

01 May 18:43
Compare
Choose a tag to compare

Semver Minor

  • Added new UnsafeEmbeddedAtomic type. (#373)
  • Added prepend, removeLast, and last to CircularBuffer. (#347)

Semver Patch

  • Removed warnings in Swift 4.2. (#374)
  • Added more license documentation for 3rd party modules. (#251)
  • Fixed an issue where connect promises could be leaked without being failed. (#337)
  • Reduced the number of memory allocations required to create an EventLoopFuture. (#373)
  • ByteBuffer's debug output is now compatible with being parsed by xxd. (#367)
  • Fixed a bug where WebSocket frames could be delivered multiple times on connection closure. (#368)
  • ByteBuffer.discardReadBytes no longer triggers a memory copy if the buffer was fully consumed. (#363)
  • Improved the ability of the compiler to specialise ByteBuffer copies of contiguous data types. (#360)
  • Worked around an optimiser bug that caused unnecessary heap allocations when writing StaticString objects into ByteBuffers. (#354)
  • Added dtrace scripts for debugging memory allocations. (#352)
  • Greatly reduced the overhead of passing HTTPRequestHead and HTTPResponseHead around the ChannelPipeline by placing them into a CoW heap-allocated box. (#351)
  • Shrunk the size of ByteBuffer and FileRegion to fewer than 3 words, ensuring that enums that wrap these types can still fit into an existential container without triggering heap allocation. (#349)
  • Fixed a bug where the HTTPServerPipelineHandler would incorrectly deliver message parts out of order. (#348)
  • Fixed a bug where Channel.localAddress and Channel.remoteAddress would be nil during channelInactive and handlerRemoved callbacks. (#346)
  • Improved the performance of HTTPHeaders[canonicalForm:] in the case where no headers with that header name exist. (#344)
  • Miscellaneous code & testing improvements. (#335, #338, #353, #356, #357, #358, #361, #362, #365, #366, #371, #375, #376)
  • Documentation improvements. (#359)

SwiftNIO 1.5.1

20 Apr 15:23
902b18d
Compare
Choose a tag to compare

Semver Patch

  • Fixed a bug where we'd accidentally deliver events for unrelated file descriptors. (#341)
  • Fixed the sample web socket server. (#340)
  • Better debug descriptions for HTTPRequestHead, HTTPResponseHead, and HTTPVersion. (#339)