Releases: apple/swift-nio
Releases · apple/swift-nio
2.73.0
What's Changed
SemVer Minor
- Make
ByteBuffer
's description more useful by @supersonicbyte in #2864 - Expose
UDP_MAX_SEGMENTS
via System by @rnro in #2891 - Add new
ChannelOption
to get the amount of buffered outbound data in the Channel by @johnnzhou in #2849 - Add an
AcceptBackoffHandler
to the async server bootstraps by @FranzBusch in #2782
SemVer Patch
- Adding a nicer description for
WebSocketFrame
by @supersonicbyte in #2862 - Improving
description
and addingdebugDescription
toNIOAny
by @supersonicbyte in #2866 - Make FileChunk sendable by @ali-ahsan-ali in #2871
- Make
ByteBuffer.debugDescription
suitable for structural display by @dnadoba in #2495 - Add support for WASILibc by @MaxDesiatov in #2671
NIOSingleStepByteToMessageDecoder
reentrancy safety by @rnro in #2881- Adopt
NIOThrowingAsyncSequenceProducer
by @rnro in #2879 - Clamp buffer to maximum upon large write operation by @ali-ahsan-ali in #2745
- Revert "Adopt
NIOThrowingAsyncSequenceProducer
(#2879)" by @rnro in #2892 - Add concrete description for
EmbeddedEventLoop
by @aryan-25 in #2890 - Conditionally include linux/udp.h by @rnro in #2894
- Work around a type checking error when using the Static Linux SDK by @euanh in #2898
Other Changes
- [CI] Run tests on push to main by @FranzBusch in #2868
- [CI] License header support
.in
and.cmake
files by @FranzBusch in #2870 - Include nanoseconds in assertion of timestamp for NIOFileSystem tests by @gjcairo in #2869
- Correct the link of sswg-security at SECURITY.md by @lamtrinhdev in #2872
- Speculative fix for flakey AsyncTestingEventLoop test by @simonjbeaumont in #2873
- ci: Install shellcheck if not present in CI runner by @simonjbeaumont in #2882
- ci: Use ${GITHUB_BASE_REF} as treeish for checking API break by @simonjbeaumont in #2883
- ci: Refer to nested reusable workflows using remote variant by @simonjbeaumont in #2884
- [CI] Fix pull request label workflow by @FranzBusch in #2885
New Contributors
- @ali-ahsan-ali made their first contribution in #2871
- @aryan-25 made their first contribution in #2890
- @johnnzhou made their first contribution in #2849
- @euanh made their first contribution in #2898
Full Changelog: 2.72.0...2.73.0
2.72.0
What's Changed
SemVer Minor
- Add .compact format to ByteBuffer's hexdump method by @supersonicbyte in #2856
SemVer Patch
- Make
assumeIsolated
work with SerialExecutors that are backed by EventLoops by @fabianfett in #2865
New Contributors
- @supersonicbyte made their first contribution in #2856
Full Changelog: 2.71.0...2.72.0
2.71.0
What's Changed
SemVer Minor
- Adopt strict concurrency and Sendable in
NIOConcurrencyHelpers
by @Lukasa in #2832 - Adopt strict concurrency in
_NIODataStructures
by @Lukasa in #2835 - Provide documentation and context information for
NIOTooManyBytesError
by @cmcgee1024 in #2831
SemVer Patch
- Adopt strict concurrency in
_NIOBase64
by @Lukasa in #2838 - Remove symlinks from resources by @Lukasa in #2841
- Fix global concurrency hook integration test by @FranzBusch in #2857
Other Changes
- Update wording from
ubuntu
toUbuntu
at README.md by @lamtrinhdev in #2830 - Update the triggers for the Semantic Version label check by @FranzBusch in #2833
- Add
.editorconfig
file by @FranzBusch in #2829 - Fix test availability by @glbrntt in #2836
- Strict concurrency the early tests by @Lukasa in #2840
- Fix
NIOFileSystem
flaky tests by @gjcairo in #2842 - Improve
testTasksScheduledDuringShutdownAreAutomaticallyCancelled
by @glbrntt in #2843 - Align benchmark scaling and minimum samples by @FranzBusch in #2839
- Explain why
ThreadLocalVariable
isn't Sendable. by @Lukasa in #2845 - [CI] Don't persist git credentials in CI by @FranzBusch in #2847
- [CI] Mark the workspace as safe for the matrix job by @FranzBusch in #2848
- Pin DocC to below 1.4 by @Lukasa in #2854
- [CI] Make container images configurable in soundness and matrix jobs … by @FranzBusch in #2851
- Update release.yml by @FranzBusch in #2850
New Contributors
- @lamtrinhdev made their first contribution in #2830
- @cmcgee1024 made their first contribution in #2831
Full Changelog: 2.70.0...2.71.0
SwiftNIO 2.70.0
What's Changed
SemVer Minor
FileSystem.copyItem
can parallelise directory copy by @UncleMattHope in #2806ChannelOption
: Allow types to be accessed with leading dot syntax by @ayush1794 in #2816- Make
EventLoopPromise
conform to Equatable by @gjcairo in #2714 - Provide a default
CopyStrategy
overload for copyItem. by @UncleMattHope in #2818
SemVer Patch
- Better align shutdown semantics of testing event loops by @simonjbeaumont in #2800
- Clone files on Darwin rather than copying them by @rnro in #2823
Other Changes
- Fix compose file used in update-benchmark-thresholds script by @simonjbeaumont in #2808
- Remove advice to generate linux tests. by @PeterAdams-A in #2807
- Make
testInstantTCPConnectionResetThrowsError
more reliable by @hamzahrmalik in #2810 - [CI] Add
shellcheck
and fix up warnings by @FranzBusch in #2809 - [CI] Fix docs check by @FranzBusch in #2811
- [CI] Add Swift 6 language mode workflow by @FranzBusch in #2812
- Fix test compilation on non-macOS Darwin platforms by @simonjbeaumont in #2817
- Add
.index-build
to.gitignore
by @MaxDesiatov in #2819 - [CI] Add action and workflow to check for semver label by @FranzBusch in #2814
- Update repository docs for swift-version support and recent CI check changes by @UncleMattHope in #2815
- Fix failing build for test by @ayush1794 in #2824
- Fix typo in comment in
WebSocketErrorCodes.swift
by @valeriyvan in #2604 - [CI] Add a scheduled workflow for tests and benchmarks by @FranzBusch in #2822
- [CI] Fix label check by @FranzBusch in #2827
New Contributors
- @UncleMattHope made their first contribution in #2806
- @ayush1794 made their first contribution in #2816
- @valeriyvan made their first contribution in #2604
Full Changelog: 2.69.0...2.70.0
SwiftNIO 2.69.0
What's Changed
SemVer Minor
- Add manual control to
NIOLockedValueBox
by @glbrntt in #2786 - ChannelHandler: provide static
(un)wrap(In|Out)bound(In|Out)
by @weissi in #2791
SemVer Patch
- Pre-box some errors to reduce allocations by @glbrntt in #2765
- Allow in-place mutation of
NIOLoopBoundBox.value
by @dnadoba in #2771 - Avoid creating a yield ID counter per async writer by @glbrntt in #2768
- Combine the two
NIOAsyncChannel
channel handlers by @glbrntt in #2779 - Use the new Android overlay and Bionic module from Swift 6 by @finagolfin in #2784
- Change
unsafeDownCast
toas!
by @FranzBusch in #2802
Other Changes
- CI migration to GitHub Action by @FranzBusch in (#2760 #2762 #2763 #2764 #2767 #2766 #2776 #2780 #2785 #2781 #2787 #2783 #2789 #2790)
- Ignore format commit from git blame by @FranzBusch in #2796 #2797 #2801 #2803
- Adopt swift-format by @FranzBusch in #2794
HTTPPart
Documentation Clarification by @dimitribouniol in #2775- Add benchmark for creating
NIOAsyncChannel
by @glbrntt in #2774 - Disable warnings as errors on Swift 6 and main by @glbrntt in #2793
Full Changelog: 2.68.0...2.69.0
SwiftNIO 2.68.0
SemVer Minor
- NIOSendableBox: allow off-loop initialisation iff Value is Sendable (#2753)
SemVer Patch
- Throw an appropriate error from the writer when the channel closed (#2744)
Other Changes
- Convert the NIOFileSystem example code to a Snippet (#2746, #2750 patch credit to @tayloraswift)
- Fix link to NIOFileSystem from NIO index page (#2747)
SwiftNIO 2.67.0
SemVer Minor
- Add API for setting last accessed and last modified file times (#2735)
SemVer Patch
- 304 Not Modified Broken with Response Compression Enabled (#2737, patch credit to @dimitribouniol)
- Silence warning about missing include in macOS builds (#2741, patch credit to @gwynne)
Other Changes
- Update availability guard on tests (#2739)
SwiftNIO 2.66.0
SemVer Minor
- Add
ByteBuffer
support toBufferedWriter
(#2707) - Add
withTemporaryDirectory
(#2708) - Replace
R
withReturnType
(#2709) - Add a version of 'write' for
ByteBuffer
toWritableFileHandleProtocol
(#2730)
SemVer Patch
- Remove surplus
Sendable
requirements from FileSystem with methods (#2706) - concurrency takeover safe for 6.0 (#2710)
- Release file handles back to caller on failure to take ownership (#2715)
- clean up @retroactive conformances (#2719)
- Remove storage indirection for FileSystemError (#2726)
- Improve rename error (#2731)
- Add a fallback path if renameat2 fails (#2733)
Other Changes
- Fix race in TCPThroughputBenchmark (#2724, patch credit to @ser-0xff)
- Exclude unused privacy manifests. (#2716)
- No longer need test discovery command line. (#2717)
- Update PosixSingletons+ConcurrencyTakeOver.swift (#2721)
- Add slack to rst allocation tests (#2722)
- testSimpleMPTCP should not fail for ENOPROTOOPT (#2725)
SwiftNIO 2.65.0
Important changes to the NIOFileSystem
module
The NIOFileSystem
module has been renamed _NIOFileSystem
to make it more
obvious that it isn't yet stable API.
The existing NIOFileSystem
module currently re-exports _NIOFileSystem
and will
be removed in the next minor release. You should update your imports accordingly
to avoid being broken by the next release.
SemVer Minor
- Add
NIOBSDSocket.Option
for SO_BROADCAST (#2678) - Add delegate for collecting
EventLoop
tick metrics (#2608) - Raise minimum Swift version to 5.8 (#2675)
- Expose
NIOThreadPool.numberOfThreads
publicly. (#2676) - Prevent
BufferedWriter
from producing empty files (#2677) - Change
BufferedReader.read(while:)
signature (#2688) - Added file and line to NIOAsyncWriterError description (#2693)
- Add a helper for setting or cascading optional promises (#2697)
- Underscore the
NIOFileSystem
module (#2683, #2689)
SemVer Patch
- Add cancellation to
NIOThreadPool's
asyncrunIfActive
(#2679) - Handle 'atomically' created files more gracefully when detached (#2682)
- Remove
DispatchGroup
and replace with condvar (#2687) - Use
NIOThreadPool
inNIOFileSystem
(#2692) - Add privacy manifest (#2695)
- Retain a ref to
NIOAsyncWriter
until channel active (#2703)
Other Changes
SwiftNIO 2.64.0
Strict Concurrency Checks
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.
SemVer Minor
- Track
execute()
andenqueue()
tasks separately from scheduled tasks. (#2645) - Conform
NIOIPProtocol
toSendable
(#2655) - Add some more
Sendable
annotations toNIOCore
(#2656) - Migrate to
syncOperations
in more places (#2661)
SemVer Patch
- Conditionally define
RENAME_*
macros (#2643, patch credit to @Austinpayne) - Build the new FileSystem module for Android (#2660, patch credit to @finagolfin)
- Only compile FileSystem on some platforms (#2636)
- Remove
@unchecked Sendable
conformance fromChannelOptions.Storage
(#2638) - Pass initial offset to BufferedReader.init (#2642)
- Don't drop bytes from the buffered reader when reading short (#2646)
- Introduce
assumeIsolated()
methods onEventLoop
,EventLoopPromise
andEventLoopFuture
(#2657) - Fix CoW performance bug in
NIOThreadPool
work queue (#2669)