diff --git a/.github/workflows/compatibility_tests.yml b/.github/workflows/compatibility_tests.yml index b66aaccf..ce12df1c 100644 --- a/.github/workflows/compatibility_tests.yml +++ b/.github/workflows/compatibility_tests.yml @@ -14,7 +14,7 @@ jobs: matrix: include: - os: macos-15 - xcode-version: "16.4" # Swift 6.1.2 + xcode-version: "26.3" # Swift 6.2.4 runs-on: ${{ matrix.os }} env: OPENATTRIBUTEGRAPH_WERROR: 1 @@ -36,7 +36,9 @@ jobs: shell: bash - name: Run tests against Apple's AttributeGraph on macOS via SwiftPM run: | + # Swift 6.2.4 crashes while indexing C++ interop test targets. swift test \ + --disable-index-store \ --build-path .build-compatibility-test-debug - name: Run tests against Apple's AttributeGraph on macOS via Xcode run: | @@ -46,4 +48,4 @@ jobs: -sdk macosx \ -destination "platform=macOS" \ -skipPackagePluginValidation \ - -skipMacroValidation \ No newline at end of file + -skipMacroValidation diff --git a/.github/workflows/compute.yml b/.github/workflows/compute.yml index 85c28b79..4a2a48a1 100644 --- a/.github/workflows/compute.yml +++ b/.github/workflows/compute.yml @@ -12,7 +12,9 @@ jobs: strategy: fail-fast: false matrix: - swift_version: ["6.2"] + # Swift 6.2.4 crashes swift-frontend when compiling C++ interop on Linux. + # Swift 6.3.2 has been verified locally on Linux. + swift_version: ["6.3.2"] runs-on: ubuntu-22.04 env: OPENATTRIBUTEGRAPH_WERROR: 1 @@ -36,7 +38,7 @@ jobs: fail-fast: false matrix: os: [macos-15] - xcode-version: ["16.4"] + xcode-version: ["26.3"] runs-on: ${{ matrix.os }} env: OPENATTRIBUTEGRAPH_WERROR: 1 @@ -59,7 +61,7 @@ jobs: fail-fast: false matrix: os: [macos-15] - xcode-version: ["16.4"] + xcode-version: ["26.3"] ios-version: ["18.5"] include: - ios-version: "18.5" diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index bbd6cc1e..90b4f500 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: [macos-15] - xcode-version: ["16.4"] # Swift 6.1.2 + xcode-version: ["26.3"] # Swift 6.2.4 ios-version: ["18.5"] include: - ios-version: "18.5" @@ -38,6 +38,7 @@ jobs: shell: bash - name: Build in debug mode on iOS run: | + # Swift 6.2.4 crashes while indexing C++ interop test targets. xcodebuild build \ -workspace .swiftpm/xcode/package.xcworkspace \ -scheme OpenAttributeGraph-Package \ @@ -46,9 +47,11 @@ jobs: -derivedDataPath .build-debug \ -skipMacroValidation \ -skipPackagePluginValidation \ + COMPILER_INDEX_STORE_ENABLE=NO \ OTHER_SWIFT_FLAGS="-warnings-as-errors" - name: Build and run tests in debug mode with coverage on iOS Simulator run: | + # Swift 6.2.4 crashes while indexing C++ interop test targets. xcodebuild test \ -workspace .swiftpm/xcode/package.xcworkspace \ -scheme OpenAttributeGraph-Package \ @@ -57,7 +60,8 @@ jobs: -enableCodeCoverage=YES \ -derivedDataPath .build-test-debug \ -skipPackagePluginValidation \ - -skipMacroValidation + -skipMacroValidation \ + COMPILER_INDEX_STORE_ENABLE=NO # OTHER_SWIFT_FLAGS="-warnings-as-errors" Conflicting options '-warnings-as-errors' and '-suppress-warnings' - name: Generate iOS coverage report run: | diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 0f5c24bd..8d2946a7 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: [macos-15] - xcode-version: ["16.4"] # Swift 6.1.2 + xcode-version: ["26.3"] # Swift 6.2.4 runs-on: ${{ matrix.os }} env: OPENATTRIBUTEGRAPH_WERROR: 1 @@ -34,7 +34,9 @@ jobs: shell: bash - name: Build and run tests in debug mode with coverage run: | + # Swift 6.2.4 crashes while indexing C++ interop test targets. swift test \ + --disable-index-store \ -c debug \ --enable-code-coverage \ --build-path .build-test-debug @@ -44,7 +46,9 @@ jobs: > coverage.txt - name: Build and run tests in release mode run: | + # Swift 6.2.4 crashes while indexing C++ interop test targets. swift test \ + --disable-index-store \ -c release \ --enable-code-coverage \ --build-path .build-test-release diff --git a/.github/workflows/oag_binary.yml b/.github/workflows/oag_binary.yml index 2b778688..859d5431 100644 --- a/.github/workflows/oag_binary.yml +++ b/.github/workflows/oag_binary.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: [macos-15] - xcode-version: ["16.4"] + xcode-version: ["26.3"] runs-on: ${{ matrix.os }} env: OPENATTRIBUTEGRAPH_WERROR: 1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b63fc91f..44a2a8c4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: - name: Setup Xcode uses: OpenSwiftUIProject/setup-xcode@v2 with: - xcode-version: "16.4" + xcode-version: "26.3" - name: Build XCFramework run: ./Scripts/build_xcframework.sh - name: Compute Checksum diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 7642134f..45687ac2 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -12,7 +12,9 @@ jobs: strategy: fail-fast: false matrix: - swift_version: ["6.1.3"] + # Swift 6.2.4 crashes swift-frontend when compiling C++ interop tests on Linux. + # Swift 6.3.2 has been verified locally on Linux. + swift_version: ["6.3.2"] runs-on: ubuntu-22.04 env: OPENATTRIBUTEGRAPH_WERROR: 1 diff --git a/.github/workflows/xcframework.yml b/.github/workflows/xcframework.yml index 5770cc0d..f80aee33 100644 --- a/.github/workflows/xcframework.yml +++ b/.github/workflows/xcframework.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: [macos-15] - xcode-version: ["16.4"] # Swift 6.1.2 + xcode-version: ["26.3"] # Swift 6.2.4 runs-on: ${{ matrix.os }} env: GH_TOKEN: ${{ github.token }} diff --git a/.gitmodules b/.gitmodules index ad3cb7b2..acac8b53 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "Checkouts/swift"] path = Checkouts/swift url = https://github.com/OpenSwiftUIProject/swift-runtime-headers.git - branch = release/6.1 + branch = release/6.2 diff --git a/.swiftformat b/.swiftformat index 7786ea23..c8df86df 100644 --- a/.swiftformat +++ b/.swiftformat @@ -1,7 +1,7 @@ # OpenAttributeGraph SwiftFormat configuration # Swift version ---swiftversion 6.1 +--swiftversion 6.2 # Indentation --indent 4 diff --git a/Checkouts/swift b/Checkouts/swift index 358e0e0c..42c0a0f7 160000 --- a/Checkouts/swift +++ b/Checkouts/swift @@ -1 +1 @@ -Subproject commit 358e0e0c5d8e4df91c6d20d2f152f7c6f6cbccf1 +Subproject commit 42c0a0f7b02cc040c5a537fc5c577ca9b884dff8 diff --git a/Example/Project.swift b/Example/Project.swift index ce75b319..5c3aec6e 100644 --- a/Example/Project.swift +++ b/Example/Project.swift @@ -1,7 +1,13 @@ import ProjectDescription +let indexStoreDisabledSettings: SettingsDictionary = [ + // Swift 6.2.4 crashes while indexing C++ interop package targets. + "COMPILER_INDEX_STORE_ENABLE": "NO", +] + let project = Project( name: "Example", + settings: .settings(base: indexStoreDisabledSettings), targets: [ .target( name: "Example", @@ -13,7 +19,8 @@ let project = Project( dependencies: [ .sdk(name: "c++", type: .library), .external(name: "OpenAttributeGraph"), - ] + ], + settings: .settings(base: indexStoreDisabledSettings) ), ] ) diff --git a/Example/Tuist/Package.resolved b/Example/Tuist/Package.resolved new file mode 100644 index 00000000..e8cf1f64 --- /dev/null +++ b/Example/Tuist/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "b4d69cd3c6294a612f2691e0c9ace37d5e8c8904296914f23e337abb762050c2", + "pins" : [ + { + "identity" : "swift-numerics", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-numerics", + "state" : { + "revision" : "0c0290ff6b24942dadb83a929ffaaa1481df04a2", + "version" : "1.1.1" + } + } + ], + "version" : 3 +} diff --git a/Example/Tuist/Package.swift b/Example/Tuist/Package.swift index 47233079..9384c666 100644 --- a/Example/Tuist/Package.swift +++ b/Example/Tuist/Package.swift @@ -1,10 +1,24 @@ -// swift-tools-version: 6.1 +// swift-tools-version: 6.2 import PackageDescription +#if TUIST +import ProjectDescription + +let indexStoreDisabledSettings: SettingsDictionary = [ + // Swift 6.2.4 crashes while indexing C++ interop package targets. + "COMPILER_INDEX_STORE_ENABLE": "NO", +] + +let packageSettings = PackageSettings( + baseSettings: .settings(base: indexStoreDisabledSettings) +) +#endif + let package = Package( name: "ExampleDependencies", dependencies: [ .package(path: "../../"), + .package(url: "https://github.com/apple/swift-numerics", from: "1.1.1"), ] ) diff --git a/Example/mise.toml b/Example/mise.toml new file mode 100644 index 00000000..9d16c181 --- /dev/null +++ b/Example/mise.toml @@ -0,0 +1,2 @@ +[tools] +tuist = "4.193.0" diff --git a/Example/setup.sh b/Example/setup.sh new file mode 100755 index 00000000..56e8dd6e --- /dev/null +++ b/Example/setup.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" + +cd "$SCRIPT_DIR" +mise trust "$SCRIPT_DIR/mise.toml" +mise install +mise exec -- tuist install +mise exec -- tuist generate --no-open diff --git a/Package.resolved b/Package.resolved index f59a13c9..57e4020e 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "2f39e651a0cb4fde3ebe01ff1f4c24b6fdca8e340f73bc84f4aa95788eb86a34", + "originHash" : "8ff54a8b5b5dd48d5063d7d4ba0df9538c13f86fa2c17d5aafb0dde80b7ec8cd", "pins" : [ { "identity" : "swift-numerics", diff --git a/Package.swift b/Package.swift index 3a26ce3e..e4115dc3 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.1 +// swift-tools-version: 6.2 import Foundation import PackageDescription @@ -430,9 +430,9 @@ func setupDPFDependency() { if computeCondition { let computeBinary = envBoolValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY", default: false) if computeBinary { - let version = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_BINARY_VERSION", default: "0.1.0") + let version = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_BINARY_VERSION", default: "0.2.1") let url = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_BINARY_URL", default: "https://github.com/jcmosc/Compute/releases/download/\(version)/Compute.xcframework.zip") - let checksum = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY_CHECKSUM", default: "e32dd27fa4df4928be69d4171bcb3d47192bebb467f70bfd728cca56d44682d6") + let checksum = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY_CHECKSUM", default: "44eb3f08b9da4e7e308bfb2654b36e6752547e8ba5ec33e19e0648c686990153") package.targets.append( .binaryTarget( name: "Compute", @@ -445,7 +445,7 @@ if computeCondition { if useLocalDeps { computeRepo = Package.Dependency.package(path: "../Compute") } else { - computeRepo = Package.Dependency.package(url: "https://github.com/jcmosc/Compute", exact: "0.1.0") + computeRepo = Package.Dependency.package(url: "https://github.com/jcmosc/Compute", exact: "0.2.1") } package.dependencies.append(computeRepo) } diff --git a/README.md b/README.md index d26ffd01..4d640246 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ For a simpler setup, you can use the prebuilt XCFramework available on the [rele ## Build -The current suggested toolchain to build the project is Swift 6.1.2 / Xcode 16.4. +The current suggested toolchain to build the project is Swift 6.2.4 / Xcode 26.3. ### Clone Swift headers diff --git a/Scripts/CI/ag_setup.sh b/Scripts/CI/ag_setup.sh index bca52591..f2859649 100755 --- a/Scripts/CI/ag_setup.sh +++ b/Scripts/CI/ag_setup.sh @@ -6,10 +6,14 @@ filepath() { } REPO_ROOT="$(dirname $(dirname $(dirname $(filepath $0))))" +DARWINPRIVATEFRAMEWORKS_FALLBACK_REVISION="b0c3d94ff6b7200754ad2adf948fd3c6ebaef956" clone_checkout_ag() { cd $REPO_ROOT - revision=$(Scripts/CI/get_revision.sh darwinprivateframeworks) + if ! revision=$(Scripts/CI/get_revision.sh darwinprivateframeworks 2>/dev/null); then + revision="$DARWINPRIVATEFRAMEWORKS_FALLBACK_REVISION" + echo "No pinned revision for DarwinPrivateFrameworks, using fallback revision: $revision" + fi cd .. if [ ! -d DarwinPrivateFrameworks ]; then gh repo clone OpenSwiftUIProject/DarwinPrivateFrameworks @@ -23,8 +27,6 @@ clone_checkout_ag() { fi if [ -n "$revision" ]; then git checkout --quiet "$revision" - else - echo "No pinned revision for DarwinPrivateFrameworks, using default branch." fi } diff --git a/Tests/OpenAttributeGraphTestsSupport/DataHelper.swift b/Tests/OpenAttributeGraphTestsSupport/DataHelper.swift index d7152a99..53cc2b5f 100644 --- a/Tests/OpenAttributeGraphTestsSupport/DataHelper.swift +++ b/Tests/OpenAttributeGraphTestsSupport/DataHelper.swift @@ -12,6 +12,8 @@ public struct Tuple { } } +extension Tuple: Sendable where A: Sendable, B: Sendable {} + public struct Triple { public var first: A public var second: B @@ -23,3 +25,5 @@ public struct Triple { self.third = third } } + +extension Triple: Sendable where A: Sendable, B: Sendable, C: Sendable {} diff --git a/Tuist/Package.swift b/Tuist/Package.swift index 85b0f148..fccb7e3b 100644 --- a/Tuist/Package.swift +++ b/Tuist/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 6.1 +// swift-tools-version: 6.2 import PackageDescription #if TUIST