From d6099d86bb5338bba6343fff27946c5eabf15c1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Bernhardt?= Date: Tue, 15 Sep 2026 15:12:30 +0200 Subject: [PATCH] =?UTF-8?q?CHANGELOG:=201.0.20=20upgrade=20note=20?= =?UTF-8?q?=E2=80=94=20stale=20pins=20of=20pre-split=20pointfree=20package?= =?UTF-8?q?s=20conflict=20on=20Swift=206.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01b7838..6accccc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ All notable changes are documented here. The format follows [Keep a Changelog](h Verified with the full suite on both Xcode 26 (6.3.3 → `xctest-dynamic-overlay` 1.13.1) and Xcode 27 (6.4 → `swift-issue-reporting` 2.1.0), and by parallel-phoenix-apple's `StudioPreview` / `StreamsApp` schemes building on Xcode 27 against the patched package. + **Upgrade note for Xcode 27 / Swift 6.4 consumers.** The switch only removes the second identity if *every* declarer in your graph has moved. Older releases of other pointfree packages declare `xctest-dynamic-overlay` unconditionally — `swift-clocks` < 1.1.1, `swift-custom-dump` < 1.7.3, `swift-snapshot-testing` < 1.19.4 are the ones we hit — and a `Package.resolved` that still pins one of those fails on 6.4 with *"multiple packages ('swift-issue-reporting', 'xctest-dynamic-overlay') declare products with a conflicting name: 'IssueReportingTestSupport'"*. `swift package update` did **not** move those pins in our checkout; deleting `Package.resolved` (and `.build`, or Xcode's package cache via *File ▸ Packages ▸ Reset Package Caches*) and resolving fresh did. Check with `grep xctest-dynamic-overlay Package.resolved` — on 6.4 it should not be there. + ### Tests - **The test suite compiles on Swift 6.4 (Xcode 27.0).** 6.4's region-isolation checker rejects two `withTaskCancellationHandler` call sites in `CancellationTests` and `InheritCancellationContextTests` ("passing closure as a `sending` parameter risks causing data races"): the `onCancel` closure implicitly captured a `LockIsolated` counter that the enclosing `model.task { }` closure also uses, and the checker merges the two closures' regions. An explicit `[$count]` / `[$cancelCount]` capture list gives `onCancel` its own copy of the (Sendable) reference and the checker is satisfied. No behavioural change; the library itself already compiled on 6.4 once 1.0.19 landed.