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

Flights

Investigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.

New Flights are paused Configure model inference, GitHub, and a sandbox provider to start another Flight. Existing results remain available below.
No Flights yet

Start a Flight and preserve its objective, outcome, and session here.

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.