Swiftly — это инструмент CLI для установки, управления и переключения между цепочками инструментов Swift, написанный на Swift. Swiftly сам по себе спроектирован таким образом, чтобы его было чрезвычайно легко установить и запустить, а его командный интерфейс должен быть гибким и простым в использовании. Общий опыт вдохновлен и призван напоминать Rustup менеджер цепочки инструментов Rust.
Текущее обслуживание и руководство этим проектом осуществляет 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 найдет и установит последний доступный снимок:
$ 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
Если вы хотите запустить только одну команду с определенной цепочкой инструментов без необходимости возвращаться к той, которую вы использовали ранее, вы можете использовать команду 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
Канонический формат имени был выбран для уменьшения количества нажатий клавиш, необходимых для обращения к цепочке инструментов моментального снимка, но более длинная форма также полезна при копировании/вставке имени цепочки инструментов, предоставленного откуда-то еще.
Добро пожаловать в сообщество Swift!
Вклад в Swiftly приветствуется и поощряется! Пожалуйста, ознакомьтесь с руководством «Вклад в Swift» и ознакомьтесь со структурой сообщества.
Чтобы быть по-настоящему великим сообществом, Swift должен приветствовать разработчиков из всех слоев общества, с разным опытом и опытом. Разнообразное и дружелюбное сообщество будет иметь больше замечательных идей, больше уникальных точек зрения и создавать больше отличного кода. Мы будем усердно работать над тем, чтобы сообщество Swift было гостеприимным для всех.
Чтобы внести ясность в то, что ожидается от наших членов, Swift принял кодекс поведения, определенный Соглашением для участников. Этот документ используется во многих сообществах с открытым исходным кодом, и мы считаем, что он хорошо отражает наши ценности. Дополнительную информацию см. в Кодексе поведения.
apt
или yum
)? Swift.org в настоящее время предоставляет экспериментальные пакеты .rpm
и .deb
, которые позволяют вам установить Swift через менеджер пакетов. Хотя это эффективный способ установки и обновления одной версии Swift, они не очень подходят для задачи установки нескольких наборов инструментов Swift, между которыми можно легко переключаться. Целевая аудитория Swiftly — разработчики Swift, которые переключаются между версиями в целях тестирования своих библиотек и приложений. .deb
и .rpm
также в настоящее время не обеспечивают поддержку цепочек инструментов моментальных снимков.
Swiftenv — это существующий менеджер версий Swift, который уже имеет большую часть функций, которые со временем появятся в Swift. Это потрясающий инструмент, и если он является частью вашего рабочего процесса, мы рекомендуем вам продолжать его использовать! Тем не менее, быстро есть/будет отличаться несколькими способами:
Swiftly создается в результате усилий сообщества под руководством рабочей группы серверов Swift, и благодаря этому сотрудничеству Swiftly в конечном итоге станет официальным инструментом установки для цепочек инструментов Swift. В качестве первого шага к этому, Swiftly поможет информировать о создании конечных точек API, поддерживаемых проектом Swift, которые он будет использовать для получения информации о том, какие цепочки инструментов доступны для установки, и для проверки их ожидаемых подписей. Swiftenv в настоящее время использует для этого сторонний уровень API. Использование официального API сокращает возможности возникновения уязвимостей в системе безопасности, а также снижает риск простоев, влияющих на установки Swift.
Swiftly будет написан на Swift, что, по нашему мнению, важно для удобства сопровождения и поощрения вклада сообщества.
Swiftly имеет первоклассную поддержку для установки и управления цепочками инструментов моментальных снимков.
Swiftly имеет встроенную поддержку обновления цепочек инструментов.
Swiftly оптимизирован для простоты установки — это можно сделать с помощью однострочника bash, аналогичного Homebrew и Rustup. Кроме того, Swiftly не потребует установки каких-либо системных зависимостей в системе пользователя. Хотя установка Swiftenv также относительно проста, она требует клонирования репозитория git или использования Homebrew, а также требует наличия нескольких системных зависимостей (например, bash, curl, tar).