Releases: apple/swift-nio
SwiftNIO 2.86.0
What's Changed
SemVer Minor
- Fixes all warnings when
-require-explicit-sendable
flag is enabled by @rafaelcepeda in #3320 - Add a new file path type, NIOFilePath, backed by SystemPackage's FilePath type by @aryan-25 in #3322
- Support options on AsyncTestingChannel and EmbeddedChannel by @klaaspieter in #3308
SemVer Patch
- [Windows] Windows has endianess too by @fabianfett in #3317
- [Windows] Ensure NIOEmbedded compiles by @fabianfett in #3319
- [Windows] IOVector is WSABUF on Windows by @fabianfett in #3324
- Don't double-initialize Pipe Bootstraps by @Lukasa in #3330
Other Changes
- CMake Updater: Output difference in expectations by @etcwilde in #3314
- Move conditional setup logic from bash to actions by @madrob in #3313
- Fix docc by @rafaelcepeda in #3315
- Fix typo in
HTTPServerClientTest.swift
comments by @MaxDesiatov in #3323 - Enable release mode builds for pull requests by @josephnoir in #3321
- Do not run windows nightly CI by default by @josephnoir in #3325
- Enable release mode builds by @josephnoir in #3327
- Add bpftrace support to stackdiff by @Lukasa in #3329
- [wasm][1/2] Add reusable WebAssembly workflow by @kateinoigakukun in #3331
New Contributors
- @etcwilde made their first contribution in #3314
- @klaaspieter made their first contribution in #3308
Full Changelog: 2.85.0...2.86.0
SwiftNIO 2.85.0
What's Changed
SemVer Minor
- Structured Concurrency compliant MTELG create/shutdown by @weissi in #3296
- Make file handle sendable by @ali-ahsan-ali in #3300
SemVer Patch
- Functions that return values should return those values by @Lukasa in #3283
- Run
update_and_patch_llhttp.sh
script to update to 9.3.0 by @xtremekforever in #3298 - ensure
<stddef.h>
is not imported within extern "C" by @xtremekforever in #3299 - improve
inEventLoop
checks by @weissi in #3302 - Wrap closures stored in the
CallbackList
by @glbrntt in #3303 - NIOThread refactor: pthread_t lifetimes by @weissi in #3297
- NIOThread: remove the detached threads functionality by @weissi in #3304
- Call channel initializer when using async methods on pipe bootstrap by @Lukasa in #3309
- Remove Foundation import by @glbrntt in #3310
Other Changes
- Widen the allocation limit on nightlies by @Lukasa in #3280
- Update
generate_matrix.sh
for windows nightlies to 2022 images by @rnro in #3284 - Make use of symlink to latest Xcode beta by @rnro in #3285
- Add internals for stackdiff tool by @glbrntt in #3286
- Add diffing to the stackdiff tool by @glbrntt in #3287
- Add dtrace parsing by @glbrntt in #3288
- Add stackdiff dump by @glbrntt in #3289
- Add stackdiff merging by @glbrntt in #3290
- Avoid spurious xcodebuild warning by @madrob in #3291
- Add DocC docs for running alloc tests and debugging them by @glbrntt in #3293
- Add bpftrace allocations script by @Lukasa in #3113
- Add
inEventLoop
benchmark by @weissi in #3301 - Pick visionOS version for Xcode 16.2 by @glbrntt in #3307
- Fixes a small mistake in the NIOTCPEchoServer README file by @rafaelcepeda in #3311
New Contributors
- @madrob made their first contribution in #3291
- @xtremekforever made their first contribution in #3298
Full Changelog: 2.84.0...2.85.0
SwiftNIO 2.84.0
What's Changed
SemVer Minor
- Fix NioAsyncWriter test on concurrency thread pool with single thread by @orobio in #3135
- Adjust for SendableMetatype by @Lukasa in #3266
- Extend NIOEventLoopTickInfo with end-time and loop sleep time by @josephnoir in #3268
- Adding RawSpan support to writeBytes in ByteBuffer by @yigityazicilar in #3269
- Add
scheduleCallback
APIs toNIOIsolatedEventLoop
by @ptoffy in #3263
SemVer Patch
NIOThrowingAsyncSequenceProducer
make more funcs@inlinable
by @fabianfett in #3243- Handle different ThreadDestructor signatures between Android NDK 27 and NDK 28 by @marcprux in #3249
- Make CNIOAtomics and CNIODarwin compatible with C++ interop by @egorzhdan in #3251
- Embedded channels should set local and remote address always by @hamzahrmalik in #3254
- fix: Fix compiler error found on latest main that breaks wasip1 (wasm) compilation by @scottmarchant in #3271
- Support for 64-bit timespec seconds on 32-bit platforms by @lhoward in #3277
- Work around Android nullability errors by @Lukasa in #3279
Other Changes
- Macos setup command by @rnro in #3236
- Update check-matrix-job.sh to default swift commands by @rnro in #3237
- Enable visionOS xcodebuilds by default in CI - attempt 2 by @rnro in #3238
- Update macos_tests.yml to limit run time to 30 minutes by @rnro in #3240
- Print the swift version in Linux matrix jobs by @rnro in #3241
- Remove default setup command for Xcode 16.2 by @glbrntt in #3242
- Revert "Remove default setup command for Xcode 16.2 (#3242)" by @glbrntt in #3244
- Revert "Print the swift version in Linux matrix jobs" by @rnro in #3245
- Execute swift --version in shared workflows by @rnro in #3247
- Revert "Revert "Remove default setup command for Xcode 16.2 (#3242)" (#3244)" by @glbrntt in #3248
- Update the matrix nightly-next to point to 6.2 by @rnro in #3250
- Retry curl operations in CI scripts by @rnro in #3256
- Benchmarks workflow prints diff when changes found by @rnro in #3258
- a couple grammar fixes by @GameRoMan in #3259
- Add Xcode 26 beta 1 to macOS CI by @rnro in #3267
- Fixed issue with macOS CI when overrides are being used. by @rafaelcepeda in #3270
- Add assembly files for Windows by @Steelskin in #3275
- Fix API documentation links in README.md by @azarovalex in #3276
New Contributors
- @egorzhdan made their first contribution in #3251
- @GameRoMan made their first contribution in #3259
- @josephnoir made their first contribution in #3268
- @yigityazicilar made their first contribution in #3269
- @ptoffy made their first contribution in #3263
- @Steelskin made their first contribution in #3275
- @azarovalex made their first contribution in #3276
- @lhoward made their first contribution in #3277
Full Changelog: 2.83.0...2.84.0
2.83.0
What's Changed
SemVer Minor
- Make ChannelError and NIOConnectionError conform to CustomStringConvertible by @axelandersson in #3230
- Drop Swift 5.9 by @rnro in #3228
- Move
PooledRecvBufferAllocator
from NIOPosix to NIOCore by @rafaelcepeda in #3110
SemVer Patch
- Update Array+FileSystem.swift to add visionOS by @rnro in #3220
- BaseStreamSocketChannel half-close allows outstanding writes to complete by @rnro in #3148
- Remove assertions on PWM failAll and closeOutbound by @rnro in #3231
- Replace almost all public static lets with computed vars by @Lukasa in #3229
Other Changes
- Removed Docker references as repo moved to Github actions by @akbashev in #3227
- Update SECURITY.md by @rnro in #3232
- Disable Swift 5.9 CI jobs by default by @rnro in #3233
New Contributors
- @akbashev made their first contribution in #3227
- @axelandersson made their first contribution in #3230
Full Changelog: 2.82.1...2.83.0
2.82.1
SwiftNIO 2.82.0
What's Changed
SemVer Minor
- Add more methods to work with Isolated futures by @rnro in #3117
- Equatable SocketAddressError by @0xTim in #3119
- Enable strict concurrency checking for NIOHTTP1 by @rnro in #3115
- Enable strict concurrency checking for NIOWebSocket by @rnro in #3127
- Allow NIOLoopBoundBox to be initialized by sending in a value by @hamzahrmalik in #3138
- Add make*Future methods to isolated event loop by @glbrntt in #3152
- Change NIOAsyncChannel.executeThenClose to accept actor-isolated parameter by @rafaelcepeda in #3121
- Add peekInteger APIs to ByteBuffer by @RaghavRoy145 in #3157
- Add peek API variants for ByteBuffer by @RaghavRoy145 in #3160
- Expose the event loop from the loop bound boxes by @glbrntt in #3179
- Add Peek API for Multiple Integers by @RaghavRoy145 in #3175
- Add More Peek API Variants for ByteBuffer by @RaghavRoy145 in #3174
- Swift concurrency for NIOWebSocketTests by @glbrntt in #3208
SemVer Patch
- Make isolated execute on async testing eventloop actually run by @Lukasa in #3116
- Enable strict concurrency checking for NIOTestUtils by @rnro in #3130
- Downgrade NIOHTTP1TestServer handleChannel failure by @rnro in #3137
- always @preconcurrency import Glibc/Musl/Android/Bionic/WASILibc by @weissi in #3153
- fix: Fix NIOCore build for wasm targets by @scottmarchant in #3156
- Improve alloc tests failure messages by @gjcairo in #3173
- Add errorCaught to NIOTypedHTTPClientUpgradeHandler by @adam-fowler in #3210
- Clarify test server error code by @Lukasa in #3212
- Update LLHTTP and apply patch to support C++ interop by @Lukasa in #3216
Other Changes
- Enable strict concurrency checking for NIOHTTP1Server by @rnro in #3132
- Enable strict concurrency checking for NIOHTTP1Client by @rnro in #3131
- Simplify Windows matrix command invocation by @rnro in #3118
- Update generate matrix stript to use nightly_next by @rnro in #3120
- Expose GITHUB_ACTIONS env var to docker containers by @rnro in #3123
- Update re-usable workflows to use nightly_next by @rnro in #3122
- Populate CI env var in swift_test_matrix.yml by @rnro in #3125
- rename nightly 6 1 to nightly next by @rnro in #3126
- NIOSingletons docs: Clarify the set once-ness by @weissi in #3128
- Remove side effect from assertion in IPHeaderRemoverHandler by @glbrntt in #3129
- Delete Thresholds/nightly-6.1 symlinks by @rnro in #3133
- Only apply standard swift settings on valid targets by @rnro in #3134
- A re-usable static SDK compilation workflow by @rnro in #3019
- Add a missing import to CNIOLinux by @czechboy0 in #3140
- Experimental macOS CI by @rnro in #3141
- Remove macOS CI shim by @rnro in #3143
- Make static SDK curl for setup script by @rnro in #3142
- A re-usable CMake check workflow by @rnro in #3144
- install jq, use correct quotes by @rnro in #3145
- Update macOS CI workflow by @rnro in #3150
- A script for updating benchmark thresholds from CI output by @rnro in #3151
- Use overflow addition in tests to avoid compilation failures by @glbrntt in #3155
- Separate build and test steps in
macos_tests.yml
by @rnro in #3162 - macOS CI pools by @rnro in #3163
- Update install_static_sdk.sh to cope with versions with no patch by @rnro in #3166
- Document supported versions consistently by @glbrntt in #3168
- Add support for Xcode 16.3 by @rnro in #3171
- uncomment visionOS CI tasks by @rnro in #3176
- Ignore return value of signal() on Android by @marcprux in #3181
- Update nightly main benchmark thresholds by @rnro in #3187
- Static SDK installation script improvements by @rnro in #3186
- Add perf test for EL as SerialExecutor by @fabianfett in #3178
- Add and enable Swift 6.1 workflows by @rnro in #3196
- Update matrix job script for 6.1 by @rnro in #3201
- Add Tests for WebSocketErrorCode Get, Read and Write APIs in ByteBuffer by @RaghavRoy145 in #3198
- Fix ByteBufferTests when compiling with Swift 6 but running on macOS 14. by @allevato in #3217
- Strict concurrency for websocket client/server demo and async demo by @glbrntt in #3161
- Strict concurrency for NIOHTTP1Tests by @glbrntt in #3169
- Strict concurrency for NIOPerformanceTester and NIOCrashTester by @glbrntt in #3167
- Strict concurrency for NIOTestUtilsTests by @glbrntt in #3206
- Strict concurrency for NIOTLSTests by @glbrntt in #3207
- Strict concurrency NIOPosixTests by @glbrntt in #3183, #3185, #3182, #3184, #3190, #3188, #3189, #3191, #3192, #3193, #3195, #3199, #3205, and #3211
New Contributors
- @czechboy0 made their first contribution in #3140
- @rafaelcepeda made their first contribution in #3121
- @scottmarchant made their first contribution in #3156
- @RaghavRoy145 made their first contribution in #3157
- @marcprux made their first contribution in #3181
- @allevato made their first contribution in #3217
Full Changelog: 2.81.0...2.82.0
SwiftNIO 2.81.0
What's Changed
SemVer Minor
- Make _NIOFileSystem strict concurrency compatible by @Lukasa in #3098
- Add ChannelPipeline.SynchronousOperations.Position by @0xTim in #3065
SemVer Patch
Other Changes
- Update the legacy CI matrix for 6.1 nightly by @rnro in #3094
- Opt _NIOConcurrency into Strict Concurrency by @Lukasa in #3095
- Opt NIOFoundationCompat into strict concurrency by @Lukasa in #3096
- Opt NIO module into Strict Concurrency by @Lukasa in #3097
- Clean up concurrency in NIOEchoClient by @Lukasa in #3099
- Add strict concurrency to NIOUDPEchoServer by @Lukasa in #3101
- Lock in strict concurrency in NIOEchoServer by @Lukasa in #3100
- Update NIOUDPEchoClient for strict concurrency by @Lukasa in #3102
- Strict concurrency for TCP examples by @Lukasa in #3103
- Strict concurrency for the chat examples by @Lukasa in #3104
- Strict concurrency enablement for some test targets by @Lukasa in #3105
- Strict concurrency for NIOTests by @Lukasa in #3106
- Make the FileSystem world strict concurrency clean by @Lukasa in #3107
- document known Structured Concurrency violations by @weissi in #3108
Full Changelog: 2.80.0...2.81.0
SwiftNIO 2.80.0
What's Changed
SemVer Minor
- Fix WebSocketProtocolErrorHandler sending the close frame with appropriate masking key by @johnnzhou in #3040
- feat: Add
String(contentsOf: FilePath ...)
by @natikgadzhi in #3048 - feat: NIO.TimeAmount(string:) and TimeAmount.description by @natikgadzhi in #3046
- Adds
Int(buffer:)
initializer toFixedWidthInteger
types by @natikgadzhi in #3047 - Fix the HappyEyeballsResolver and core Bootstraps under strict concurrency by @Lukasa in #3062
- Clean up Sendability in Thread and ThreadPool by @Lukasa in #3081
- Make NonBlockingFileIO strict-concurrency clean by @Lukasa in #3082
SemVer Patch
- Move Isolated EL operations to EL protocol by @Lukasa in #3070
- Improve HTTPHeaders description performance by @supersonicbyte in #3063
- Fast-path isolated view for EmbeddedEventLoop by @Lukasa in #3073
- Enable optimized Isolated view path for AsyncTestingEL by @Lukasa in #3074
- Adopt optimized isolated path for SelectableEL by @Lukasa in #3075
- Update nightly CI pipelines to 6.1 instead of 6.0 by @rnro in #3076
- Improve
flatScheduleTask
by @clintonpi in #3079 - Sendability clean up for RawSocketBootstrap by @Lukasa in #3083
- Strict concurrency for SelectableEventLoop & MTELG by @Lukasa in #3084
- Add Sendable annotations to SelectorGeneric by @Lukasa in #3085
- Remove accidental static var by @Lukasa in #3086
- Add simple Sendable conformance to AsyncSequenceFromIterator by @Lukasa in #3088
- Add Sendable annotations to the syscall wrappers by @Lukasa in #3087
- Avoid using stderr explicitly by @Lukasa in #3089
- Make NIOPosix strict-concurrency clean by @Lukasa in #3090
NIOFileSystem
: Try ${TMPDIR} first for temporary directory by @natikgadzhi in #3067- undo Xcode 13 GM workaround which leads to miscompiles in Xcode 16.4 by @weissi in #3092
Other Changes
- Add allocation counter tests for isolated EL operations by @Lukasa in #3068
- Improve coverage of isolated views by @Lukasa in #3069
- Ensure we test the isolated fallback methods by @Lukasa in #3072
- more 6.0 nightly to 6.1 nightly CI changes by @rnro in #3078
- check-matrix-job.sh should tolerate unset 6.1 vars by @rnro in #3080
Full Changelog: 2.79.0...2.80.0
SwiftNIO 2.79.0
What's Changed
SemVer Minor
- Add Sendability annotations on SocketOptionProvider by @Lukasa in #3034
- Add channel initializer closure to NIOAsyncTestingChannel.init by @hamzahrmalik in #3053
- Fix compiling on 6.1 by @Lukasa in #3057
- Add some trivial Sendable annotations in NIOPosix by @Lukasa in #3060
SemVer Patch
- unchecked Sendable annotations for the Channels by @Lukasa in #3050
- Avoid abstraction overheads on isolated ELF by @Lukasa in #3055
- NIOAsyncWriter: Fix suspending yield when writer is finished by @orobio in #3044
- Clean up sendability in the bootstraps by @Lukasa in #3051
Other Changes
- Test allocations of isolated ELF views by @Lukasa in #3054
- Clarify docs on EventLoopFuture/assumeIsolatedUnsafeUnchecked by @hamzahrmalik in #3058
- Remove unnecessary 'FIXME' comment by @orobio in #3059
New Contributors
Full Changelog: 2.78.0...2.79.0
SwiftNIO 2.78.0
What's Changed
This release contains a number of features that have been added to enable the SwiftNIO ecosystem to adopt strict concurrency checking and the Swift 6 language mode more easily. In particular, this release migrates NIOCore and NIOEmbedded, two critical and widespread dependencies.
This release also contains new tools for making adoption easier, in particular the isolated views of EventLoop
, EventLoopPromise
, and EventLoopFuture
. For more details on how to use these types to make adoption of strict concurrency easier, please see our documentation on the relationship between EventLoop
s, EventLoopFuture
s, and Swift's concurrency model.
More work in this area is ongoing, and will be released in subsequent versions.
SemVer Minor
- Handle Sendability of RemovableChannelHandler by @Lukasa in #2953
- Clean up Sendability for ChannelInvoker by @Lukasa in #2955
- Complete NIOCore strict concurrency by @Lukasa in #2959
- Make NIOFileDescriptor/FileRegion/IOData Sendable & soft-deprecated by @weissi in #2598
- fix almost all Sendable warnings by @weissi in #2994
- deprecate NIOEventLoopGroupProvider.createNew by @weissi in #2480
- Add EventLoop.now API for getting the current time by @simonjbeaumont in #3015
- Add parallel removal of items by @mimischi in #3008
- Add isolated views to EventLoop, Promise, and Future by @Lukasa in #2969
- Get NIOEmbedded clean under strict concurrency by @Lukasa in #3030
SemVer Patch
- give common blocking functions a clear name by @weissi in #2984
- ByteBuffer: one fewer allocs to go to Data by @weissi in #1839
- Remove noasync from NIOFileHandle by @glbrntt in #3001
- Avoid converting array holding existentials by @Lukasa in #3006
- Use the new Android overlay in the tests and update some Bionic declarations by @finagolfin in #3009
- Revert
fastRebase
implementation by @clintonpi in #3014 - Deprecate not-actually-public Base64 APIs by @glbrntt in #3022
- Fix new warnings by @Lukasa in #3026
- Remove now unneeded fts_open bitcast for Android by @finagolfin in #3025
- fix bogus "unleakable promise leaked" error message (#2855) by @weissi in #3027
- Enable MemberImportVisibility check by @rnro in #3029
- Wait for
closeFuture
instead of close promise inNIOAsyncChannel
'sexecuteThenClose
by @gjcairo in #3032 - Import Android instead for NIOEmbedded by @finagolfin in #3033
- Support concurrency take over in 6.2 by @Lukasa in #3043
- GetaddrinfoResolver succeeds futures on eventLoop by @rnro in #3042
Other Changes
- fix warnings: syncShutdownGracefully not available in async contexts by @weissi in #2995
- Add Cxx interop swift settings to CI by @rnro in #2999
- Update documentation comments by @mimischi in #2998
- Cxx interop CI appends swiftSettings by @rnro in #3002
- fix remaining warnings & enable -warnings-as-errors in CI by @weissi in #3000
- Aligning semantic version label check name by @FranzBusch in #3007
- Introduce JSON matrix workflow by @rnro in #3013
- Matrix workflows refer to main branch by @rnro in #3016
- Re-usable workflows curl scripts by @rnro in #3017
- GHA: Separate matrix input handling by @rnro in #3018
- Remove outdated documentation by @rauhul in #3023
- rename top matrix workflow object 'swift'->'config' by @rnro in #3024
- Fix now-racy scheduled callback tests by @Lukasa in #3031
- Update release.yml and label action by @FranzBusch in #3035
- Fix flaky test testTasksScheduledDuringShutdownAreAutomaticallyCancel… by @FranzBusch in #3036
- Print alloc-limits-from-test-output usage when no args by @glbrntt in #3041