swiftly は、Swift ツールチェーンのインストール、管理、切り替えを行うための CLI ツールであり、Swift で書かれています。 swiftly 自体は、インストールと実行が非常に簡単になるように設計されており、そのコマンド インターフェイスは柔軟でありながら使いやすいように設計されています。全体的なエクスペリエンスは、Rust ツールチェーン マネージャーのrusup からインスピレーションを得ており、それを彷彿とさせるものになっています。
このプロジェクトの継続的なメンテナンスと管理は 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
Swift の特定のバージョンをinstall
コマンドに提供できます。
$ swiftly install 5.6.1
パッチ バージョンが指定されていない場合、Swiftly は指定されたマイナー バージョンに一致する最新のパッチ バージョンを検索してインストールします。
$ swiftly install 5.6
$ swiftly install main-snapshot-2022-01-28
日付が指定されていない場合、Swiftly は利用可能な最新のスナップショットを検索してインストールします。
$ swiftly install main-snapshot
$ swiftly install 5.7-snapshot-2022-08-30
日付が指定されていない場合、Swiftly は指定された開発ブランチに関連付けられた最新のスナップショットを検索してインストールします。
$ 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 経由で見つかり、シェルで実行される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
ツールチェーンを使用すると、シェルでのコマンドがそのツールチェーンで実行されます。
$ 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
以前に使用していたツールチェーンに切り替えることなく、特定のツールチェーンで 1 つのコマンドだけを実行したい場合は、そのバージョンでswiftly run
コマンドを使用できます。このコマンドは、現在のリリースの最新のスナップショット ツールチェーンを使用して現在のパッケージをビルドします。
$ swiftly run swift build +main-snapshot
「+」の付いたパラメーターは、これが使用するツールチェーンのバージョン セレクターであり、上記およびswiftly install
コマンドで示したセレクターの全範囲をサポートしていることを示します。ツールチェーンを使用してコマンドを実行するには、ツールチェーンをインストールする必要があります。
Update は、特定のツールチェーンをそのツールチェーンの新しいバージョンに置き換えます。安定したリリースの場合、これは、新しいパッチ、マイナー バージョン、またはメジャー バージョンに更新することを意味します。スナップショットの場合、これは、利用可能な最新のスナップショットに更新することを意味します。
バージョンが指定されていない場合、Update は現在選択されているツールチェーンを、リリース ツールチェーンの場合は最新のパッチ リリースに更新し、スナップショットの場合は最新の利用可能なスナップショットに更新します。新しくインストールされたバージョンが選択されます。
$ 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
正規名の形式は、スナップショット ツールチェーンを参照するために必要なキーストロークを減らすために選択されましたが、長い形式は、他の場所から提供されたツールチェーン名をコピー/ペーストするときにも役立ちます。
Swift コミュニティへようこそ!
Swiftly への貢献は歓迎され、奨励されます。 Contributing to Swift ガイドを参照し、コミュニティの構造を確認してください。
本当に素晴らしいコミュニティになるために、Swift は、さまざまな背景を持ち、幅広い経験を持つあらゆる分野の開発者を歓迎する必要があります。多様でフレンドリーなコミュニティは、より優れたアイデア、よりユニークな視点を持ち、より優れたコードを生成します。私たちは、Swift コミュニティが誰にとっても歓迎されるものとなるよう、熱心に取り組んでいきます。
メンバーに期待されることを明確にするために、スウィフトは寄稿者規約によって定義された行動規範を採用しました。この文書は多くのオープンソース コミュニティで使用されており、私たちの価値観がよく表現されていると考えています。詳細については、行動規範を参照してください。
apt
またはyum
) を介して Swift をインストールしてはどうでしょうか? Swift.org は現在、パッケージ マネージャー経由で Swift をインストールできる実験的な.rpm
および.deb
パッケージを提供しています。これらは、単一バージョンの Swift をインストールおよび更新するには効果的な方法ですが、簡単に切り替えることができる複数の Swift ツールチェーンをインストールするタスクにはあまり適していません。 swiftly の対象読者は、ライブラリとアプリケーションをテストする目的でバージョンを切り替える Swift 開発者です。 .deb
と.rpm
も現在、スナップショット ツールチェーンのサポートを提供していません。
swiftenv は既存の Swift バージョン マネージャーであり、Swiftly が最終的に持つことになる機能の多くをすでに備えています。これは素晴らしいツールです。ワークフローの一部である場合は、引き続き使用することをお勧めします。そうは言っても、Swiftly はいくつかの点で異なります。
swiftly は、Swift サーバー ワークグループが主導するコミュニティ主導の取り組みとして構築されており、このコラボレーションを通じて、swiftly は最終的に Swift ツールチェーンの公式インストール ツールとなる予定です。それに向けた最初のステップとして、Swiftly は、インストールできるツールチェーンに関する情報を取得し、予期される署名を検証するために使用する、Swift プロジェクトによって維持される API エンドポイントの作成に通知するのに役立ちます。 swiftenv は現在、これにサードパーティの API レイヤーを使用しています。公式 API を使用すると、セキュリティの脆弱性への侵入経路が減り、Swift インストールに影響を与えるダウンタイムのリスクも軽減されます。
swiftly は Swift で作成されます。これは保守性とコミュニティへの貢献を促進するために重要であると考えられます。
Swiftly には、スナップショット ツールチェーンのインストールと管理のための最上級のサポートが備わっています。
Swiftly には、ツールチェーンの更新サポートが組み込まれています。
Swiftly はインストールを容易にするために最適化されており、Homebrew や Rustup と同様の bash ワンライナーで実行できます。さらに、Swiftly では、ユーザーのシステムにシステム依存関係をインストールする必要がありません。 swiftenv も比較的簡単にインストールできますが、git リポジトリのクローン作成や Homebrew の使用が必要で、いくつかのシステム依存関係 (bash、curl、tar など) が必要です。