Make _NIOFileSystem strict concurrency compatible #3098
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
We're continuing out Strict Concurrency journey, making sure users of NIO can write data-race-free code.
Modifications:
Added some missing Sendable annotations in NIOAsyncSequenceProducer
Made BufferedStream unconditionally Sendable, and required its Element type to also be Sendable.
The prior constraint wasn't actually correct. We always
behaved as though the element types were Sendable, by passing
them into continuations. This cleans things up.
Made AnyAsyncSequence Sendable, which it needs to be.
Made BufferedOrAnyStream Sendable, which it needs to be.
Made DirectoryEntries explicitly Sendable, which it was.
Made DirectoryEntries.Batched explicitly Sendable.
Result:
Better concurrency-safety