From 72f74ee21ead1f860e3d7db2eb75af5480169b09 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Tue, 15 Oct 2024 13:28:24 +0100 Subject: [PATCH 1/2] CI: concurrency=complete require-explicit-sendable Motivation: Adopt `-Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable` in CI to lock-in concurrency-safety wins. Modifications: Added strict flags to pull request and scheduled GHA CI on Swift 6.0. Result: CI should ensure we don't regress data-race safety on Swift 6.0. --- .github/workflows/pull_request.yml | 5 +++-- .github/workflows/scheduled.yml | 5 +++-- Package.swift | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 49f07c9..1f8b1b9 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -16,8 +16,9 @@ jobs: with: linux_5_9_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" - linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error" - linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error" + linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" + linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" + linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" benchmarks: name: Benchmarks diff --git a/.github/workflows/scheduled.yml b/.github/workflows/scheduled.yml index ac7ff07..ede16a7 100644 --- a/.github/workflows/scheduled.yml +++ b/.github/workflows/scheduled.yml @@ -12,5 +12,6 @@ jobs: linux_5_8_enabled: false linux_5_9_arguments_override: "--explicit-target-dependency-import-check error" linux_5_10_arguments_override: "--explicit-target-dependency-import-check error" - linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error" - linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error" + linux_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" + linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" + linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" diff --git a/Package.swift b/Package.swift index 2f2ef40..889a061 100644 --- a/Package.swift +++ b/Package.swift @@ -17,7 +17,8 @@ import PackageDescription import class Foundation.ProcessInfo let upcomingFeatureSwiftSettings: [SwiftSetting] = [ - .enableUpcomingFeature("ExistentialAny") + .enableUpcomingFeature("ExistentialAny"), + .enableUpcomingFeature("StrictConcurrency"), ] let package = Package( From 489a0fef10bd2d5a9e4ceac50ec07c5734817ee9 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Wed, 16 Oct 2024 10:36:08 +0100 Subject: [PATCH 2/2] review comments --- .github/workflows/pull_request.yml | 6 +++--- .github/workflows/scheduled.yml | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 1f8b1b9..7f9974d 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -16,9 +16,9 @@ jobs: with: linux_5_9_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" - linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" - linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" - linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" + linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" + linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" + linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" benchmarks: name: Benchmarks diff --git a/.github/workflows/scheduled.yml b/.github/workflows/scheduled.yml index ede16a7..b971be4 100644 --- a/.github/workflows/scheduled.yml +++ b/.github/workflows/scheduled.yml @@ -10,8 +10,8 @@ jobs: uses: apple/swift-nio/.github/workflows/unit_tests.yml@main with: linux_5_8_enabled: false - linux_5_9_arguments_override: "--explicit-target-dependency-import-check error" - linux_5_10_arguments_override: "--explicit-target-dependency-import-check error" - linux_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" - linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" - linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -strict-concurrency=complete -Xswiftc -require-explicit-sendable" + linux_5_9_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" + linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" + linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" + linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" + linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable"