1.2.0
Swiftly 1.2.0 focuses on platform support and installation reliability: new Linux distros, several fixes for macOS SDK/Xcode resolution, a self-uninstall command, and a big internal migration to Swift's Subprocess library for process management.
Highlights
- Self-uninstall support.
swiftlycan now remove itself, in addition to individual toolchains (#344). uninstallaccepts multiple selectors in one invocation, e.g.swiftly uninstall 5.9 5.10(#413).- New platform support: Ubuntu 26.04, Debian 13 (#575) and Fedora 41, with Fedora/UBI9 switched from
yumtodnf(#530, #529). x.y.z-snapshottoolchain versions are now recognized, fixing installs of versions like6.4-snapshot(#549, #561).swiftly list --format jsonnow includes each toolchain's install location (#502).- Process management was migrated to Swift's
Subprocesslibrary, replacing ad hocFoundation.Processusage (#410, later bumped to 1.0.0 in #558).
Fixes & Improvements
- Fixed a runtime crash and cleaned up messaging in
self-update(#415, #417, #440). swiftly run -hnow shows help instead of erroring (#452), and--versionno longer errors withquick(#458).--usereliably selects the requested toolchain (#456), and error messages when a.swift-versiontoolchain is missing are clearer (#540).- Xcode selector resolution, macOS SDK existence checks, and the simulated CLT/SDK layout were all fixed for more reliable macOS installs (#455, #480, #541).
- The macOS SDK is no longer installed into the user account (#486), and the
TOOLCHAINSenvironment variable is now set correctly when proxying on macOS (#491). - Fixed swiftly deleting itself when installed via Homebrew on Linux (#503) and GPG key import during install (#453).
SWIFTLY_BIN_DIRis now prepended toPATH(#492); symlinks are followed correctly when resolving target files (#460);zipwas added as a required Linux dependency (#451).- Unlinked-toolchain warnings now go to stderr instead of stdout (#459), and the update-available message uses a plain ASCII arrow (#448).
swiftly initno longer wraps its post-install script incorrectly (#500) and is more resilient on new platforms (#588); env.sh command expansion was fixed (#591); the verbose flag now propagates to the macOS installer (#583).- Release naming keeps an explicit patch version starting with Swift 6.4 (#595), and the pkg installer's temp file now uses the correct platform file extension (#552).
Documentation
- Added a troubleshooting guide (#479).
- Fixed Zsh auto-completion setup instructions (#411), re-ordered uninstall instructions (#389), fixed broken doc links (#519), and fixed two typos (#474).
New Contributors
- @tomassliz made their first contribution in #411
- @incertum made their first contribution in #433
- @xwu made their first contribution in #448
- @gibachan made their first contribution in #452
- @bkhouri made their first contribution in #456
- @timsneath made their first contribution in #474
- @ahoppen made their first contribution in #487
- @marcprux made their first contribution in #503
- @ktoso made their first contribution in #561
Full Changelog: 1.1.4...1.2.0
Full PR list (raw)
- Fix runtime error in self-update by @cmcgee1024 in #415
- Remove redundant check for updates message in self-update by @cmcgee1024 in #417
- use HTTPRequestExecutorImpl client for libarchive by @justice-adams-apple in #420
- Add a simple test for any self-update subcommand parse errors by @cmcgee1024 in #418
- Testing:
withMockedHome: Forward errors from function under test by @etcwilde in #424 - Support multiple toolchain selectors with
uninstallby @plemarquand in #413 - [Documentation] re-order uninstall instructions by @justice-adams-apple in #389
- Bump swift version to 6.2.0 to support new macOS SDK in CI by @cmcgee1024 in #426
- Fix Zsh auto-completions setup instructions by @tomassliz in #411
- Clean up unused code and replace Path with URL to resolve warnings by @belkhadir in #407
- Add ability to self uninstall swiftly by @louisunlimited in #344
- chore: restrict GitHub workflow permissions - future-proof by @incertum in #433
- Work around read bytes main by @cmcgee1024 in #442
- Bump package dependencies and libarchive by @cmcgee1024 in #428
- Update message: prefer ASCII arrow by @xwu in #448
- Fix self update macOS by @cmcgee1024 in #440
- Fix build warnings by @SimplyDanny in #445
- Add zip as a dependency on Linux distributions by @plemarquand in #451
- Fix
swiftly run -hto show help message by @gibachan in #452 - Use Subprocess for process management by @cmcgee1024 in #410
- fixed quick --version error by @johnbute in #458
- Print unlinked warning to standard error instead of standard out by @cmcgee1024 in #459
- Skip
tests-selfhosted-macosjobs on forked repositories by @kkebo in #465 - Ensure
--usewill select the toolchain by @bkhouri in #456 - fix: import GPG keys when installing swiftly by @louisunlimited in #453
- Add release branches to the pull request checks by @cmcgee1024 in #466
- Fix nightly smoke test failure by @cmcgee1024 in #468
- Bump swift version to 6.2.1 by @cmcgee1024 in #469
- Fix two minor typos by @timsneath in #474
- Follow symlinks to reach target file by @SimplyDanny in #460
- Fix build warnings by @SimplyDanny in #461
- Fix resolution of the xcode selector to the xcode version by @cmcgee1024 in #455
- Add a troubleshooting guide by @cmcgee1024 in #479
- Ensure the macOS SDK exists at install time by @justice-adams-apple in #480
- Move
CODEOWNERSto.github/CODEOWNERSby @ahoppen in #487 - Skip macOS CI jobs on forked repositories by @kkebo in #471
- Don't install the SL SDK into the user account by @cmcgee1024 in #486
- Extract common lookup logic by @SimplyDanny in #462
- Update macOS runner label in build_release.yml to Tahoe by @shahmishal in #493
- Bump subprocess to 0.3.0 by @cmcgee1024 in #497
- Update dependencies, especially swift-subprocess by @SimplyDanny in #495
- Prepend SWIFTLY_BIN_DIR to the PATH by @cmcgee1024 in #492
- Set TOOLCHAINS environment variable for macOS when proxying by @cmcgee1024 in #491
- Prevent wrapping of post installation script in swiftly init by @cmcgee1024 in #500
- Include toolchain location in
swiftly list --format jsonby @plemarquand in #502 - Fix reliability of release workflow by @cmcgee1024 in #511
- Swiftly deletes itself when installed on Linux with Homebrew by @marcprux in #503
- Docs: fix broken links by @bkhouri in #519
- Configure Dependabot for GitHub Actions updates by @shahmishal in #522
- Update swiftly version to 1.3.0-dev for the main branch by @cmcgee1024 in #527
- DNF: Switching Fedora and UBI9 to dnf instead of yum by @etcwilde in #529
- Fedora41: Adding fedora41 support by @etcwilde in #530
- Use: improve error message when .swift-version toolchain is missing by @cmcgee1024 in #540
- Bump swift version to 6.3.2 by @cmcgee1024 in #543
- Add SDKs directory to simulated CLT directory by @cmcgee1024 in #541
- Swiftly-Use: JSON: Handle no selected toolchain by @etcwilde in #546
- ToolchainVersion: Support x.y.z-snapshot version scheme by @shahmishal in #549
- Update tmpfile for swiftly pkg to use platform file extension by @justice-adams-apple in #552
- Handle install 6.4-snapshot properly by @ktoso in #561
- Add support for Ubuntu 26.04 and Debian 13 by @kkebo in #575
- Bump Swiftly to Swift-Subprocess 1.0.0 by @etcwilde in #558
- Preparing Swiftly 1.2 Release Candidate by @etcwilde in #581
- Propagate verbose flag to running the macOS installer by @cmcgee1024 in #583
- 1.2🍒: Init: Improve resilience on new platforms by @etcwilde in #588
- [1.2] Keep explicit patch version in release naming starting with Swift 6.4 by @shahmishal in #595
- 🍒Fix command expansion in env.sh by @etcwilde in #591
- Drop
-devfrom 1.2 by @etcwilde in #598