Releases: apple/swift-nio
Releases · apple/swift-nio
SwiftNIO 1.4.1
Semver Patch
- Restore unary initializer for
HTTPHeaders
. (#301)
SwiftNIO 1.4.0
Semver Minor
- More strictly enforced channel lifecycle tracking. This will cause new errors to be thrown if channels are mishandled by the NIO core. (#220)
- Added
EventLoopFuture.fold
. (#269) - Added
EventLoopFuture.reduce
andEventLoopFuture.reduce(into:)
. (#240) - Added a HTTP server handler that can send 400 errors on HTTP parser errors. (#268)
- Renamed
HTTPHeaders.getCanonicalForm
toHTTPHeaders[canonicalForm:]
, deprecated the old interface. (#293) - Made several
ByteBuffer
generic methods inlinable. (#266) - Implemented lazy HTTP header parsing. Users, please note that this may change the casing of your HTTP headers. (#291)
Semver Patch
- Changed graceful event loop shutdown to properly wait for channel shutdown. (#231)
- Removed needless availability check restricting use on older macOS platforms. (#233)
- Reduced locking overhead in the
EventLoop
. (#235) - Removed overhead in
SocketChannel
,ServerSocketChannel
,DatagramChannel
, andPendingDatagramWriteManager
relating to the removedflush
promises. (#234) - Removed unnecessary promise allocation in
Selector.closeGently
. (#237) - Cleaned up ordering in
EmbeddedChannel
connect and close with respect to promises andchannelActive
/channelInactive
. (#241) - Improved
PriorityQueue
andHeap
performance by bringing them into theNIO
module. (#245) - Reduced the duplication of results in
getaddrinfo
lookups. (#221) - Reduced storage overhead of
ChannelHandlerContext
. (#247) - Avoided re-arming
timerfd
on Linux when doing so was not necessary. (#264) - Improved performance of allocation operations in
ByteBuffer
. (#267) - Improved performance and reduced allocation in
HTTPDecoder
. (#275) - Added WebSocket documentation. (#276)
- Enhanced
HTTPDecoder
to reject HTTP 0.9 and any misleading HTTP/1.1-style protocol that claims a HTTP/2 or higher version. (#283) - Fixed some TSAN issues.
- Reduced the number of
read
calls in most cases. (#296) - Improved the performance of outbound channel operations. (#297)
- Cleaned up typos and other code. (#230, #236, #259, #273)
SwiftNIO 1.3.1
Semver Patch
- Fixed build issues on Swift 4.1 snapshots. (#229)
SwiftNIO 1.3.0
Semver Minor
- Gave
HTTPResponseStatus
a public initializer that can take a numerical status code and optional reason phrase and create an appropriateenum
member, instead of forcing users to use.custom
. (#158) - Added
EventLoopFuture.hopTo(eventLoop:)
to simplify code that needs to ensure callbacks dispatch to a specific thread. (#177)
Semver Patch
- Suppressed compiler warnings that were emitted in release mode. (#179)
- Fixed compilation on iOS. (#180)
- Fixed possible infinite loop when shutting down event loops. (#188)
- Brought
EmbeddedEventLoop
's task scheduling behaviour closer to that ofMultiThreadedEventLoop
. (#189) - Fixed ordering issues between promises and
fire*
methods. (#181) - Fixed failure to expose backwards-compatibility shim for HTTP header iterator type. (#194)
- Reduced memory allocation during task dispatch on
MultiThreadedEventLoopGroup
. (#192) - Fixed ordering issues where
fireChannelRead
could dispatch beforefireChannelActive
. (#195, #204) - Fixed issue where Happy Eyeballs connection state machine would
fatalError
under high load. (#191) - Correctly fail the futures returned from
Channel.getOption
andchannel.setOption
when the channel is closed. (#198) - Improved error message when a non-synchronous
connect
fails. (#203) - Correctly make the channel active when
connect
succeeds synchronously. (#205) - Better diagnostic logging when leaking an
EventLoopPromise
allocated fromChannelOutboundInvoker
. (#208) - Don't crash when a selectable is unregistered from a selector while there are pending select events for that selectable. (#210)
- Don't retry
close
when the syscall returns withEINTR
. (#217) - Work around performance penalty from SR7242. (#223)
- Prevent users getting access to or removing
HeadChannelHandler
andTailChannelHandler
. (#225) - Correctly fail
EventLoopPromise
for writes onServerSocketChannel
instead of crashing. (#226) - Miscellaneous documentation and code style improvements (#207, #212, #219, #197, #142, #193, #87, #190, #183)