Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adopt strict concurrency and Sendable in NIOConcurrencyHelpers #2832

Merged
merged 4 commits into from
Aug 8, 2024

Conversation

Lukasa
Copy link
Contributor

@Lukasa Lukasa commented Aug 8, 2024

Motivation:

This patch adds strict concurrency and Sendable support to NIOConcurrencyHelpers. This is a useful first step in adding full support across the ecosystem.

Modifications:

  • Added some explicit Sendable conformances that were missing.
  • Fixed some declarations to make them Strict Sendable safe.

Result:

One step towards strict concurrency

Motivation:

This patch adds strict concurrency and Sendable support to
NIOConcurrencyHelpers. This is a useful first step in adding
full support across the ecosystem.

Modifications:

- Added some explicit Sendable conformances that were missing.
- Fixed some declarations to make them Strict Sendable safe.

Result:

One step towards strict concurrency
@Lukasa Lukasa added the semver/minor Adds new public API. label Aug 8, 2024
static var nio_atomic_sub: @Sendable (UnsafeMutablePointer<AtomicWrapper>, Self) -> Self { get }
static var nio_atomic_exchange: @Sendable (UnsafeMutablePointer<AtomicWrapper>, Self) -> Self { get }
static var nio_atomic_load: @Sendable (UnsafeMutablePointer<AtomicWrapper>) -> Self { get }
static var nio_atomic_store: @Sendable (UnsafeMutablePointer<AtomicWrapper>, Self) -> Void { get }
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, this change to duplicate the protocol definition was required because Swift 5.8, 5.9, and 5.10 do not support InferSendableFromCaptures.

Copy link
Contributor

@PeterAdams-A PeterAdams-A left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@Lukasa Lukasa added semver/minor Adds new public API. and removed semver/minor Adds new public API. labels Aug 8, 2024
@Lukasa Lukasa merged commit 4ea1f30 into apple:main Aug 8, 2024
29 of 30 checks passed
@Lukasa Lukasa deleted the cb-concurrency-helpers branch August 8, 2024 11:57
cgrindel-self-hosted-renovate bot referenced this pull request in cgrindel/rules_swift_package_manager Sep 10, 2024
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [apple/swift-nio](https://redirect.github.com/apple/swift-nio) | minor
| `2.70.0` -> `2.72.0` |

---

### Release Notes

<details>
<summary>apple/swift-nio (apple/swift-nio)</summary>

###
[`v2.72.0`](https://redirect.github.com/apple/swift-nio/releases/tag/2.72.0)

[Compare
Source](https://redirect.github.com/apple/swift-nio/compare/2.71.0...2.72.0)

<!-- Release notes generated using configuration in .github/release.yml
at main -->

#### What's Changed

##### SemVer Minor

- Add .compact format to ByteBuffer's hexdump method by
[@&#8203;supersonicbyte](https://redirect.github.com/supersonicbyte) in
[https://github.com/apple/swift-nio/pull/2856](https://redirect.github.com/apple/swift-nio/pull/2856)

##### SemVer Patch

- Make `assumeIsolated` work with SerialExecutors that are backed by
EventLoops by
[@&#8203;fabianfett](https://redirect.github.com/fabianfett) in
[https://github.com/apple/swift-nio/pull/2865](https://redirect.github.com/apple/swift-nio/pull/2865)

#### New Contributors

- [@&#8203;supersonicbyte](https://redirect.github.com/supersonicbyte)
made their first contribution in
[https://github.com/apple/swift-nio/pull/2856](https://redirect.github.com/apple/swift-nio/pull/2856)

**Full Changelog**:
apple/swift-nio@2.71.0...2.72.0

###
[`v2.71.0`](https://redirect.github.com/apple/swift-nio/releases/tag/2.71.0)

[Compare
Source](https://redirect.github.com/apple/swift-nio/compare/2.70.0...2.71.0)

<!-- Release notes generated using configuration in .github/release.yml
at main -->

#### What's Changed

##### SemVer Minor

- Adopt strict concurrency and Sendable in `NIOConcurrencyHelpers` by
[@&#8203;Lukasa](https://redirect.github.com/Lukasa) in
[https://github.com/apple/swift-nio/pull/2832](https://redirect.github.com/apple/swift-nio/pull/2832)
- Adopt strict concurrency in `_NIODataStructures` by
[@&#8203;Lukasa](https://redirect.github.com/Lukasa) in
[https://github.com/apple/swift-nio/pull/2835](https://redirect.github.com/apple/swift-nio/pull/2835)
- Provide documentation and context information for
`NIOTooManyBytesError` by
[@&#8203;cmcgee1024](https://redirect.github.com/cmcgee1024) in
[https://github.com/apple/swift-nio/pull/2831](https://redirect.github.com/apple/swift-nio/pull/2831)

##### SemVer Patch

- Adopt strict concurrency in `_NIOBase64` by
[@&#8203;Lukasa](https://redirect.github.com/Lukasa) in
[https://github.com/apple/swift-nio/pull/2838](https://redirect.github.com/apple/swift-nio/pull/2838)
- Remove symlinks from resources by
[@&#8203;Lukasa](https://redirect.github.com/Lukasa) in
[https://github.com/apple/swift-nio/pull/2841](https://redirect.github.com/apple/swift-nio/pull/2841)
- Fix global concurrency hook integration test by
[@&#8203;FranzBusch](https://redirect.github.com/FranzBusch) in
[https://github.com/apple/swift-nio/pull/2857](https://redirect.github.com/apple/swift-nio/pull/2857)

##### Other Changes

- Update wording from `ubuntu` to `Ubuntu` at README.md by
[@&#8203;lamtrinhdev](https://redirect.github.com/lamtrinhdev) in
[https://github.com/apple/swift-nio/pull/2830](https://redirect.github.com/apple/swift-nio/pull/2830)
- Update the triggers for the Semantic Version label check by
[@&#8203;FranzBusch](https://redirect.github.com/FranzBusch) in
[https://github.com/apple/swift-nio/pull/2833](https://redirect.github.com/apple/swift-nio/pull/2833)
- Add `.editorconfig` file by
[@&#8203;FranzBusch](https://redirect.github.com/FranzBusch) in
[https://github.com/apple/swift-nio/pull/2829](https://redirect.github.com/apple/swift-nio/pull/2829)
- Fix test availability by
[@&#8203;glbrntt](https://redirect.github.com/glbrntt) in
[https://github.com/apple/swift-nio/pull/2836](https://redirect.github.com/apple/swift-nio/pull/2836)
- Strict concurrency the early tests by
[@&#8203;Lukasa](https://redirect.github.com/Lukasa) in
[https://github.com/apple/swift-nio/pull/2840](https://redirect.github.com/apple/swift-nio/pull/2840)
- Fix `NIOFileSystem` flaky tests by
[@&#8203;gjcairo](https://redirect.github.com/gjcairo) in
[https://github.com/apple/swift-nio/pull/2842](https://redirect.github.com/apple/swift-nio/pull/2842)
- Improve `testTasksScheduledDuringShutdownAreAutomaticallyCancelled` by
[@&#8203;glbrntt](https://redirect.github.com/glbrntt) in
[https://github.com/apple/swift-nio/pull/2843](https://redirect.github.com/apple/swift-nio/pull/2843)
- Align benchmark scaling and minimum samples by
[@&#8203;FranzBusch](https://redirect.github.com/FranzBusch) in
[https://github.com/apple/swift-nio/pull/2839](https://redirect.github.com/apple/swift-nio/pull/2839)
- Explain why `ThreadLocalVariable` isn't Sendable. by
[@&#8203;Lukasa](https://redirect.github.com/Lukasa) in
[https://github.com/apple/swift-nio/pull/2845](https://redirect.github.com/apple/swift-nio/pull/2845)
- \[CI] Don't persist git credentials in CI by
[@&#8203;FranzBusch](https://redirect.github.com/FranzBusch) in
[https://github.com/apple/swift-nio/pull/2847](https://redirect.github.com/apple/swift-nio/pull/2847)
- \[CI] Mark the workspace as safe for the matrix job by
[@&#8203;FranzBusch](https://redirect.github.com/FranzBusch) in
[https://github.com/apple/swift-nio/pull/2848](https://redirect.github.com/apple/swift-nio/pull/2848)
- Pin DocC to below 1.4 by
[@&#8203;Lukasa](https://redirect.github.com/Lukasa) in
[https://github.com/apple/swift-nio/pull/2854](https://redirect.github.com/apple/swift-nio/pull/2854)
- \[CI] Make container images configurable in soundness and matrix jobs
… by [@&#8203;FranzBusch](https://redirect.github.com/FranzBusch) in
[https://github.com/apple/swift-nio/pull/2851](https://redirect.github.com/apple/swift-nio/pull/2851)
- Update release.yml by
[@&#8203;FranzBusch](https://redirect.github.com/FranzBusch) in
[https://github.com/apple/swift-nio/pull/2850](https://redirect.github.com/apple/swift-nio/pull/2850)

#### New Contributors

- [@&#8203;lamtrinhdev](https://redirect.github.com/lamtrinhdev) made
their first contribution in
[https://github.com/apple/swift-nio/pull/2830](https://redirect.github.com/apple/swift-nio/pull/2830)
- [@&#8203;cmcgee1024](https://redirect.github.com/cmcgee1024) made
their first contribution in
[https://github.com/apple/swift-nio/pull/2831](https://redirect.github.com/apple/swift-nio/pull/2831)

**Full Changelog**:
apple/swift-nio@2.70.0...2.71.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC43Mi4wIiwidXBkYXRlZEluVmVyIjoiMzguNzIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: cgrindel-self-hosted-renovate[bot] <139595543+cgrindel-self-hosted-renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
semver/minor Adds new public API.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants