Skip to content

v1.20.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 01:33
· 38 commits to main since this release
eacc35d

This release adds support for Swift 6.4 (#229) and SwiftUI macros (#101).

Behavior is a lot closer to Xcode thanks to SwiftBuild, which should resolve many previous incompatibilities (such as issues with xcframeworks). There will probably be some growing pains, so please file any issues that you encounter.

Breaking changes

Linux

You'll need to re-install the Darwin SDK after updating. We recommend you take this opportunity to update to Xcode 27 + Swift 6.4.

Reinstallation is needed because we have a new Darwin SDK layout. It allows xtool to automatically rebuild the SDK any time we change the layout / add new components in the future (#110). For example, if a future update of xtool added watchOS support (or, more imminently, added more macros), the new layout means you wouldn't need to re-install the SDK again.

One tradeoff: the new format bundles the entirety of Xcode.app/Contents/Developer, which increases size on disk from ~3 GB to ~7 GB. You may opt out with xtool sdk install --slim (this may be useful in ephemeral environments like CI).

macOS

The authentication backend (Anisette provider) has changed from Omnisette to XADI. If you use Apple ID auth (i.e. not an App Store Connect API key), you'll need to log in again after updating. (#259)

General

IDE support now relies on a BSP (Build Server Protocol) server. On Swift 6.4, we directly tap into SwiftBuild rather than using SwiftPM's --swift-sdk. This means we can't "simply" use a .sourcekit-lsp/config.json for IDE support. Instead, we now create a .bsp/xtool.json file that points SourceKit to our custom Build Server. xtool will automatically create this file for you when using Swift 6.4. If needed, you can disable it by setting skipLSP: true in xtool.yml.

New Contributors

Full Changelog: 1.19.2...1.20.0