From 2f7de3831b46b89ea3179142029601e7e4f60410 Mon Sep 17 00:00:00 2001 From: Andreas Grosam Date: Sun, 24 May 2026 01:31:39 +0200 Subject: [PATCH 1/4] fix: avoid send name collision in observable runtime --- .../EffectView/EffectObservable/EffectObservable.swift | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/EffectView/EffectObservable/EffectObservable.swift b/Sources/EffectView/EffectObservable/EffectObservable.swift index d435ffe..ab5e247 100644 --- a/Sources/EffectView/EffectObservable/EffectObservable.swift +++ b/Sources/EffectView/EffectObservable/EffectObservable.swift @@ -34,7 +34,7 @@ public final class EffectObservable< internal(set) public var state: State @ObservationIgnored - private var send: Send? + private var runtimeSend: Send? @ObservationIgnored nonisolated(unsafe) private var runtimeUnavailable: RuntimeUnavailable? @ObservationIgnored @@ -71,7 +71,7 @@ public final class EffectObservable< env: env ) self._input = Input(self) - self.send = send + self.runtimeSend = send if let event = initialEvent { Task { do { @@ -117,7 +117,7 @@ public final class EffectObservable< /// critical failure, or `CancellationError` if accepted work is later cancelled. public func send(_ event: Event) async throws { try checkRuntimeAvailability() - guard let send = send else { + guard let send = runtimeSend else { throw RuntimeUnavailable.actorCancelled } do { @@ -184,7 +184,7 @@ public final class EffectObservable< // TODO: consider to to add a Task cancellation handler which sends a corresponding control event to the transducer. // The transducer's action on this is currently "implementation defined". It *could* have no effect on the task operation, or it *could* cancel it. try checkRuntimeAvailability() - guard let send = self.send, let input = _input else { + guard let send = self.runtimeSend, let input = _input else { throw RuntimeUnavailable.actorCancelled } return try await withCheckedThrowingContinuation { (continuation: Continuation) in @@ -246,7 +246,7 @@ public final class EffectObservable< runtimeUnavailable = .actorCancelled - guard let send else { + guard let send = runtimeSend else { return } From 4a5d4eded0fcd527c882f3ef9d05c472fb0fb2a6 Mon Sep 17 00:00:00 2001 From: Andreas Grosam Date: Sun, 24 May 2026 01:44:12 +0200 Subject: [PATCH 2/4] fix: avoid nil continuation inference in observable runtime --- Sources/EffectView/EffectObservable/EffectObservable.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/EffectView/EffectObservable/EffectObservable.swift b/Sources/EffectView/EffectObservable/EffectObservable.swift index ab5e247..7a311b4 100644 --- a/Sources/EffectView/EffectObservable/EffectObservable.swift +++ b/Sources/EffectView/EffectObservable/EffectObservable.swift @@ -75,7 +75,7 @@ public final class EffectObservable< if let event = initialEvent { Task { do { - try await send(event, input: _input, continuation: nil) + try await send(event, input: _input) } catch { print("could not process initial event: \(error)") // TODO: consider sending a control event @@ -121,7 +121,7 @@ public final class EffectObservable< throw RuntimeUnavailable.actorCancelled } do { - try await send(event, input: _input, continuation: nil) + try await send(event, input: _input) } catch { let boundaryError = runtimeBoundaryError(for: error) if let runtimeUnavailable = boundaryError as? RuntimeUnavailable { From d22d9335b16d030666d1bd7a1d9d5a0cc750ed68 Mon Sep 17 00:00:00 2001 From: Andreas Grosam Date: Sun, 24 May 2026 02:04:36 +0200 Subject: [PATCH 3/4] ci: run tests on macos-26 with Xcode 26.5 --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b5204d7..ff237e4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,13 +12,13 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [macos-15] + os: [macos-26] steps: - uses: actions/checkout@v4 - name: Select Xcode - run: sudo xcode-select -s /Applications/Xcode_26.3.app + run: sudo xcode-select -s /Applications/Xcode_26.5.app - name: Show Swift version run: swift --version From 084caf5f4678b5b3f8d36b3ec0e50a82ae9f2762 Mon Sep 17 00:00:00 2001 From: Andreas Grosam Date: Sun, 24 May 2026 18:11:37 +0200 Subject: [PATCH 4/4] fix: work around release compiler crash in observable deinit --- Sources/EffectView/EffectObservable/EffectObservable.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/EffectView/EffectObservable/EffectObservable.swift b/Sources/EffectView/EffectObservable/EffectObservable.swift index 7a311b4..688a06d 100644 --- a/Sources/EffectView/EffectObservable/EffectObservable.swift +++ b/Sources/EffectView/EffectObservable/EffectObservable.swift @@ -84,6 +84,7 @@ public final class EffectObservable< } } + @_optimize(none) // https://github.com/swiftlang/swift/issues/82523 isolated deinit { cancel() }