Einstieg in Crystal: Kompilierte Sprache mit modernen Konzepten
Die von Ruby inspirierte Sprache Crystal empfiehlt sich dank leichtem Einstieg und eigenem Compiler als performante Alternative für General-Purpose-Projekte.
- Tam Hanna
Die Programmiersprache Crystal besitzt eine schnell zu erlernende, sehr stark von Ruby inspirierte Syntax und dazu noch die Möglichkeit, Applikationen direkt in Maschinencode zu kompilieren. Damit soll sie als General-Purpose-Sprache leistungsfähig genug für verschiedenste Aufgaben sein. Der eigene Compiler erspart Optimierungsmaßnahmen, wie sie beispielsweise mit JIT und Co. nötig sind – auch dann, wenn ein Crystal-Programm sehr hohe Performance erreichen soll. Entwicklerinnen und Entwickler, die gerne regelmäßig neue Programmiersprachen erlernen, finden in Crystal also eine interessante Option, die sich ausreichend von etablierten Sprachen absetzt.
Von JavaScript verbrannten Entwicklern dürfte außerdem positiv auffallen, dass Crystal am Ende doch streng typisiert ist – so kann der Compiler beispielsweise Nullchecks durchführen und so viele häufige Programmfehler schon während der Kompilation erkennen.
Für Crystal sprechen auch die umfangreichen Möglichkeiten der Metaprogrammierung. Darunter versteht man in der Welt von Crystal, dass sich Code selbst modifizieren beziehungsweise selbst generieren kann. Zwar ist die Flexibilität beim Kompilieren in nativen Code nicht so hoch wie bei zur Laufzeit interpretierten Sprachen, trotzdem gilt, dass Crystal Präprozessor-Lösungen, wie sie bei den mit C verwandten Sprachen weit verbreitet sind, haushoch überlegen ist.
Historie: Von Ruby inspiriert, aber schneller
Abkündigungen (Deprecations) von Komponenten in einem Ökosystem können für Entwicklerinnen und Entwickler dramatische Folgen nach sich ziehen. Während sich der Wegfall einer Bibliothek meist gut verkraften lässt, kommt die Abkündigung einer Programmiersprache in einem laufenden Softwareprojekt einem wirtschaftlichen Totalschaden gleich – die komplette Codebasis wird unbrauchbar, wie das "Abenteuer" um Visual Basic 6 anschaulich gezeigt hat. Aus diesem Grund sind Entwickler und Entwicklerinnen gut beraten, sich nicht auf zu exotische Programmiersprachenprojekte einzulassen.
Die Programmiersprache Crystal wurde im Jahre 2011 von dem argentinischen Beratungsunternehmen Manas Technology Solutions gestartet. Die Entwickler Ary Borenszweig, Juan Wajnerman und Brian Cardiff ließen sich zunächst noch stark von Ruby inspirieren, suchten dann aber schnell nach Wegen, eine höhere Performance der resultierenden Systeme zu erzielen.
Vor knapp zwei Jahren hat Crystal die Reife eines Major Release 1.0 erreicht und erfreut sich wachsender Beliebtheit. Rund um das GitHub-Repository der unter Apache-2.0-Lizenz als Open Source verfügbaren Programmiersprache ist ein aktives Ökosystem mit mehr als 500 Beitragenden entstanden – und Crystal verzeichnet aktuell in Version 1.6.2 schon mehr als 18.000 GitHub-Sterne (s. Abb. 1).
Mit Crystal erstellte Programme funktionieren auf den Prozessorarchitekturen x86, x64 sowie den beiden ARM-Varianten (32 und 64 Bit) unter Linux, macOS und FreeBSD. Der Support für Windows ist zum Zeitpunkt der Fertigstellung dieses Artikels hingegen noch experimentell.
Installation von Crystal
Für die ersten einführenden Schritte in die Arbeit mit Crystal kommt im Folgenden Ubuntu 22.04 LTS zum Einsatz. Wer die Beispiele mit einem anderen Betriebssystem nachvollziehen möchte, findet auf der Crystal-Website Installationsanweisungen für diverse Plattformen.
Für Ubuntu steht ein per cURL ausführbares Installationsskript parat, das sich folgendermaßen aktivieren lässt:
curl -fsSL https://crystal-lang.org/install.sh | sudo bash
Wie in der folgenden Ausgabe zu erkennen, lädt das Werkzeug eine aktuelle Nightly-Version von Crystal herunter:
crystal -v
Crystal 1.6.2 [879691b2e] (2022-11-03)
LLVM: 13.0.1
Default target: x86_64-unknown-linux-gnu
Über spezifische Parameter lassen sich alternativ aber auch stabile oder gezielt ausgewählte Crystal-Versionen über das Skript installieren. Weitere Informationen hierzu finden sich in der Installationsdokumentation.
Entwicklerinnen und Entwickler, die ihre Software lieber via snap beziehen, können auch auf diese Paketierungsvariante zurückgreifen. In den folgenden Beispielen wird darauf verzichtet, um Komplikationen mit AppArmor und Co. zu vermeiden.
Bei der Arbeit mit Crystal ist außerdem eine vollwertige Entwicklungsumgebung (IDE) empfehlenswert. In der Welt von Crystal hat sich Microsofts quelloffenes Visual Studio Code als Quasistandard etabliert. Es soll auch in den folgenden Schritten zum Einsatz kommen.
Nach dem Start von Visual Studio Code erscheint das Plug-in Crystal Language als rotierendes Icon. Ein Klick auf Install startet den bei Visual-Studio-Code-Erweiterungen typischen Deployment-Prozess.
Wer darüber hinaus IntelliSense nutzen möchte, muss zusätzlich das Language-Server-Modul installieren, das der IDE die Parsing-Informationen zur Verfügung stellt. Es findet sich samt Installationsanweisung derzeit im GitHub-Repo von Julien Elbaz (elbywan).