Skip to content

Releases: apple/swift-nio

SwiftNIO 2.56.0

11 Jul 13:44
5f54289
Compare
Choose a tag to compare

SPI(AsyncChannel) changes

  • 🚨Breaking change: Add configuration for NIOAsyncChannel (#2464)
  • Async support for NIOPipeBootstrap (#2458)
  • Async support for NIORawSocketBootstrap (#2460)

Other Changes

  • Remove XCTAsyncTest usage (#2461)
  • Restructure Package.swift (#2462)

SwiftNIO 2.55.0

05 Jul 12:31
324bc65
Compare
Choose a tag to compare

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

  • Add NIOAsyncChannel based connect methods to ClientBootstrap (#2437)
  • Add NIOAsyncChannel based connect and bind methods to DatagramBootstrap (#2439)
  • 🚨Breaking change: Align ServerBootstrap bind methods with the initializer style (#2443)

SwiftNIO 2.54.0

31 May 14:42
6213ba7
Compare
Choose a tag to compare

SemVer Minor

  • EmbeddedChannel: getOption(ChannelOptions.allowRemoteHalfClosure) should not fatalError (#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)

Other Changes

  • Add tests for WebSocketMaskingKey.random() (#2433, patch credit to @gwynne)
  • Add narrative documentation for NIO's concurrency bridges (#2423)
  • Include relevant versions (kernel & Swift) in test output (#2425)
  • Update update-alloc-limits-... script (#2430)
  • Fix flaky test in NIOAsyncWriter (#2431)

SwiftNIO 2.53.0

09 May 13:36
2d8e6ca
Compare
Choose a tag to compare

SemVer Minor

  • addition of assertSuccess() and assertFailure() on EventLoopFuture (#2417, patch credit to @dkz2)

SemVer Patch

  • Tolerate sending data after close(mode: .output) (#2421)

SwiftNIO 2.52.0

04 May 12:59
546eaa2
Compare
Choose a tag to compare

SemVer Minor

  • Add CustomDebugStringConvertible conformance to ByteBuffer (#2418, patch credit to @gwynne)
  • Add unprocessedBytes property on NIOSingleStepByteToMessageProcessor (#2419)

SwiftNIO 2.51.1

02 May 10:26
d1690f8
Compare
Choose a tag to compare

SemVer Patch

  • Handle close(output) in the pipeline handler. (#2414)
  • NIOThrowingAsyncSequenceProducer throws when cancelled (#2415)

Other Changes

  • Add AsyncChannel based ServerBootstrap.bind() methods (#2403)
  • Extend the integration test harness to track FDs (#2411)
  • AsyncChannelBootstrapTests bind to 0 instead (#2412, #2413)

SwiftNIO 2.51.0

24 Apr 11:23
f7c4655
Compare
Choose a tag to compare

SemVer Minor

SemVer Patch

  • Handle reentrant reads in ALPNHandler (#2402)
  • Close accepted FDs if we fail to create Socket (#2407)
  • Don't have channels stop reading on errors they tolerate. (#2408)

Other Changes

  • Add docker-compose file for Swift 5.9 (#2404)
  • Fix broken docs. (#2405)
  • Avoid double-closing on fcntl failures (#2409)

SwiftNIO 2.50.0

12 Apr 09:29
e0cc6dd
Compare
Choose a tag to compare

SemVer Minor

  • Add NIOAsyncChannel as SPI (@_spi(AsyncChannel)) (#2397)
  • Throw CancellationError if NIOThrowingAsyncSequenceProducer.AsyncIterator.next() is cancelled instead of returning nil. The user defined generic Failure type of NIOThrowingAsyncSequenceProducer is also deprecated and must now always be any Swift.Error. (#2399, #2401)

SemVer Patch

  • Mildly rework the NIOLock storage (#2395)

Other Changes

  • Update links in NIO docs index (#2396)
  • Clean up and regression check the docs. (#2400)

SwiftNIO 2.49.0

20 Mar 10:52
9b2848d
Compare
Choose a tag to compare

SemVer Minor

  • Mark EventLoop.syncShutdownGracefully and EventLoopGroup.syncShutdownGracefully noasync (#2381)
  • Add a pooled recv buffer allocator (#2362)
  • NIOAsyncWriter: Provide a fast path for single element writes (#2365)
  • Provide OnLoopSendable: Sendable containers that bind a value to a specific EventLoop (#2370)
  • Add support for UDP_SEGMENT (#2372)
  • Add support for UDP_GRO (#2385)

SemVer Patch

  • Pool buffers for ivecs and storage refs in the event loop. (#2358, patch credit to @ser-0xff)
  • Fix memory binding. (#2376, patch credit to @ser-0xff)
  • Fix an upcoming compiler warning on implicit raw pointer casts. (#2377, patch credit to @atrick)
  • Buffer pool for message headers and addresses. (#2378, patch credit to @ser-0xff)
  • Remove unused array (#2361)
  • Make PooledBuffer safer. (#2363)
  • Fix swift-nio iOS builds. (#2369)
  • Don't retain a task when all we want is a time (#2373)
  • Make our time types transparent (#2374)
  • Allow UDP GRO tests to fail in some circumstances (#2387)

Other Changes

  • TCP channel throughput benchmark. (#2367, patch credit to @ser-0xff)
  • Add UDP performance tests (#2360)
  • Clarify on EL semantics (#2366)
  • Add availability requirements to TCPThroughputBenchmark (#2368)
  • Not Holding OnToRunClosure() test updates (#2375)
  • Remove redundant availability guards (#2379)
  • Lower the max segment count in tests (#2382)
  • Rebuild the channel when retrying testWriteBufferAtGSOSegmentCountLimit (#2383)
  • Rework the NIOAsyncSequenceProducer tests to rely less on timings (#2386)
  • Work around the SwiftPM layout change. (#2389)
  • Always populate utsname (#2391)

SwiftNIO 2.48.0

26 Jan 13:19
45167b8
Compare
Choose a tag to compare

SemVer Minor

  • Special case EventLoopPromise.succeed() when Value is Void (#2311, patch credit to @mob-connection)

SemVer Patch

  • Tail allocate mutex and a generic value using ManagedBuffer (#2349, patch credit to @asdf-bro)

Other Changes

  • Add Swift 5.8 CI and update nightly CI to Ubuntu 22.04 (#2350)
  • Lift alloc counter Package.swift to 5.1 and add platforms (#2352)
  • Point docs to Swift Package Index (#2353)
  • Fix flaky testTaskCancel_whenStreaming_andNotSuspended (#2355)