Releases: apple/swift-nio
Releases · apple/swift-nio
SwiftNIO 2.61.0
SemVer Minor
- Add async version of NIOThreadPool.runIfActive (#2566, patch credit to @adam-fowler)
- 🚨Breaking change 🚨 Back out new typed HTTP protocol upgrader (#2579)
- We had to back out the typed HTTP protocol upgrade APIs since they were causing a runtime crash for our users. This is allowed under SemVer rules even if it is a breaking change. Once the compiler bug has been fixed we will try to land the new APIs again.
SemVer Patch
- Fix exclusive access violation in
NIOAsyncChannelOutboundWriterHandler
(#2580)
Other Changes
- Fix concurrency doc APIs (#2575)
SwiftNIO 2.60.0
New async APIs (former AsyncChannel SPI)
With this release we are stabilizing the AsyncChannel
SPI and promote it to API. The following changes have been made to finalize the new APIs.
General and performance changes
- Improve performance of
NIOAsyncChannel
(#2539) - Remove SPI from
NIOAsyncChannel
and new bootstrap methods (#2548) - Add docs for the async NIO APIs (#2549)
- Update the concurrency documentation (#2529)
- Add
NIOAsyncChannel
benchmark (#2536) - Add support for async VSock bootstrap methods (#2561)
Typed HTTP upgrading
- Introduce new typed
HTTPServerUpgrader
andWebSocketServerUpgrader
(#2517) - Introduce new typed
HTTPClientUpgrader
andWebSocketClientUpgrader
(#2526)
Breaking
The following were breaking changes to the SPI.
- 🚨Remove
ProtocolNegotiationHandler
protocol (#2519) - 🚨Align back pressure naming (#2527)
- 🚨Make
NIOAsyncChannel
a struct (#2528) - 🚨Remove
NIOProtocolNegotiationResult
(#2554)
SemVer Minor
- Add jitter support to recurring tasks (#2542, patch credit to @LorenzoFritzsch)
- Bump minimum Swift version to 5.7 (#2524)
- Add customization point for scheduling
ExecutorJob
s onEventLoop
s (#2538) - Support disabling body aggregation in
NIOHTTP1TestServer
(#2563) - Add support for unidirectional
NIOPipeBootstrap
(#2560)
SemVer Patch
- Fix failed c++ compile of CNIOAtomics.h (#2518, patch credit to @saintstack)
- Fix
CNIOSHA1.h
to support C++ interoperability (#2523, patch credit to @yaglo) - Fix overflow in
TimeAmount
(#2543, patch credit to @LorenzoFritzsch) - Avoid terminating when a precondition is not met in
HTTPServerPipelineHandler
(#2550) - Fix Sendable warning in
NIOPipeBoostrap
(#2530) - Tolerate empty HTTP response body parts (#2531)
- Call
NIOAsyncWriterSinkDelegate
outside of the lock (#2547) - Fix test availability for tests (#2533)
- Fix
Sendable
conformance forLock
(#2556) - Remove continuation resumption inside locks (#2558)
- NonBlockingFileIO: tolerate chunk handlers from other
EventLoop
s (#2562) - Mark retroactive conformances appropriately. (#2569)
Other Changes
- Fix missing whitespace in
README.md
(#2535) - Fix flakiness in testDelayedUpgradeBehaviour (#2557)
- Add autogenerated files from VSCode to .gitignore (#2567, patch credit to @adam-fowler)
- Mention file length in bytes in
readFileSize
explicitly (#2572) - Adopt
package-benchmark
(#2534) - Fix thread-safety issues in
TCPThroughputBenchmark
(#2537) - perf tests: reset ByteBuffer indices after every iteration (#2544)
measureRunTime
useDispatchTime
(#2545)- Fix flaky
testRemovesAllHTTPRelatedHandlersAfterUpgrade
test (#2552) waitForUpgraderToBeRemoved
availability guard (#2559)
SwiftNIO 2.59.0
SemVer Minor
- Added
ByteBuffer.hexDump(format:)
(#2475, patch credit to @natikgadzhi) - Make the initializers of
NIOThreadPoolError
public (#2503, patch credit to @omochi) - Make
ByteBuffer
Codable (#2509, patch credit to @natikgadzhi) EventLoopFuture/Promise
: onlySendable
ifValue
isSendable
(#2496)- HTTP1: Support users opting-out of us setting framing headers. (#2508)
- Support for custom protocols in
DatagramBootstrap
(#2516)
SemVer Patch
- HTTP1: Simplify header separator and crlf (#2513, patch credit to @alex-taffe)
- Update
CNIOLLHTTP
to latestnodejs/llhttp
(#2512)
Other Changes
- Docs: explain the basic safe usage of
ByteBuffer
(#2499, patch credit to @natikgadzhi) - Match casing of reference links to the casing of the actual referenced declaration/module (#2500, patch credit to @tayloraswift)
- Update nightly allocation limits (#2502)
SwiftNIO 2.58.0
SemVer Minor
- Add support for using
EventLoop
s as custom actor executor (#2388) - Add new
EventLoop
singletons (#2471) - Add bootstrap APIs for VSOCK sockets (#2479)
SemVer Patch
- Fix huge compile time of setUUIDBytes (#2482, patch credit to @sidepelican)
- Get Android building again after #2479 (#2490, patch credit to @finagolfin)
- Make
System.coreCount
aware of cgroup2 (#2394) - Don't lose or delay writes before
channelActive
(#2486)
SPI(AsyncChannel) changes
- Rename the
waitForFinalResult()
methods and provide anELF
convenience (#2483) - Add testing interfaces for the stream and writer of the
NIOAsyncChannel
(#2488) - Provide throwing
finish
method on test stream (#2493) - Fix leaked promise in
NIOTypedApplicationProtocolNegotiationHandler
(#2489) - Add async TCP echo example (#2463)
- Avoid using deinit to fulfil the protocol negotiation promise (#2497)
Other Changes
- Correct malformed codelink (#2484, patch credit to @tayloraswift)
- Update contributor email address (#2481)
- Fix 5.9 and nightly allocation limits (#2485) (#2487)
SwiftNIO 2.57.0
SwiftNIO 2.56.0
SwiftNIO 2.55.0
SemVer Minor
- Make
NIO[Throwing]AsyncSequenceProducer.Source
Sendable
(#2459)
SemVer Patch
- Add support for Musl libc (#2449)
- Close Channel when input & output are closed (#2450)
- Correct a few Musl additions from #2449 for Android, plus error if libc not found (#2451, patch credit to @finagolfin)
- Use #if canImport(Darwin) where possible (#2446)
Other Changes
- Update RediStack URL in README.md (#2445)
- Allow opt-out of PII in CONTRIBUTORS.txt (#2453, patch credit to @therealbnut)
- Update mailmap to unify Gwynne's email addresses (#2454, patch credit to @gwynne)
- Fix several minor typos in comments found in various files (#2455, patch credit to @gwynne)
- Fix last remaining test on Android (#2457, patch credit to @finagolfin)
- Adopt the Swift CoC (#2440)
- Updated allocation counters in 5.9 (#2456)
SPI(AsyncChannel) changes
SwiftNIO 2.54.0
SemVer Minor
EmbeddedChannel
:getOption(ChannelOptions.allowRemoteHalfClosure)
should notfatalError
(#2429)
SemVer Patch
- Pooled control message storage. (#2422, patch credit to @ser-0xff)
- NIOPOSIX happy eyeballs now hops to the connection event loop when using a custom resolver to avoid data races (#2436)