Swift-Scripts, Compiler und REPL

Normalerweise werden Sie Swift-Programme mit Xcode entwickeln und später in kompilierter Form ausführen — sei es auf einem iOS-Gerät oder unter OS X. Swift bietet aber auch abseits des bekannten Xcode-Pfads interessante Wege zur Programmausführung und -entwicklung.

REPL-Modus (Read Eval Print Loop)

Wenn Swift in einem Terminal-Fenster im REPL-Modus gestartet wird, dann werden eingegebene Anweisungen sofort kompiliert und dann ausgeführt. Swift verhält sich also ähnlich wie ein Interpreter.

Um den REPL-Modus auszuprobieren, müssen Sie zuerst herausfinden, wo sich das Programm swift befindet. Das gelingt am einfachsten im Terminal mit dem Kommando xcrun:

$ xcrun -f swift
/Applications/Xcode.app/Contents/Developer/Toolchains/
  XcodeDefault.xctoolchain/usr/bin/swift

Die Eingabe dieses langen Pfads ist natürlich unhandlich. Also definieren Sie im Terminal zuerst einen Alias (eine Abkürzung). Wenn Sie diese Abkürzung dauerhaft nutzen wollen, bauen Sie das alias-Kommando in die Datei .profile ein.

$ alias swift=$(xcrun -f swift)

Nach dem Start von Swift liefert :help einen mehrseitigen Hilfetext. Andere Eingaben, die sich auch über mehrere Zeilen erstrecken dürfen, werden sofort ausgeführt. [ctrl]+[D] beendet den Interpreter.

Swift-Anweisungen im REPL-Modus in einem Terminal ausführen
Swift-Anweisungen im REPL-Modus in einem Terminal ausführen

Swift-Scripts

Wenn Swift also in der Lage ist, Kommandos ad-hoc zu kompilieren und ausführen, dann muss auch die Möglichkeit bestehen, ein Swift-Script ähnlich wie ein bash-oder Python-Script zu schreiben. Dazu schreiben Sie den gewünschten Code einfach in eine Textdatei, wobei die erste Zeile exakt wie folgt aussehen muss:

#!/usr/bin/env xcrun swift 
import Foundation
var username = NSFullUserName()
println("Hello (username)!")

Bevor Sie die Datei das erste Mal ausführen können, müssen Sie im Terminal das Execute-Bit setzen.

$ chmod a+x mein-script.swift
$ ./mein-script.swift
Hello Michael Kofler!

Anmerkung Swift-Scripts sind von eher geringem praktischem Nutzen. Hinter den Kulissen ist und bleibt Swift ein Compiler. Das Script wird beim (jedem!) Start zuerst kompiliert — und das dauert geraume Zeit. Sinn macht das nur, wenn in der Folge aufwendiger Code ausgeführt, die Kompilierzeit also keine große Rolle spielt. Außerdem läuft ein Swift-Script natürlich nur auf solchen OS-X-Rechner, auf denen Xcode installiert ist. Swift wird also weder die bash noch Python als Script-Sprache ablösen …

Swift-Compiler

Im Terminal ist nicht nur der Swift-Quasi-Interpreter zugänglich, sie können dort auch Swift-Programme kompilieren. Dazu ermitteln Sie zuerst den Ort der Swift-Compilers swiftc und des Software Development Kits (SDK) für OS X. Das Kompilat erhält den gleichen Namen wie die Code-Datei, aber ohne die Endung .swift. Es kann unmittelbar ausgeführt werden.

$ alias swiftc=$(xcrun -f swiftc)
$ platf=$(xcrun --sdk macosx --show-sdk-path)
$ swiftc -sdk $platf mein-code.swift 
$ ./mein-code

Links/Quellen