Event-driven network application framework for high performance protocol servers & clients, non-blocking.
The SwiftNIO team are currently in the process of making SwiftNIO warning free under strict concurrency checking.
If you experience new Sendable
related warnings that you can't work around
then please file an issue.
execute()
and enqueue()
tasks separately from scheduled tasks. (#2645)NIOIPProtocol
to Sendable
(#2655)Sendable
annotations to NIOCore
(#2656)syncOperations
in more places (#2661)RENAME_*
macros (#2643, patch credit to @Austinpayne)@unchecked Sendable
conformance from ChannelOptions.Storage
(#2638)assumeIsolated()
methods on EventLoop
, EventLoopPromise
and EventLoopFuture
(#2657)NIOThreadPool
work queue (#2669)SchedulingBenchmark
(#2650)scripts/analyze_performance_results.rb
(#2651)This release includes a new module, NIOFileSystem
, for asynchronously interacting with the filesystem. The module isn't yet considered public API and is therefore available via the _NIOFileSystem
product. We plan to stabilise the API soon and welcome feedback in the meantime. You can learn more about NIOFileSystem
by reading the documentation.
async
API for NonBlockingFileIO
(#2576, patch credit to @adam-fowler)MTELG.singleton
as Swift Concurrency executor (#2564)IOCTL_VM_SOCKETS_GET_LOCAL_CID
(#2588)NIOAsyncWriterSinkDelegate._didSuspend
hook for testing (#2597)confstr
on Android (#2627)SWIFT_VERSION
environment variable to resolve to the correct benchmarks thresholds path (#2613)NIOAsyncChannel
allocation benchmarks (#2622)executeThenClose
to NIOAsyncChannel
and deprecate deinit based closing methods & inits (#2589, #2592)CNIOSHA1
missing an #include
for the BYTE_ORDER
define. (#2584)NIOAsyncWriter
+ NIOAsyncChannel
(#2587)NIOAsyncChannelOutboundWriterHandler
(#2580)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.
NIOAsyncChannel
(#2539)NIOAsyncChannel
and new bootstrap methods (#2548)NIOAsyncChannel
benchmark (#2536)HTTPServerUpgrader
and WebSocketServerUpgrader
(#2517)HTTPClientUpgrader
and WebSocketClientUpgrader
(#2526)The following were breaking changes to the SPI.
ProtocolNegotiationHandler
protocol (#2519)NIOAsyncChannel
a struct (#2528)NIOProtocolNegotiationResult
(#2554)ExecutorJob
s on EventLoop
s (#2538)NIOHTTP1TestServer
(#2563)NIOPipeBootstrap
(#2560)CNIOSHA1.h
to support C++ interoperability (#2523, patch credit to @yaglo)TimeAmount
(#2543, patch credit to @LorenzoFritzsch)HTTPServerPipelineHandler
(#2550)NIOPipeBoostrap
(#2530)NIOAsyncWriterSinkDelegate
outside of the lock (#2547)Sendable
conformance for Lock
(#2556)EventLoop
s (#2562)README.md
(#2535)readFileSize
explicitly (#2572)package-benchmark
(#2534)TCPThroughputBenchmark
(#2537)measureRunTime
use DispatchTime
(#2545)testRemovesAllHTTPRelatedHandlersAfterUpgrade
test (#2552)waitForUpgraderToBeRemoved
availability guard (#2559)ByteBuffer.hexDump(format:)
(#2475, patch credit to @natikgadzhi)NIOThreadPoolError
public (#2503, patch credit to @omochi)ByteBuffer
Codable (#2509, patch credit to @natikgadzhi)EventLoopFuture/Promise
: only Sendable
if Value
is Sendable
(#2496)DatagramBootstrap
(#2516)CNIOLLHTTP
to latest nodejs/llhttp
(#2512)ByteBuffer
(#2499, patch credit to @natikgadzhi)EventLoop
s as custom actor executor (#2388)EventLoop
singletons (#2471)System.coreCount
aware of cgroup2 (#2394)channelActive
(#2486)waitForFinalResult()
methods and provide an ELF
convenience (#2483)NIOAsyncChannel
(#2488)finish
method on test stream (#2493)NIOTypedApplicationProtocolNegotiationHandler
(#2489)NIOAsyncChannel.Configuration
conform to Sendable
(#2466)SocketAddressError
(cf. fatalError) in SocketAddress.convert for unknown address family (#2477)NIOAsyncChannel
(#2464)NIOPipeBootstrap
(#2458)NIORawSocketBootstrap
(#2460)XCTAsyncTest
usage (#2461)Package.swift
(#2462)