Swiftly는 Swift로 작성된 Swift 툴체인을 설치, 관리 및 전환하기 위한 CLI 도구입니다. 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
특정 버전의 Swift가 install
명령에 제공될 수 있습니다.
$ swiftly install 5.6.1
패치 버전이 지정되지 않은 경우 제공된 부 버전과 일치하는 최신 패치 버전을 신속하게 찾아 설치합니다.
$ 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를 통해 발견되고 셸에서 실행되는 swift
명령을 통해 호출됩니다. 도구 체인을 사용하려면 먼저 설치해야 합니다.
정확한 릴리스 버전 "major.minor.patch" 및 스냅샷을 포함하여 툴체인을 사용하기 위해 swiftly install
사용한 것과 동일한 버전 선택기를 제공할 수 있습니다.
$ 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
이전에 사용한 도구로 다시 전환할 필요 없이 특정 도구 모음에서 하나의 명령만 실행하려면 해당 버전에서 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
그러나 Swift는 Swift.org에서 제공하는 다운로드의 스냅샷 도구 체인 파일 이름도 허용합니다. 예를 들어:
swift-DEVELOPMENT-SNAPSHOT-2022-09-10-a
swift-5.7-DEVELOPMENT-SNAPSHOT-2022-08-30-a
스냅샷 툴체인을 참조하는 데 필요한 키 입력을 줄이기 위해 표준 이름 형식이 선택되었지만 다른 곳에서 제공된 툴체인 이름을 복사/붙여넣을 때 더 긴 형식이 유용합니다.
Swift 커뮤니티에 오신 것을 환영합니다!
Swiftly에 대한 기여는 환영받고 격려됩니다! Swift에 기여 가이드를 참조하고 커뮤니티 구조를 확인하세요.
진정으로 훌륭한 커뮤니티가 되려면 Swift는 다양한 배경과 광범위한 경험을 가진 각계각층의 개발자를 환영해야 합니다. 다양하고 친근한 커뮤니티는 더 훌륭한 아이디어, 더 독특한 관점을 갖고 더 훌륭한 코드를 생성할 것입니다. 우리는 Swift 커뮤니티가 모든 사람을 환영할 수 있도록 열심히 노력할 것입니다.
회원들에게 기대되는 것이 무엇인지 명확하게 하기 위해 Swift는 기여자 규약에 정의된 행동 강령을 채택했습니다. 이 문서는 많은 오픈 소스 커뮤니티에서 사용되며 우리의 가치를 잘 표현하고 있다고 생각합니다. 자세한 내용은 행동강령을 참조하세요.
apt
또는 yum
)를 통해 Swift를 설치하면 어떨까요? Swift.org는 현재 패키지 관리자를 통해 Swift를 설치할 수 있는 실험적인 .rpm
및 .deb
패키지를 제공합니다. 이는 단일 버전의 Swift를 설치하고 업데이트하는 효과적인 방법이지만, 쉽게 전환할 수 있는 여러 Swift 툴체인을 설치하는 작업에는 적합하지 않습니다. Swiftly의 대상 고객은 라이브러리와 애플리케이션을 테스트하기 위해 버전을 전환하는 Swift 개발자입니다. .deb
및 .rpm
도 현재 스냅샷 도구 모음에 대한 지원을 제공하지 않습니다.
Swiftenv는 Swift가 결국 갖게 될 많은 기능을 이미 갖고 있는 기존 Swift 버전 관리자입니다. 이는 훌륭한 도구입니다. 귀하의 작업 흐름에 포함되어 있다면 계속해서 사용하시길 권장합니다! 즉, 몇 가지 면에서 신속하게 달라질 것입니다.
Swiftly는 Swift 서버 작업 그룹이 이끄는 커뮤니티 중심의 노력으로 구축되고 있으며, 이 협력을 통해 Swift 툴체인의 공식 설치 도구가 될 것입니다. 이를 향한 첫 번째 단계로 Swift 프로젝트에서 유지 관리하는 API 엔드포인트 생성을 신속하게 알리고 설치에 사용할 수 있는 툴체인에 대한 정보를 검색하고 예상 서명을 확인하는 데 사용할 것입니다. Swiftenv는 현재 이를 위해 타사 API 레이어를 사용합니다. 공식 API를 사용하면 보안 취약성에 대한 경로가 줄어들고 Swift 설치에 영향을 미치는 가동 중지 시간의 위험도 줄어듭니다.
신속하게 Swift로 작성될 예정이며, 이는 유지 관리성과 커뮤니티 기여 장려에 중요하다고 생각합니다.
Swiftly는 스냅샷 툴체인 설치 및 관리에 대한 최고 수준의 지원을 제공합니다.
Swiftly는 툴체인 업데이트를 지원합니다.
Swiftly는 설치가 쉽도록 최적화되어 있습니다. Homebrew 및 Rustup과 유사한 bash 단일 라이너로 수행할 수 있습니다. 또한 사용자 시스템에 시스템 종속성을 신속하게 설치할 필요가 없습니다. Swiftenv는 상대적으로 설치가 쉽지만 git 저장소 복제 또는 Homebrew 사용이 포함되며 몇 가지 시스템 종속성(예: bash, 컬, tar)이 필요합니다.