Hive Hive
Sign in

chore(cli): bump swifterpm for subprocess-based resolution and Package.resolved stability

GitHub issue · Closed

Metadata
Source
tuist/tuist #11258
Updated
Jun 24, 2026
Domains
Generated projects
Details

Summary

Updates the pinned tuist/swifterpm revision from 672a723 to f75a054, picking up three upstream commits:

  • #35 — Make SwifterPMCore resolve through SwiftPM subprocess. Moves dependency resolution out of in-process linkage into a SwiftPM subprocess, which simplifies the integration surface and decouples our binary from internal SwiftPM symbols.
  • #32 — Fix binary artifact downloads and Package.resolved stability. Addresses two long-standing issues: binary artifacts (e.g. Sparkle’s xcframework) failing to download cleanly under some cache states, and unnecessary churn in Package.resolved between runs.
  • f75a054 — release-trigger commit so the above ship.

Only Package.swift (revision pin) and Package.resolved (lockfile refresh) change in this repo. No code changes were required — the new SwifterPMCore revision is API-compatible with our current callers in TuistSupport and TuistLoader.

Why this matters

The subprocess-based resolution path (#35) is the bigger of the two. With the previous in-process linkage we paid a recurring tax every time SwiftPM’s internals shifted; the subprocess boundary insulates us from that. Combined with the Package.resolved stability fix, this should mean fewer spurious diffs in Package.resolved on user machines.

Validation

End-to-end against this repo with a locally built tuist linking the new revision:

  • tuist install — clean run from an empty cache restored 82 registry packages + 3 SCM packages and cached package-info (~25s cold, ~2.6s warm). Restored entries in .build/checkouts and .build/registry/downloads are symlinks into ~/.cache/swifterpm/sources/..., as expected.
  • tuist generate tuist ProjectDescription --no-open — succeeded, exercising SwiftPackageManagerGraphLoader which reads the new package-info cache. Only the pre-existing duplicate-dependency warnings appear; no new diagnostics.
  • xcodebuild build -workspace Tuist.xcworkspace -scheme tuist** BUILD SUCCEEDED **.

Unit tests covering the integration:

  • TuistSupportTests/SwiftPackageManagerControllerTests — 12/12 passing (including all swifterpm_is_enabled resolve/update paths).
  • TuistLoaderTests/SwiftPackageManagerGraphLoaderTests — 10/10 passing (including swifterPMPackageInfoCache fresh/stale and registry/SCM mixed-dependency cases).

Test plan

  • CI green
  • Spot-check a fresh tuist install on a clean cache after merging

🤖 Generated with Claude Code

Comments
T
tuist[bot] Jun 12, 2026

🛠️ Tuist Run Report 🛠️

Previews 📦
App Commit Open on device
Tuist 410559e2b
Tests 🧪
Scheme Status Cache hit rate Tests Skipped Ran Commit
TuistAcceptanceTests 0 % 0 0 0 410559e2b
TuistApp 38 % 28 0 28 37c5345a2
TuistUnitTests 36 % 2975 4 2971 37c5345a2
Flaky Tests ⚠️
  • TuistUnitTests: 3 flaky tests (View all)
Test case Module Suite
parseTestStatuses_returnsCorrectStatuses() TuistXCResultServiceTests XCResultServiceTests
parseTestStatuses_extractsModuleAndSuiteNames() TuistXCResultServiceTests XCResultServiceTests
parseTestWithCustomLabelXCResult() TuistXCResultServiceTests XCResultServiceTests
Builds 🔨
Scheme Status Duration Commit
TuistAcceptanceTests 3m 34s 410559e2b
TuistApp 1.1s 410559e2b
TuistUnitTests 4m 59s 37c5345a2
Bundles 🧰
Bundle Commit Install size Download size
Tuist 410559e2b 20.1 MBΔ +505.7 KB (+2.58%) 15.0 MBΔ +225.2 KB (+1.53%)
TA
tuist-atlas[bot] Jun 13, 2026

This PR is included in CLI 4.200.1, available now.

Update to get the subprocess-based SwifterPM resolution and Package.resolved stability fixes.