Programmiersprache: Elixir 1.9 bringt Releases

Releases ermöglichen es Entwicklern, ihren Code und die Laufzeitumgebung in einer einzigen Einheit vorzukompilieren und zu verpacken.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
Programmiersprache: Elixir 1.9 bringt Releases
Lesezeit: 3 Min.
Von
  • Alexander Neumann
Inhaltsverzeichnis

Die Elixir-Entwickler sind ihrem Bestreben, etwa alle halbe Jahre eine neue Version der Programmiersprache zu veröffentlichen, erneut nachgekommen. Das nun freigegebene Elixir 1.9 umfasst als einziges großes Feature sogenannte Releases.

Dabei handelt es sich um ein in sich geschlossenes Verzeichnis, das aus Anwendungscode, seinen Abhängigkeiten sowie der Virtual Machine und der Runtime von Erlang besteht. Sobald ein Release erstellt ist, kann es verpackt und an ein Target verteilt werden, insofern dieses auf dem gleichen Betriebssystem und gleicher Version läuft wie die Maschine, auf der der Befehl mix release ausgeführt wird. Releases ermöglichen es Entwicklern, ihren Code und die Laufzeitumgebung in einer einzigen Unit vorzukompilieren und zu verpacken.

Als Vorteile werden das Preloading des Codes, eine detaillierte Kontrolle über die Systemkonfiguration und die VM-Flags, mit denen das System gestartet wird, und ein vorkompilierter und verpackter Code genannt, wodurch sowohl Erlang als auch die Elixir-Standardbibliotheken entfernt werden, um nur die tatsächlich verwendeten Teile zu liefern. Außerdem lassen sich verschiedene Releases mit unterschiedlicher Konfiguration pro Anwendung oder insgesamt mit verschiedenen Anwendungen zusammenstellen. Und die Releases enthalten Skripte zum Starten, Neustarten sowie für ein "remotes" Verbinden mit dem laufenden System, zum Ausführen von RPC-Aufrufen, als Daemon und als Windows-Dienst.

Releases sind nicht neu in der Elixir-Community, sie fanden sich schon im Projekt Distillery (und zuvor EXRM), und insbesondere Distillery 2.0 lieferte wohl wichtige Antworten zu Konventionen und bewährten Verfahren, etwa bei der Konfiguration, um Releases direkt in Elixir einzuführen.

Die Arbeiten an Releases kamen auch der Konfigurations-API von Elixir zugute. So wurde ein neues Config-Modul zu Elixir hinzugefügt. Die bisherige Konfigurations-API [i]Mix.Config war Teil des Build-Tools Mix. Da Releases jedoch eine Laufzeitkonfiguration bereitstellen und Mix nicht in den Releases enthalten ist, haben die Entwickler die Mix.Config-API nach Elixir portiert beziehungsweise das als veraltet markierte Mix.Config wurde zugunsten von import Config ausgetauscht.

Weitere Überarbeitungen in Elixir v1.9 betreffen die Elixir CLI mit einer Handvoll Optionen, um die Releases zu unterstützen. Logger berechnet nun seine Sync/Async/Discard-Schwellenwerte dezentral und reduziert so einen möglichen Konkurrenzkampf. EEx-Vorlagen (Embedded Elixir) unterstützen des Weiteren komplexere Ausdrücke als bisher. Schließlich gibt es ein neues ~U-Sigil für die Arbeit mit UTC-Datumszeiten sowie neue Funktionen in den Modulen File, Registry und System.

Weitere Informationen zum neuen Release erhält man im Blogbeitrag.

Elixir ist eine funktionale Programmiersprache, deren Schwerpunkt im Erstellen skalierbarer, robuster und nebenläufiger Programme liegt. Sie nutzt die über Jahrzehnte hinweg erprobte und weiterentwickelte Erlang-VM, denn der Elixir-Compiler erzeugt Erlang-kompatiblen Bytecode. Die grundlegende Syntax ist an Ruby angelehnt und lässt sich über Makros erweitern. Obwohl Elixir noch verhältnismäßig jung ist – 2014 erschien Versionsnummer 1.0 – gibt es eine umfangreiche Tool-Unterstützung, ein ausreichend großes Ökosystem an Bibliotheken und eine hilfsbereite, offene und aktive Community. Die Entwicklung erfolgt auf GitHub, wo Elixir unter der Apache License 2.0 zu finden ist.

Mehr Infos

Auch der diesjährige Herbstcampus steht im Zeichen funktionaler Programmierung. So finden sich auf der von 3. bis 5. September in Nürnberg stattfindenden Konferenz folgende ganztägigen Workshops und 70-minütige Sessions mit funktionaler Ausrichtung:

  • Funktionale Programmierung in JavaScript und TypeScript (Workshop)
  • Von C# zu F# – Einführung in die funktionale Programmierung (Workshop)
  • Nebenläufigkeit ganz einfach mit Elixir und Erlang (Session)
  • Funktionale Programmierung geht auch mit/trotz Java! (Session)
  • Von C# zu F# – Einführung in die funktionale Programmierung (Session)

Siehe dazu auf heise Developer:

(ane)