Skip to content

Conversation

@czechboy0
Copy link
Contributor

@czechboy0 czechboy0 commented Oct 24, 2025

Motivation

These 5 fixes are intertwined and were difficult to split out, so here's one PR that fixes them all.

Modifications

  • The PR enables NonisolatedNonsendingByDefault, which caused an error in the existing combineLatest implementation, which we wanted to replace anyway.
  • So we vendor in the code from Swift Async Algoritms (the PR is open here: Add a combineLatestMany algorithm swift-async-algorithms#360), the plan is to remove this copy when it lands in async algos.
  • Updating the combineLatest implementation to the correct one requires the async sequences to be Sendable, which in turn requires Swift 6.2 for us to be able to spell any (AsyncSequence & Sendable) correctly, it doesn't work on 6.1.
  • We also enabled the explicit sendable warning in CI, helping us ensure all our public API is explicitly annotated as Sendable or not.

Result

Addressed 5 important issues that impact the API and concurrency.

Test Plan

Brought over tests for the new combineLatest implementation, added more unit tests for failure cases when using the ConfigReader with multiple providers.

@czechboy0 czechboy0 requested a review from FranzBusch October 24, 2025 13:35
@czechboy0 czechboy0 added the 🆕 semver/minor Adds new public API. label Nov 3, 2025
@czechboy0 czechboy0 marked this pull request as ready for review November 4, 2025 12:30
@czechboy0 czechboy0 changed the title Swift 6.2 as minimum toolchain version and concurrency fixes NonisolatedNonsendingByDefault and other concurrency fixes Nov 4, 2025
@czechboy0
Copy link
Contributor Author

API breakage is red because adding nonisolated(nonsending) is detected as a breaking change, no other breakages.

@czechboy0 czechboy0 merged commit 8076a44 into apple:main Nov 4, 2025
25 of 26 checks passed
@czechboy0 czechboy0 deleted the hd-swift-6.2 branch November 4, 2025 18:10
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

2 participants