This canary extends the module cache to static and dynamic library products and introduces canary, release candidate, and stable release channels.
- Module cache: static and dynamic library targets are now cached as binary XCFrameworks, including public headers and Swift module paths.
- Release channels: CLI releases are now published as canary, release candidate, or stable, so you can pick the stability level you install.
- Warm builds: Tuist keeps generated dependency module maps stable when their contents have not changed, so incremental builds stay incremental.
- Large projects: recursive graph traversals are now iterative, so very deep dependency graphs no longer crash during generation.
- Protobuf:
.protofiles are treated as sources and placed in the Xcode Sources phase. - Test sharding: suite-level sharding now selects Swift Testing suites, and suite shard destinations respect the chosen test plan.
- Dependencies: SwiftPM warning control settings are honored, implicit imports from SwiftPM binary XCFrameworks are detected, and SwiftPM static library artifact bundles are supported.
- Bazel cache: the credential helper refreshes access tokens before they expire, preventing mid-build
UNAUTHENTICATEDerrors. - Cache warm: cache warming no longer parses Xcode activity logs for unused target build time metadata.
- SwifterPM: artifact restores use SwiftPM’s scratch path,
__MACOSXshadow bundles are stripped, andswift package resolveoutput is streamed.