Swiftly est un outil CLI permettant d'installer, de gérer et de basculer entre les chaînes d'outils Swift, écrit en Swift. Swiftly lui-même est conçu pour être extrêmement facile à installer et à exécuter, et son interface de commande est conçue pour être flexible tout en étant simple à utiliser. L’expérience globale est inspirée et censée rappeler le rustup du gestionnaire de chaîne d’outils Rust.
La maintenance continue et la gestion de ce projet sont dirigées par le SSWG.
Pour télécharger et installer rapidement Swift, exécutez ce qui suit dans votre terminal, puis suivez les instructions à l'écran.
curl -L https://swiftlang.github.io/swiftly/swiftly-install.sh | bash
Alternativement, vous pouvez télécharger le binaire Swiftly et il peut s'installer tout seul :
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
)À l’heure actuelle, Swiftly en est aux premiers stades de développement et est pris en charge sur Linux et macOS. Pour des informations plus détaillées sur les fonctionnalités prévues et la mise en œuvre de Swiftly, consultez le document de conception.
$ swiftly install latest
Une version spécifique de Swift peut être fournie à la commande install
.
$ swiftly install 5.6.1
Si aucune version de correctif n'est spécifiée, Swiftly recherchera et installera la dernière version du correctif correspondant à la version mineure fournie :
$ swiftly install 5.6
$ swiftly install main-snapshot-2022-01-28
Si la date n'est pas spécifiée, Swiftly recherchera et installera le dernier instantané disponible :
$ swiftly install main-snapshot
$ swiftly install 5.7-snapshot-2022-08-30
Si la date n'est pas spécifiée, Swiftly recherchera et installera le dernier instantané associé à la branche de développement fournie :
$ swiftly install 5.7-snapshot
$ swiftly uninstall 5.6.3
Pour désinstaller toutes les chaînes d'outils associées à une version mineure donnée, omettez la version du correctif :
$ swiftly uninstall 5.6
$ swiftly uninstall main-snapshot-2022-08-30
$ swiftly uninstall 5.7-snapshot-2022-08-30
Pour désinstaller tous les instantanés associés à une branche donnée (branche principale ou branche de publication), omettez la date :
$ swiftly uninstall main-snapshot
$ swiftly uninstall 5.7-snapshot
La commande list
imprime rapidement toutes les chaînes d'outils installées :
$ swiftly list
« Utiliser » une chaîne d'outils la définit comme chaîne d'outils active, ce qui signifie qu'elle sera celle trouvée via $PATH et invoquée via des commandes swift
exécutées dans le shell. La chaîne d'outils doit être installée avant de pouvoir l'utiliser.
Vous pouvez fournir les mêmes sélecteurs de version que ceux que vous avez utilisés avec swiftly install
pour utiliser une chaîne d'outils, y compris les versions exactes "major.minor.patch" et les instantanés.
$ 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
Après avoir utilisé une chaîne d'outils, vos commandes sur le shell s'exécuteront avec cette chaîne d'outils :
$ 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
Si vous souhaitez exécuter une seule commande avec une chaîne d'outils particulière sans avoir à revenir à celle que vous avez utilisée précédemment, vous pouvez utiliser la commande swiftly run
avec la version. Cette commande crée votre package actuel avec la dernière chaîne d'outils d'instantanés de la version actuelle :
$ swiftly run swift build +main-snapshot
Le paramètre avec le "+" indique qu'il s'agit du sélecteur de version de la chaîne d'outils à utiliser et prend en charge la gamme complète de sélecteurs présentés ci-dessus et avec la commande swiftly install
. La chaîne d'outils doit être installée pour exécuter une commande avec cette chaîne d'outils.
La mise à jour remplace une chaîne d'outils donnée par une version ultérieure de cette chaîne d'outils. Pour une version stable, cela signifie une mise à jour vers un correctif ultérieur, une version mineure ou majeure. Pour les instantanés, cela signifie la mise à jour vers l’instantané disponible le plus récent.
Si aucune version n'est fournie, la mise à jour mettra à jour la chaîne d'outils actuellement sélectionnée vers sa dernière version de correctif s'il s'agit d'une chaîne d'outils de version ou le dernier instantané disponible s'il s'agit d'un instantané. La version nouvellement installée sera sélectionnée.
$ swiftly update
Pour mettre à jour la dernière version installée vers la dernière version disponible, la « dernière » version peut être fournie. Notez que cela peut mettre à jour la chaîne d'outils vers la prochaine version mineure ou même majeure.
swiftly update latest
Si seule une version majeure est spécifiée, la dernière chaîne d'outils installée avec cette version majeure sera mise à jour vers la dernière version disponible de cette version majeure :
swiftly update 5
Si les versions majeure et mineure sont spécifiées, la dernière chaîne d'outils installée associée à cette version majeure/mineure sera mise à jour avec la dernière version de correctif disponible pour cette version majeure/mineure.
swiftly update 5.3
Vous pouvez également spécifier une version complète pour mettre à jour cette chaîne d'outils vers le dernier correctif disponible pour cette version majeure/mineure :
swiftly update 5.3.1
De même, pour mettre à jour le dernier snapshot associé à une version spécifique, la version « ab-snapshot » peut être fournie :
swiftly update 5.3-snapshot
Vous pouvez également mettre à jour le dernier instantané principal installé vers le dernier instantané disponible en fournissant simplement main-snapshot
:
swiftly update main-snapshot
Une chaîne d'outils d'instantanés spécifique peut être mise à jour vers l'instantané disponible le plus récent pour cette branche en incluant la date :
swiftly update 5.9-snapshot-2023-09-20
La commande list-available
peut être utilisée pour répertorier les dernières chaînes d'outils qu'Apple a mises à disposition pour l'installation.
Notez que cette commande n'est pas encore implémentée, mais elle sera incluse dans une prochaine version.
swiftly list-available
Un sélecteur peut éventuellement être fourni pour affiner les résultats :
$ swiftly list-available 5.6
$ swiftly list-available main-snapshot
$ swiftly list-available 5.7-snapshot
Cette commande vérifie s'il existe de nouvelles versions de swiftly
et les met à niveau si c'est le cas.
Notez que cette commande n'est pas encore implémentée, mais elle sera incluse dans une prochaine version.
swiftly self-update
Le nom canonique d'une chaîne d'outils d'instantanés dans l'interface de commande de Swiftly est le suivant :
<branch>-snapshot-YYYY-MM-DD
Cependant, Swiftly accepte également les noms de fichiers de la chaîne d'outils d'instantanés à partir des téléchargements fournis par Swift.org. Par exemple:
swift-DEVELOPMENT-SNAPSHOT-2022-09-10-a
swift-5.7-DEVELOPMENT-SNAPSHOT-2022-08-30-a
Le format de nom canonique a été choisi pour réduire les frappes nécessaires pour faire référence à une chaîne d'outils d'instantanés, mais la forme plus longue est également utile lors du copier/coller d'un nom de chaîne d'outils fourni ailleurs.
Bienvenue dans la communauté Swift !
Les contributions à Swiftly sont les bienvenues et encouragées ! Veuillez consulter le guide Contribuer à Swift et consulter la structure de la communauté.
Pour être une véritable communauté formidable, Swift doit accueillir des développeurs de tous horizons, avec des parcours différents et un large éventail d'expériences. Une communauté diversifiée et conviviale aura plus d’idées géniales, des perspectives plus uniques et produira plus de code de qualité. Nous travaillerons avec diligence pour rendre la communauté Swift accueillante pour tout le monde.
Pour clarifier ce que l'on attend de nos membres, Swift a adopté le code de conduite défini par le Contributor Covenant. Ce document est utilisé dans de nombreuses communautés open source et nous pensons qu'il exprime bien nos valeurs. Pour en savoir plus, consultez le Code de conduite.
apt
ou yum
) ? Swift.org propose actuellement des packages expérimentaux .rpm
et .deb
qui vous permettent d'installer Swift via votre gestionnaire de packages. Bien qu'il s'agisse d'un moyen efficace d'installer et de mettre à jour une seule version de Swift, ils ne sont pas bien adaptés à la tâche d'installation de plusieurs chaînes d'outils Swift entre lesquelles vous pouvez facilement basculer. Le public cible de Swiftly est constitué de développeurs Swift qui basculent entre les versions dans le but de tester leurs bibliothèques et applications. Les fichiers .deb
et .rpm
ne prennent actuellement pas en charge les chaînes d'outils d'instantanés.
Swiftenv est un gestionnaire de versions Swift existant qui possède déjà une grande partie des fonctionnalités que Swiftly aura éventuellement. C'est un outil génial, et s'il fait partie de votre flux de travail, nous vous encourageons à continuer à l'utiliser ! Cela dit, Swiftly est/sera différent de plusieurs manières :
Swiftly est construit dans le cadre d'un effort communautaire dirigé par le groupe de travail du serveur Swift et, grâce à cette collaboration, Swiftly finira par devenir un outil d'installation officiel pour les chaînes d'outils Swift. Comme première étape vers cela, Swiftly contribuera à la création de points de terminaison d'API maintenus par le projet Swift qu'il utilisera pour récupérer des informations sur les chaînes d'outils disponibles à installer et pour vérifier leurs signatures attendues. Swiftenv utilise actuellement une couche API tierce pour cela. L'utilisation d'une API officielle réduit les possibilités de failles de sécurité et réduit également le risque de temps d'arrêt affectant les installations Swift.
Swiftly sera écrit en Swift, ce qui, à notre avis, est important pour la maintenabilité et pour encourager les contributions de la communauté.
Swiftly dispose d'un support de premier ordre pour l'installation et la gestion des chaînes d'outils d'instantanés.
Swiftly a intégré la prise en charge de la mise à jour des chaînes d'outils.
Swiftly est optimisé pour faciliter l'installation - cela peut être fait avec un one-liner bash similaire à Homebrew et rustup. De plus, Swiftly ne nécessitera l'installation d'aucune dépendance système sur le système de l'utilisateur. Bien que Swiftenv soit également relativement facile à installer, cela implique le clonage d'un référentiel git ou l'utilisation de Homebrew, et nécessite quelques dépendances système (par exemple bash, curl, tar).