swiftly 是一个 CLI 工具,用于安装、管理和在 Swift 工具链之间切换,用 Swift 编写。 swiftly 本身的设计非常容易安装和运行,其命令界面既灵活又易于使用。整体体验的灵感来自于 Rust 工具链管理器 rustup,并且让人想起它。
该项目的持续维护和管理由 SSWG 领导。
要快速下载并安装 Swift,请在终端中运行以下命令,然后按照屏幕上的说明进行操作。
curl -L https://swiftlang.github.io/swiftly/swiftly-install.sh | bash
或者,您可以下载 swiftly 二进制文件,它可以自行安装:
swiftly init
$ swiftly install latest
Fetching the latest stable Swift release...
Installing Swift 5.8.1
Downloaded 488.5 MiB of 488.5 MiB
Extracting toolchain...
Swift 5.8.1 installed successfully!
$ swift --version
Swift version 5.8.1 (swift-5.8.1-RELEASE)
Target: x86_64-unknown-linux-gnu
$PATH
发现哪个工具链)目前,swiftly 正处于开发的早期阶段,并在 Linux 和 macOS 上受支持。有关 swiftly 的预期功能和实现的更多详细信息,请查看设计文档。
$ swiftly install latest
可以向install
命令提供特定版本的 Swift。
$ swiftly install 5.6.1
如果未指定补丁版本,则 swiftly 将查找并安装与提供的次要版本匹配的最新补丁版本:
$ swiftly install 5.6
$ swiftly install main-snapshot-2022-01-28
如果未指定日期,则会迅速查找并安装最新的可用快照:
$ swiftly install main-snapshot
$ swiftly install 5.7-snapshot-2022-08-30
如果未指定日期,将迅速查找并安装与提供的开发分支关联的最新快照:
$ swiftly install 5.7-snapshot
$ swiftly uninstall 5.6.3
要卸载与给定次要版本关联的所有工具链,请忽略补丁版本:
$ swiftly uninstall 5.6
$ swiftly uninstall main-snapshot-2022-08-30
$ swiftly uninstall 5.7-snapshot-2022-08-30
要卸载与给定分支(主分支或发布分支)关联的所有快照,请省略日期:
$ swiftly uninstall main-snapshot
$ swiftly uninstall 5.7-snapshot
list
命令快速打印安装的所有工具链:
$ swiftly list
“使用”工具链将其设置为活动工具链,这意味着它将是通过 $PATH 找到并通过在 shell 中执行的swift
命令调用的工具链。必须先安装工具链才能使用它。
您可以提供与swiftly install
相同的版本选择器来使用工具链,包括确切的发布版本“major.minor.patch”和快照。
$ swiftly use latest
$ swiftly use 5.3.1
$ swiftly use 5.3
$ swiftly use 5.3-snapshot
$ swiftly use 5.3-snapshot-2022-08-16
$ swiftly use main-snapshot
$ swiftly use main-snapshot-2024-06-18
使用工具链后,shell 中的命令将使用该工具链运行:
$ swiftly use x.y.z
$ swift build # Build my package with toolchain version x.y.z
$ clang -c foo.c -o foo.o # Compile this C file using the clang compiler in toolchain version x.y.z
$ lldb # Open the debugger from toolchain version x.y.z
如果您只想使用特定工具链运行一个命令,而不必切换回之前使用的命令,则可以使用该版本的swiftly run
命令。此命令使用当前版本的最新快照工具链构建当前包:
$ swiftly run swift build +main-snapshot
带“+”的参数表示这是要使用的工具链的版本选择器,并支持上面显示的全系列选择器和swiftly install
命令。必须安装工具链才能使用该工具链运行命令。
更新将给定的工具链替换为该工具链的更高版本。对于稳定版本,这意味着更新到更高的补丁、次要版本或主要版本。对于快照,这意味着更新到最新可用的快照。
如果未提供版本,则更新会将当前选定的工具链更新到最新的补丁版本(如果是版本工具链)或最新的可用快照(如果是快照)。将选择新安装的版本。
$ swiftly update
要将最新安装的发行版本更新为最新可用的发行版本,可以提供“最新”版本。请注意,这可能会将工具链更新到下一个次要版本甚至主要版本。
swiftly update latest
如果仅指定主要版本,则具有该主要版本的最新安装的工具链将更新为该主要版本的最新可用版本:
swiftly update 5
如果指定了主要版本和次要版本,则与该主要/次要版本关联的最新安装的工具链将更新为该主要/次要版本的最新可用补丁版本。
swiftly update 5.3
您还可以指定完整版本以将该工具链更新到该主要/次要版本可用的最新补丁:
swiftly update 5.3.1
同样,要更新与特定版本关联的最新快照,可以提供“ab-snapshot”版本:
swiftly update 5.3-snapshot
您还可以通过提供main-snapshot
将最新安装的主快照更新为最新的可用快照:
swiftly update main-snapshot
可以通过包含日期将特定快照工具链更新为该分支的最新可用快照:
swiftly update 5.9-snapshot-2023-09-20
list-available
命令可用于列出 Apple 可供安装的最新工具链。
请注意,此命令尚未实现,但它将包含在未来的版本中。
swiftly list-available
可以选择提供选择器来缩小结果范围:
$ swiftly list-available 5.6
$ swiftly list-available main-snapshot
$ swiftly list-available 5.7-snapshot
该命令检查swiftly
本身是否有新版本,如果有则升级。
请注意,此命令尚未实现,但它将包含在未来的版本中。
swiftly self-update
swiftly 的命令界面中快照工具链的规范名称如下:
<branch>-snapshot-YYYY-MM-DD
但是,swiftly 还接受 swift.org 提供的下载中的快照工具链文件名。例如:
swift-DEVELOPMENT-SNAPSHOT-2022-09-10-a
swift-5.7-DEVELOPMENT-SNAPSHOT-2022-08-30-a
选择规范名称格式是为了减少引用快照工具链所需的击键次数,但在复制/粘贴从其他地方提供的工具链名称时,较长的形式也很有用。
欢迎来到斯威夫特社区!
欢迎并鼓励对 Swiftly 做出贡献!请参阅 Swift 贡献指南并查看社区的结构。
要成为一个真正伟大的社区,Swift 需要欢迎来自各行各业、具有不同背景和丰富经验的开发者。一个多元化、友好的社区将会有更多伟大的想法、更独特的观点、并产生更多伟大的代码。我们将努力工作,让 Swift 社区欢迎所有人。
为了明确我们对会员的期望,Swift 采用了贡献者契约定义的行为准则。该文档在许多开源社区中使用,我们认为它很好地阐明了我们的价值观。有关更多信息,请参阅行为准则。
apt
或yum
)安装 Swift? Swift.org 目前提供实验性.rpm
和.deb
软件包,允许您通过软件包管理器安装 Swift。虽然这些是安装和更新单个 Swift 版本的有效方法,但它们不太适合安装多个可以轻松切换的 Swift 工具链的任务。 swiftly 的目标受众是为了测试其库和应用程序而在版本之间切换的 Swift 开发人员。 .deb
和.rpm
目前也不提供对快照工具链的支持。
swiftenv 是一个现有的 Swift 版本管理器,它已经拥有 swift 最终将拥有的大部分功能。这是一个很棒的工具,如果它是您工作流程的一部分,那么我们鼓励您继续使用它!也就是说,swiftly 在以下几个方面有所不同:
swiftly 是由 Swift 服务器工作组领导的社区驱动项目,通过此次合作,swiftly 最终将成为 Swift 工具链的官方安装工具。作为实现这一目标的第一步,swiftly 将帮助通知 Swift 项目维护的 API 端点的创建,它将用于检索有关可安装哪些工具链并验证其预期签名的信息。 swiftenv 目前为此使用第三方 API 层。使用官方 API 可以减少出现安全漏洞的可能性,还可以降低影响 Swift 安装的停机风险。
swiftly 将用 Swift 编写,我们认为这对于可维护性和鼓励社区贡献很重要。
迅速为安装和管理快照工具链提供一流的支持。
swiftly 内置了对更新工具链的支持。
swiftly 已针对易于安装进行了优化——可以使用类似于 Homebrew 和 rustup 的 bash 单行代码来完成。此外,swiftly 不需要在用户系统上安装任何系统依赖项。虽然 swiftenv 也相对容易安装,但它确实涉及克隆 git 存储库或使用 Homebrew,并且需要一些系统依赖项(例如 bash、curl、tar)。