From 66250287e27c8ca0bb2c9c9bf91fe14c0c4db1f7 Mon Sep 17 00:00:00 2001 From: Oliver Drobnik Date: Wed, 3 Jun 2026 08:29:09 +0200 Subject: [PATCH 1/2] Update dependencies to latest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit swift package update + revision re-pin: - swift-argument-parser 1.7.0 → 1.8.1 - swift-collections 1.4.0 → 1.5.1 - swift-docc-plugin 1.4.6 → 1.5.0 - swift-log 1.10.1 → 1.13.1 - swift-nio-ssl revision ae6b517 → 407d82d (latest upstream main; still carries the #585 Windows BoringSSL header workarounds — no release contains them yet, latest tag is 2.37.0) Already at latest, unchanged: swift-nio (2.100.0), SwiftCross (1.2.0), swift-nio-imap (bcf8756, latest main — #829 still open so it stays Bionic), swift-atomics/system/syntax/docc-symbolkit/se0270/dotenv. swift-testing held at exact 0.12.0: latest is 6.3.2 but its manifest is swift-tools-version 6.2, which the macOS CI's Swift 6.1.2 toolchain cannot resolve. Bumping it requires also moving the macOS runner to Swift 6.2+. Build clean, 285 tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) --- Package.resolved | 18 +++++++++--------- Package.swift | 11 ++++++----- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/Package.resolved b/Package.resolved index 2212b11..ee80a06 100644 --- a/Package.resolved +++ b/Package.resolved @@ -5,8 +5,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-argument-parser", "state" : { - "revision" : "c5d11a805e765f52ba34ec7284bd4fcd6ba68615", - "version" : "1.7.0" + "revision" : "ca37474853a4b5f59a22c74bfdd449b1f6bc4cc2", + "version" : "1.8.1" } }, { @@ -23,8 +23,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-collections.git", "state" : { - "revision" : "8d9834a6189db730f6264db7556a7ffb751e99ee", - "version" : "1.4.0" + "revision" : "fea17c02d767f46b23070fdfdacc28a03a39232a", + "version" : "1.5.1" } }, { @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-docc-plugin", "state" : { - "revision" : "e977f65879f82b375a044c8837597f690c067da6", - "version" : "1.4.6" + "revision" : "647c708be89f834fa6a6d4945442793a77ddf5b6", + "version" : "1.5.0" } }, { @@ -59,8 +59,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-log.git", "state" : { - "revision" : "bbd81b6725ae874c69e9b8c8804d462356b55523", - "version" : "1.10.1" + "revision" : "2aed77ae5ec9a86d8fe42c12275e4c2653a286ee", + "version" : "1.13.1" } }, { @@ -85,7 +85,7 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-ssl", "state" : { - "revision" : "ae6b517f53289d72b7b0d4495b4609d25065deed" + "revision" : "407d82d5b6cc00e1c3fb83a81b1539b70c788c5e" } }, { diff --git a/Package.swift b/Package.swift index 6ff5471..7996632 100644 --- a/Package.swift +++ b/Package.swift @@ -57,13 +57,14 @@ let package = Package( url: "https://github.com/apple/swift-nio-imap", revision: "bcf875610ca56dfd7bae869fa19ca3149c075908" ), - // Pinned to the upstream commit that merged the Windows-SDK BoringSSL - // header workarounds (_WINSOCKAPI_/NOMINMAX/NOCRYPT scoped to the - // CNIOBoringSSL target, apple/swift-nio-ssl#585). Switch to a normal - // `from:` once a release ships with that fix. + // Pinned to the latest upstream main, which carries the Windows-SDK + // BoringSSL header workarounds (_WINSOCKAPI_/NOMINMAX/NOCRYPT scoped to + // the CNIOBoringSSL target, apple/swift-nio-ssl#585). No release contains + // that fix yet (latest tag is 2.37.0) — switch to a normal `from:` once + // one ships. .package( url: "https://github.com/apple/swift-nio-ssl", - revision: "ae6b517f53289d72b7b0d4495b4609d25065deed" + revision: "407d82d5b6cc00e1c3fb83a81b1539b70c788c5e" ), .package(url: "https://github.com/apple/swift-collections.git", from: "1.0.0"), .package(url: "https://github.com/apple/swift-testing", exact: "0.12.0"), From 877ba40d5f4d1b5f3d28366718bf85cfc8f8e2cb Mon Sep 17 00:00:00 2001 From: Oliver Drobnik Date: Wed, 3 Jun 2026 08:36:32 +0200 Subject: [PATCH 2/2] Bump swift-testing to 6.3.2; raise macOS CI to Swift 6.2 (Xcode 26) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit swift-testing's standalone releases now track toolchain versions. 6.3.2's manifest is swift-tools-version 6.2 (and it requires swift-syntax 603.x for its macros, so swift-syntax bumps 600.0.1 → 603.0.1), which the macOS CI's default Xcode (Swift 6.1.2) cannot resolve. The build-macos job now selects Xcode 26.0 (Swift 6.2) — the same Xcode the iOS job already uses, so it's known to be available on the runner. The Linux (6.3.1), Android (6.3.2) and Windows (6.3.1) runners already clear that floor. Also refreshed stale swift-testing 0.12.0 / swift-nio-imap 0.3.1-pre references in the Android job comments. Build + 285 tests pass locally (Swift 6.3). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/swift.yml | 22 +++++++++++++++------- Package.resolved | 8 ++++---- Package.swift | 6 +++++- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index 15710ae..ba1cc38 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -18,6 +18,14 @@ jobs: timeout-minutes: 10 steps: - uses: actions/checkout@v6 + # swift-testing 6.3.2 (shared by the test targets) has a swift-tools-version + # 6.2 manifest, which the runner's default Xcode (Swift 6.1.2) cannot + # resolve. Xcode 26.0 ships Swift 6.2 — same version already used by the + # iOS job, so it is known to be available on the runner. + - name: Select Xcode 26.0 + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: "26.0" - name: Verify Swift version run: swift --version - name: Build (macOS) @@ -92,11 +100,11 @@ jobs: build-android: # Cross-build the SwiftMail library for Android via skiptools/swift-android-action. # - # Build-only (no test run): swift-testing 0.12.0 — an exact pin shared by - # every test target — does not compile against Bionic, so we validate that - # the library cross-compiles rather than the test suites. The earlier - # "invalid redeclaration of 'badOS'" blocker is fixed by depending on - # swift-nio-imap 0.3.1-pre, which adds Android/Bionic to its libc guards. + # Build-only (no test run): the test targets depend on swift-testing, whose + # Android compatibility is not validated here, so we check that the library + # cross-compiles rather than the test suites. The earlier "invalid + # redeclaration of 'badOS'" blocker is fixed upstream by apple/swift-nio-imap + # #826 (commit bcf8756), which adds Android/Bionic to NIOIMAPCore's libc guards. # # Package.swift also drops the ArgumentParser-based CLI demos on Android # (keyed on the TARGET_OS_ANDROID env the action sets) to avoid a spurious @@ -113,7 +121,7 @@ jobs: swift-version: "6.3.2" # SDK + NDK overrun the runner's ~14 GiB free space. free-disk-space: true - # Skip building/running the test targets (swift-testing 0.12.0 is not - # Android-compatible); build the library + its dependencies only. + # Skip building/running the test targets (swift-testing's Android + # compatibility is unverified); build the library + its deps only. build-tests: false run-tests: false diff --git a/Package.resolved b/Package.resolved index ee80a06..32b59c4 100644 --- a/Package.resolved +++ b/Package.resolved @@ -102,8 +102,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-syntax.git", "state" : { - "revision" : "0687f71944021d616d34d922343dcef086855920", - "version" : "600.0.1" + "revision" : "9de99a78f099e59caf2b2beec65a4c45d54b2081", + "version" : "603.0.1" } }, { @@ -120,8 +120,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-testing", "state" : { - "revision" : "c55848b2aa4b29a4df542b235dfdd792a6fbe341", - "version" : "0.12.0" + "revision" : "70eff261d7f462cad1fff51e05bcc74aa0b0f420", + "version" : "6.3.2" } }, { diff --git a/Package.swift b/Package.swift index 7996632..9b8a906 100644 --- a/Package.swift +++ b/Package.swift @@ -67,7 +67,11 @@ let package = Package( revision: "407d82d5b6cc00e1c3fb83a81b1539b70c788c5e" ), .package(url: "https://github.com/apple/swift-collections.git", from: "1.0.0"), - .package(url: "https://github.com/apple/swift-testing", exact: "0.12.0"), + // swift-testing releases track toolchain versions: 6.3.2's manifest is + // swift-tools-version 6.2, so every platform that compiles the test + // targets needs Swift 6.2+. The macOS CI job selects Xcode 26 for that + // reason (Linux/Android/Windows runners are already on Swift 6.3.x). + .package(url: "https://github.com/apple/swift-testing", exact: "6.3.2"), .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"), .package(url: "https://github.com/apple/swift-argument-parser", from: "1.3.0") ],