Tutoriel pour apprendre la programmation Swift sous Linux

Thierry Duchassin

Swift, le nouveau langage d'Apple, est open source depuis le 3 décembre 2015.

Nous allons voir à travers cet article comment l'installer et l'utiliser sur Linux.

Vous n'avez pas besoin d'avoir de connaissance avancée de Linux, ni de machine Linux installée pour suivre ce tutoriel.

Pour réagir à ce tutoriel, un espace de dialogue vous est proposé sur le forum : Commentez

- Titre : Tutoriel pour apprendre la programmation Swift sous Linux

- Auteur : Thierry Duchassin

- Parution : 10 février 2016

- Licence : Copyright ® 2016 Thierry Duchassin. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Installation de Swift sur Linux

- I-A. Installation de VirtualBox

- I-B. Installation de Vagrant

- II. Premier programme

- II-A. Live

- II-B. Compiler un programme

- III. Ce qu'Apple a rendu open source

- IV. Ce qui n'est pas [encore] disponible

- V. Swift Package Manager

- VI. Références/Sources

- VII. Remerciements

I - Installation de Swift sur Linux

Si vous avez déjà Ubuntu 14.04 LTS ou Ubuntu 15.10, en machine physique ou virtuelle, vous pouvez simplement suivre les instructions sur le site swift.org pour télécharger et installer Swift pour Linux.

Vous pouvez alors vous rendre directement à la section suivante.

La suite vous décrit les étapes pour installer simplement une machine virtuelle Ubuntu dotée du nouveau langage Swift.

I-A - Installation de VirtualBox

VirtualBox est un logiciel gratuit vous permettant de configurer et faire tourner des machines virtuelles.

Si ce n'est déjà fait, installez-le en vous rendant à la page de téléchargement du site.

I-B - Installation de Vagrant

Vagrant est un logiciel en ligne de commande qui permet d'installer et de configurer des machines virtuelles à l'aide de scripts.

Rendez-vous à la page de téléchargement du site, téléchargez et lancez l'installeur de l'OS de votre machine hôte.

À l'aide du script suivant, vous allez pouvoir télécharger et configurer votre machine virtuelle en une ligne de commande !

Créez un dossier vagrant-swift, puis créez dans ce dossier un fichier nommé Vagrantfile contenant le code suivant :

1. Vagrant.configure(2) do |config|

2. config.vm.box = "ubuntu/trusty64"

3. config.vm.provision "shell", inline: <<-SHELL

4. sudo apt-get --assume-yes install clang

5. curl -O https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-01-b/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz

6. tar zxf swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz

7. echo "export PATH=/home/vagrant/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin:\"${PATH}\"" >> .profile

8. echo "Swift has successfully installed on Linux"

9. SHELL

10. end

Pour les utilisateurs Windows, il vous faudra un terminal qui permet d'exécuter des commandes Unix.

Je vous recommande Git Bash de la suite Git for Windows, téléchargez-la ici.

Durant l'installation, vous pouvez laisser toutes les options de configuration par défaut.

Une fois installée, vous devez lancer Git Bash.

Ouvrez un terminal si ce n'est déjà fait (Git Bash si vous êtes sous Windows).

Placez-vous dans le dossier vagrant-swift et lancez la commande suivante :

1. $ vagrant up

Allez boire une bière le temps que Vagrant procède aux étapes suivantes :

- téléchargement d'Ubuntu 14.04 LTS ;

- lancement de la machine virtuelle ;

- installation du compilateur clang ;

- téléchargement et décompression de Swift ;

- configuration de la variable PATH de l'utilisateur.

Vous aurez peut-être des messages affichés en rouge, vous pouvez les ignorer.

Si tout s'est déroulé correctement, le dernier message indique :

==> default: Swift has successfully installed on Linux

La machine virtuelle est prête, connectez-vous en ssh en lançant cette commande :

1. $ vagrant ssh

La connexion établie, vous obtenez un prompt de ligne de commande :

1. vagrant@vagrant-ubuntu-trusty-64~$

Vérifiez que Swift est bien installé en tapant :

1. vagrant@vagrant-ubuntu-trusty-64:~$ swift --version

2. Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c)

3. Target: x86_64-unknown-linux-gnu

II - Premier programme

II-A - Live

Les développeurs iOS ou OSX le savent déjà grâce au playground d'Xcode, Swift est un langage pouvant être exécuté en live grâce au REPL (Read-Eval-Print-Loop).

Lancez la commande swift, un prompt apparaît, entrez alors votre première ligne de code Swift sur Linux !

1. vagrant@vagrant-ubuntu-trusty-64:~$ swift

2. Welcome to Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c). Type :help for assistance.

3. 1> print("Hello, Swift!")

4. Hello, Swift!

5. 2>

Pour quitter votre session Swift REPL, entrez la commande :q.

II-B - Compiler un programme

Pour compiler un programme écrit en Swift, créez un fichier source, par exemple de la manière suivante :

1. $ cat > helloworld.swift

Puis rentrez cette unique ligne de code :

1. print("Hello World !")

Appuyez une fois sur Entrée suivi de CTRL-D pour créer le fichier.

Listez le répertoire courant pour vous assurer de la présence du fichier fraîchement créé en tapant la commande ls.

Compilez maintenant votre programme en tapant :

1. $ swiftc helloworld.swift

Si vous listez le répertoire courant, vous verrez qu'un nouveau fichier exécutable nommé helloworld a été créé.

Votre programme est prêt à être lancé, tapez :

1. $ ./helloworld

Vous devriez voir en sortie :

1. Hello World !

III - Ce qu'Apple a rendu open source

- Compilateur Swift, sources et exécutables, débogueur, REPL
C'est le cœur du langage lui-même. Apple a rendu open les sources du programme swiftc, le même compilateur utilisé pour compiler les applications iOS et OSX.

- Bibliothèque standard Swift
Presque la même bibliothèque standard utilisée depuis la sortie de Swift, elle comprendla définition des collections, protocoles et autres fondamentaux.
Si par curiosité vous voulez voir comment est définie la classe (plus précisément la structure) String, rendez-vous sur le github ici.

- Bibliothèques Swift core
Elles font peau neuve aux bibliothèques existantes d'Apple écrites en Objective-C. Elles fournissent des fonctionnalités et des outils de haut niveau tels que ceux pour la communication web, l'interaction avec le système de fichiers, les calculs de date et d'heure.

- Swift Package Manager
C'est le maître de cérémonie de l'assemblage de chaque brique qui forme une application.
Il va télécharger les dépendances, les compiler et les lier entre elles pour créer des bibliothèques ou des exécutables.

- Mais encore…
Si vous parcourez la page Github d'Apple, vous trouverez d'autres composants tels qu'une encapsulation de libdispatch (Grand Central Dispatch), des informations sur Swift 3.0, ou même un parseur du langage Markdown…

IV - Ce qui n'est pas [encore] disponible

Il manque à l'appel la plupart des frameworks qui rendent les applications iOS et OSX aussi belles.

Pour n'en citer que quelques-uns : AppKit, UIKit, Core Graphics, Core Animation, AVFoundation…

Vous ne trouverez pas non plus l'environnement de développement intégré Xcode.

Mais ce qu'Apple a rendu open source est plutôt significatif. En effet, le fait que les bibliothèques Swift Core ne reposent plus sur l'environnement d'exécution Objective-C montre qu'Apple est en train de créer les fondements de Swift pour, à long terme, remplacer Objective-C.

Et le fait que Swift soit cross-platform suggère qu'Apple espère voir les développeurs l'utiliser pour le développement d'applications Linux. Si ce n'est pour des applications GUI, au moins pour des applications serveur.

V - Swift Package Manager

Voyons en pratique l'utilisation du package manager sur un exemple simple, un petit jeu de «pierre, feuille, ciseaux».

Créez un dossier helloswift, puis un dossier source à l'intérieur du premier en exécutant les commandes suivantes :

1. $ mkdir helloswift

2. $ cd helloswift

3. $ mkdir sources

4. $ cd sources

Créez ensuite un fichier nommé main.swift, (le nom main est important pour la suite), dans le répertoire source en exécutant :

1. $ cat > main.swift

Copiez le programme suivant :

1. import Foundation

2. import Glibc

4. let player = ["pierre", "feuille", "ciseaux"]

6. srandom(UInt32(NSDate().timeIntervalSince1970))

8. for count in 1...3 {

9. print(count)

10. sleep(1)

11. }

13. print(player[random() % player.count]);

Tapez Entrée puis CTRL-D.

Vous pouvez d'ores et déjà exécuter votre programme avec la commande :

1. $ swift main.swift

Génial ! Il faut que j'en parle aux copains !

Arf… ils n'auront pas la commande swift…

C'est ici que le Swift Package Manager entre en jeu !

Grâce à lui, vous allez pouvoir distribuer un exécutable de ce formidable programme.

Créez un fichier Package.swift dans le dossier parent (helloswift) :

1. $ cd ..

2. $ cat > Package.swift

Copiez ceci dedans, puis tapez Entrée et enfin CTRL-D :

1. import PackageDescription

3. let package = Package(

4. name: "Chifoumi"

5. )

Lancez la commande de build :

1. $ swift build

Swift détecte automatiquement le point d'entrée du programme, car nous avons nommé notre fichier main.swift.

Si vous renommez ce fichier, vous aurez des erreurs de compilation.

En revanche le changement de nom du dossier source n'affecte pas la compilation, mais l'exécutable créé portera le nom du dossier et non le nom donné dans le fichier Package.swift.

Si la compilation réussit, le package manager crée un dossier .build contenant un dossier debug dans lequel se trouve l'exécutable Chifoumi.

Vous pouvez alors le distribuer et quiconque ayant une machine Linux pourra l'exécuter en tapant la commande suivante dans le répertoire où se trouve l'exécutable :

1. $ cd .build/debug/

2. $ ./Chifoumi

Le Swift package manager possède évidemment beaucoup de fonctionnalités que nous n'avons pas explorées.

Un guide d'utilisation plus avancée fera peut-être l'objet d'un nouvel article, qui sait ?

Stay tuned !

VI - Références/Sources

- https://swift.org

- https://github.com/apple/swift

- http://www.raywenderlich.com/122189/introduction-to-open-source-swift-on-linux

- https://www.twilio.com/blog/2015/12/getting-started-with-swift-on-linux.html

- https://en.wikipedia.org/wiki/Swift_(programming_language)

VII - Remerciements

Ce tutoriel a été publié avec l'aimable autorisation de la société Itelios. Nous remercions Malick Nseck pour la mise au gabarit et Claude Leloup pour la correction orthographique.