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