I'm delighted to announce that the SwiftNIO project has just released SwiftNIO version 1.9.0. This release contains 34 changes from 14 contributors, including 7 first-time contributors. Huge thanks to everyone who contributed! The full release notes are available on GitHub, but are reproduced below:
Semver Minor
- Added an API for scheduling repeated tasks on an
EventLoop
, viaEventLoop.scheduleRepeatedTask
, as well as a newRepeatedTask
type. - Made
CircularBuffer
conform toBidirectionalCollection
,RandomAccessCollection
, andRangeReplaceableCollection
, substantially increasing its utility. - Split error-handling for
WebSocketFrameDecoder
out to a newChannelHandler
,WebSocketProtocolErrorHandler
. Allowed users to disable the default error handling to implement their own. - Added support for non-blocking file writes with
NonBlockingFileIO.write
. - Added support for iterating over all
EventLoop
s in anEventLoopGroup
. - Deprecated
ByteBuffer.changeCapacity
, replaced it withByteBuffer.reserveCapacity
. Improved performance. - Added two typealiases for internal data structures to the public declaration of
ByteBuffer
,_Index
and_Capacity
. These are public to work around a limitation of older Swift 4 releases, and should not be used from user code.
Semver Patch
- Silenced some warnings.
- Prevented 100% CPU hot-looping on macOS when using
autoRead
false
. - Fixed rare crash in example WebSocket server.
- Fixed an issue where creating a
ByteBufferView
over the entire storage of aByteBuffer
would cause a crash. - Fixed the example HTTP server to correctly respond to multiple pipelined dynamic requests on the same connection.
- Changed the
docker-compose
configuration to line-buffer output to the console. - Fixed logical processor enumeration to use faster, cross-platform API.
- Improvements to code internals on 32-bit platforms.
- Correctly handle
ContiguousCollection
implementations that provide pointers that are larger than the number of elements they report with.count
. - Improved
HTTPServerUpgradeHandler
to treat protocol upgrade names case-insensitively. - Fixed a bug where we could inadvertently produce no-op events to
SelectableEventLoop
s instead of ignoring them. - Forward debugging information when chaining
Future
s usingmapIfError
. - Updated
http_parser
. - Removed unnecessary memory binding in
Thread
. - Documentation improvements.
- Testing improvements.
- Minor code cleanups.