Programmiersprache: Gleam 0.18 beschert dem Erlang-Ökosystem neues Build-Tool

Die für die Erlang Virtual Machine konzipierte Programmiersprache Gleam verfügt in der neuen Version über ein eigenes Build-Werkzeug.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen

(Bild: IM_VISUALS / Shutterstock.com)

Lesezeit: 5 Min.
Von
  • Silke Hahn

Die typsichere, skalierbare Programmiersprache Gleam ist in Version 0.18 erschienen. Gleam gehört zum Erlang-Ökosystem und ist für die Erlang Virtual Machine konzipiert, soll aber unter anderem auch mit JavaScript zusammenarbeiten. Das neue Release verschafft der Sprache als wichtigste Neuerung ein eigenständiges Build-Tool, auf das die Community laut Herausgebern schon länger gewartet haben dürfte.

Wie dem Blogeintrag zur Ankündigung zu entnehmen ist, hatten Gleam-Entwicklerinnen und -Entwickler für ihre Projekte bislang auf das Standard-Build-Tool der Programmiersprache Erlang zurückgreifen müssen. rebar3 gilt zwar als brauchbares Tool für Builds, war allerdings nicht auf Gleam zugeschnitten und soll für Einsteiger in die Sprache einige Hürden und Überraschungen bergen. Den Herausgebern zufolge sitzt das neue Tool besser und ermöglicht Entwicklungsteams fokussierteres Arbeiten am Gleam-Code mit einer angenehmeren Developer Experience.

Das Build-Tool von Gleam ist im Gleam-Binary enthalten. Daher verfügen alle, die Version 0.18 herunterladen, automatisch über das Build-Tool und müssen nichts separat installieren. Projekte lassen sich weiterhin mit dem Befehl gleam new anlegen. Der Anwendungs-Code liegt im src-Verzeichnis, Testcode im Verzeichnis test. Ein frisch angelegtes Projekt schaut beispielsweise wie folgt aus:

$ tree
# ├── README.md
# ├── gleam.toml
# ├── src
# │   └── my_project.gleam
# └── test
#     └── my_project_test.gleam

Wer mit Gleam arbeitet, muss den Code nicht länger in der Erlang-Shell ausführen, was bislang unter rebar3 der Standardweg war und Entwickler irritiert haben dürfte. Stattdessen bietet das neue Build-Tool einen für Gleam-Entwickler vertrauteren Befehl:

$ cd my_project
$ gleam run
#   Resolving versions
# Downloading packages
#  Downloaded 2 packages in 0.01s
#   Compiling gleam_stdlib
#   Compiling gleeunit
#   Compiling my_project
#    Compiled in 1.85s
#     Running my_project.main
# Hello from my_project!

Sobald das Build-Tool läuft, lädt es automatisch die Abhängigkeitspakete herunter und kompiliert sie sowie das Projekt. Erst im nächsten Schritt startet es die Erlang Virtual Machine (BEAM) und ruft die main-Funktion des Gleam-Projekts auf. Dependencies werden dabei automatisch in einer projektspezifischen Sandbox gespeichert, wodurch keine virtuelle Umgebung oder andere Tools mehr nötig sind. Das aktuelle Release stellt auch das Testing auf neue Füße: So sind Gleam-Projekte bereits mit gleeunit vorkonfiguriert, einem Wrapper rund um das Erlang-Testframework EUnit. Tests lassen sich mit folgendem Befehl ausführen:

$ gleam test
#   Compiling my_project
#    Compiled in 0.24s
#     Running my_project_test.main
# .
# Finished in 0.008 seconds
# 1 tests, 0 failures

Der Befehl gleam test soll sich ähnlich verhalten wie gleam run, indem er die Abhängigkeiten nach Bedarf herunterlädt und kompiliert. Für das Gleam-Testing sind Entwickler allerdings nicht auf gleeunit festgelegt, auch andere Testframeworks kommen infrage, solange sie in BEAM-Sprachen wie Erlang oder Elixir geschrieben sind. Gleam-Projekte enthalten zudem eine Datei, in der sich projektspezifische Metadaten wie der Projektname, die Version und jegliche Dependency festlegen lassen. Wie sich Abhängigkeiten in der gleam.toml-Datei ergänzen lassen, führt der Blogeintrag auf der Gleam-Webseite mit Beispielen vor.

Gleam setzt auf der Erlang Virtual Machine auf und nutzt vor allem die Erlang Runtime, laut Herausgebern ohne Overhead. Dadurch sollen in Gleam geschriebene Programme ebenso schnell und mit Multithreading laufen wie ihre in Erlang geschriebenen Gegenstücke. Kompatibel ist Gleam mit anderen BEAM-Sprachen wie Erlang, Elixir und LFE (Lisp-Flavoured Erlang), wodurch sich Nutzern der Sprache ein umfangreiches Ökosystem mit Tausenden von Open-Source-Bibliotheken erschließt. Wer sich genauer dafür interessiert, mag einen Blick auf die Webseite von hex werfen, dem Paketmanager für das Erlang-Ökosystem. BEAM ist die virtuelle Maschine im Kern der Erlang Open Telecom Platform (OTP) und Teil des Erlang Runtime System (ERTS), das Erlang-Sourcecode in Bytecode kompiliert, der sich dann auf BEAM ausführen lässt.

Sicherheitsaspekte stehen laut den Herausgebern im Vordergrund, so soll das statisch typisierte System von Gleam Fehler zur Compile-Zeit suchen und finden, bevor sie bei den Nutzern ankommen. Einige Teams nutzen es in der Produktion beim Refactoring, da sich mittels Gleam wohl auch große Änderungen an unbekanntem Code rasch mit geringem Risiko durchführen lassen. Zu den Highlights der Sprache zählen unter anderem die auf Aktoren fußende Multi-Core Concurrency, algebraische Datentypen, eine Fehlertoleranz im Stile von Erlang, rasches Kompilieren, volle Typeninferenz, detaillierte Fehlermeldungen, Generics, kein undefiniertes Verhalten und eine zuverlässige Paketverwaltung. Hinter Gleam stehen neben der Community vier Sponsoren: NineFX, die estnische Yolo-Gruppe, Memo und SkunkWerks aus Wien.

Geplant sind für die Zukunft weitere Verbesserungen der Developer Experience, im Fokus des Gleam-Teams steht dabei das Language Server Protocol für IDE-Features in Code-Editoren sowie Support für das JavaScript-Compiler-Backend. Auch das Deployment und die damit einhergehenden Funktionalitäten haben die Gleam-Entwickler auf dem Schirm für kommende Releases.

Gleam ist auf GitHub zu finden. Näheres zum aktuellen Release lässt sich dem Blogeintrag auf der Gleam-Webseite entnehmen. Die erste Ankündigung hatte das Gleam-Team auf Twitter gepostet. Sämtliche Änderungen im Vergleich zur Vorgängerversion listet das Changelog auf GitHub auf. Für Neugierige ohne Gleam- und BEAM-Erfahrung steht ein Leitfaden zum Einstieg bereit.

(sih)