Modern Swift concurrency#19
Merged
Merged
Conversation
…rrency Enable the NonisolatedNonsendingByDefault and InferIsolatedConformances upcoming features across every target, bringing the package's async execution semantics in line with modern Swift 6 defaults. Drop the redundant @preconcurrency qualifier from all `import RegexBuilder` lines. Sendability of the cached, actor-confined compiled regexes is carried by the existing `Regex: @retroactive @unchecked Sendable` conformance, which is retained (now with an explanatory comment) until the standard library conforms `Regex` to `Sendable` itself. No legacy concurrency remained to unwind: there was no GCD, no DispatchSemaphore/DispatchGroup, no MainActor.run/assumeIsolated, no nonisolated(unsafe), no Timer/RunLoop, and no continuation-wrapped callbacks. The package already used parsing actors, async/await entry points, and AsyncStream producers, so the public API is observably identical for callers. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Record the Approachable Concurrency adoption in the change log. No public API signatures changed; the bump is MINOR because the upcoming-feature flags modernize the package's async execution semantics module-wide. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Adopts Swift's Approachable Concurrency upcoming-feature flags and finishes
the package's move to modern structured concurrency.
NonisolatedNonsendingByDefaultandInferIsolatedConformancesacross every target, aligning the package's async execution semantics with
modern Swift 6 defaults.
@preconcurrencyqualifier from allimport RegexBuilderlines. Sendability of the cached, actor-confinedcompiled regexes is still carried by the package's existing
Regex: @retroactive @unchecked Sendableconformance (now with anexplanatory comment), which is retained until the standard library conforms
RegextoSendableitself.SwiftMETAR was already a modern structured-concurrency codebase: it uses
parsing actors,
async/awaitentry points, andAsyncStreamproducers.There was no GCD, no
DispatchSemaphore/DispatchGroup, noMainActor.run/assumeIsolated, nononisolated(unsafe), and no continuation-wrappedcallbacks to unwind.
Public API
No change. Entry points remain
static func from(string:on:lenientRemarks:) async throws -> Self(METAR/TAF/WindsAloft) and
static func from(xml:) -> AsyncStream<XMLParseResult<Self>>(METAR/TAF).The async parsers and
AsyncStreamproducers are observably identical forcallers; only an internal import qualifier was removed and an internal
retroactive
Sendableconformance was kept.Verification
swift build --build-testssucceeds cleanly.swift formatproduced no further changes andswiftlintis clean on thechanged files.
Version
This is a MINOR release:
3.1.0. The bump reflects a module-widemodernization of async execution semantics with no source-breaking public
API change. The GitHub release will be cut after this PR is merged.
🤖 Generated with Claude Code