Swift auf dem Raspberry Pi
Wie wir vor einigen Wochen bereits berichteten ist Swift nun Open Source und die ersten spannenden Projekte sind bereits in den Startlöchern. Der Entwickler und Blogger Andrew Madsen hat kürzlich bekannt gegeben nun einen Weg gefunden zu haben Swift auf dem Raspberry Pi nutzbar zu machen.
Als Andrew Madsen den Artikel vor ca. einer Woche tweetete war er über die große Resonanz erstaunt, vor allem weil sich unter den Retweetern niemand geringeres als Chris Lattner selbst befand (den wir hoffentlich an dieser Stelle nicht mehr vorstellen müssen).
Raspberry Pi & Co.
Für alle die nun ratlos mit den Schultern zucken was das Thema Raspberry Pi angeht ein kleiner Exkurs. Alle die das Früchtchen schon kennen, können diesen Absatz natürlich überspringen.
Wikipedia sagt kurz und bündig:
Der Raspberry Pi ist ein Einplatinencomputer, der von der britischen Raspberry Pi Foundation entwickelt wurde. Der Rechner enthält ein Ein-Chip-System von Broadcom mit einem ARM-Mikroprozessor, die Grundfläche der Platine entspricht etwa den Abmessungen einer Kreditkarte.
Für uns war es damals vielmehr ein:
Das ist ein Computer??? Diese winzige Platine mit der Himbeere drauf?
Und das beste ist, diesen Computer kann sich fast jeder leisten. Aktuell kann man das Raspberry Pi 2 bei Amazon schon für 39,01 € bestellen (Affiliate-Link).
Was steckt drin?
Natürlich wollen wir den technischen Hintergrund auch nicht unerwähnt lassen.
Die 132 Gramm schwere Platine bietet 900 MHz ARM (Vierkern-)Prozessor mit 1 GB Ram, vier USB 2.0 Ports, einem HDMI Anschluss, MircoSD Kartenleser, dem klassischen Ethernet Port und einer 5V Stromversorgung. (Spezifikationen des aktuellen Raspberry Pi 2 Model B). So hoch die Vier Kerne der CPU klingen darf man das Raspberry Pi aber nicht mit einem einfachen Mittelklasse PC vergleichen. Für einfach Büroarbeiten oder ähnliches taugt der Mini PC aber alle male.
Selbstverständlich gibt es auch Konkurrenzprodukte welche ebenfalls in den Genuss von Mini-PC Swift nutzern kommen können.
Das Beaglebone dürfte wohl der populärste Gegner sein, jedoch auch etwas teurer. Allerdings bietet der Markt auch im Raspberry Preisbereich unzählige Alternativen.
Wir haben bisher wenig Erfahrung mit anderen Geräten gemacht, deshalb wären wir für eure Erfahrungen sehr dankbar 🙂
Los gehts!
Wie auf Andrew`s Blog beschrieben haben er und einige weitere Programmierer das Projekt trotz Feiertagsablenkungen verwirklichen können. Auch die anfänglichen Schwierigkeiten den Compiler nur auf dem BeagleBone und dem Raspberry Pi 2 funktionsfähig zu kriegen scheinen Dank @iachievedit Geschichte zu sein.
Der Grund dafür war wohl die armv7 Systemarchitektur und keine Verfügbarkeit des armv6 um die Lauffähigkeit auf BeagleBoard, Raspberry Pi 1 und Raspberry Pi Zero zu gewährleisten. Die Aptitude-Repositories der o.g. Entwicklergruppe sind nun ebenfalls verfügbar und ältere Modelle des Raspberries sind bereits auch kompatibel.
Das Basis-Setup sollte eine Installation von clang Version 3.6, des C-Compiler-Fontends für LLVM sein, sowie das ICU libicu-dev, welches Unicode und Locales für in C und C++ geschriebene Libraries bereitstellt.
Aber gleich vorweg ein kleiner Dämpfer. Leider können wir Swift auf dem Pi (oder ähnlichen Geräten) nicht in dem gewohnten Umfang mit Xcode und unzähligen Frameworks nutzen. Wir müssen uns für den Anfang – so hoffen wir jedenfalls – aber die Basics verlassen. So stehen uns die Standard Foundation Daten Typen und die C Library glibc zur Verfügung.
So könnte ein kleines Countdown Programm etwa wie in diesem Beispiel von @iachievedit aussehen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import Foundation import Glibc let thread = NSThread(){ print("Entering thread") for i in (1...10).reverse() { print("\(i)...", terminator:"") fflush(stdout) sleep(1) } print("\nExiting thread") print("Done") exit(0) } thread.start() select(0, nil, nil, nil, nil) |
Warum sollte ich Swift auf dem Raspberry Pi nutzen?
Natürlich stellen sich einige an dieser Stelle die Frage warum man Swift auf dem Raspberry Pi & Co. nutzen soll. Kurz und einfach gesagt:
Weil wir es können!
Aus unserer Sicht ist die Verbreitung von Swift ausserhalb der üblichen Systeme ein wahrer Segen. Wir sind nun nicht länger auf iPhone oder OS X Applikationen beschränkt sondern können unser Wissen und Know-how auch u.a. serverseitig nutzen. Die Fantasie und Projektkreativität wird auf dem Raspberry nur durch die Grenzen der Hardwareleistung eingeschränkt.
Wir sind gespannt auf eure und die ersten Projekte!
CentOS 7.x
Für viele nicht interessant, aber dennoch eines der Lieblingsthemen von Stefan ist die Portierung des Swift Compilers für CentOS 7.x und RedHat Linux.
CentOS selbst hat den Anspruch eine kostenlose Variante der Enterprise Linux Distribution RedHat Linux zu sein. Ziel dieser Distributionen ist es Pakete mit einem Support von bis zu 10 Jahren zur Verfügung zu stellen. Bei CentOS ist dieser Support kostenlos. Gerade für Produktivsysteme ist dies eine wichtige Vorraussetzung. Vielleicht kennt der ein oder andere das Problem mit Ubuntu Servern wann man nach 1-2 Jahren ein apt-get update macht und auf einmal alles kaputt ist 🙂 *wink*.
Aktuell bemüht sich ein kleiner Teil der Community das Paket fertigzustellen. Den aktuellen Verlauf kann auf dem offiziellen JIRA Task Tracker[1][2] von Swift.org mitverfolgen.
[1] https://bugs.swift.org/browse/SR-58
[2] https://bugs.swift.org/browse/SR-108
Die Anleitung
Eine Beschreibung wie ihr Swift auf eurem Mini Computer zum laufen bekommt findet ihr auf der Webseite
Bloggers Andrew Madsen – Swift on Raspberry Pi und Entwicklergruppe iachieved – Debian Packages for Swift on ARM welche uns persönlich besser gefällt.
Quellen:
http://blog.andrewmadsen.com/
http://dev.iachieved.it/
http://www.element14.com/community/docs/DOC-73827/l/the-new-raspberry-pi-2-model-b-1gb-technical-specifications
https://www.raspberrypi.org/
No Comment