This canary improves caching reliability and fixes several generation, dependency, and testing edge cases.
Caching and artifacts
- Library targets, including static and dynamic libraries, can now be cached as binary XCFrameworks through the module cache alongside frameworks. Swift module directories and public headers are preserved on restore.
- Cache warming no longer parses Xcode activity logs for per-target build duration, removing a failure point when logs are missing or unparseable.
- The Bazel credential helper now refreshes your access token 60 seconds before it expires and reports an earlier expiry to Bazel, preventing mid-build UNAUTHENTICATED bursts during long remote-cache builds.
Generation and dependencies
- Very large dependency graphs no longer crash
tuist generatefrom stack overflow. Recursive graph traversals are now iterative across circular dependency linting, cycle detection, topological sort, module map generation, and static product linting. - Swift Package Manager dependencies that use newer warning-control APIs, such as
treatAllWarnings,treatWarning, andenableWarning, now load correctly and map to matching Xcode build flags. tuist inspect dependenciesnow detects implicit imports of modules exposed by SwiftPM binary XCFramework targets, and treats declared XCFramework dependencies as explicit forcanImportchecks.- Restored SwiftPM artifact extraction now uses the correct SwiftPM artifact scratch path.
Testing and distribution
- Suite-granularity test sharding now selects Swift Testing suites by passing
-only-testingidentifiers toxcodebuildinstead of mutating the.xctestrun, which previously skipped Swift Testing tests silently. - Suite shard destination resolution now respects the selected test plan, so multi-plan schemes resolve the correct concrete simulator destination for iOS shards.
- SwifterPM resolution now streams SwiftPM output, and extracted archives no longer pick stale
__MACOSXshadow bundles over real frameworks.