Menü
Developer

Elixir 0.13: Maps und Structs ersetzen Records

Mit dem Umstieg auf Erlang 17 ergeben sich einige Neuerungen für die aktuelle Version der funktionalen, mit Nebenläufigkeit arbeitenden Programmiersprache. Außerdem soll eine Konferenz dem wachsenden Interesse an Elixir Rechnung tragen.

vorlesen Drucken Kommentare lesen

Die Entwickler der auf der Erlang Virtual Machine (BEAM) laufenden Programmiersprache Elixir haben die Version 0.13 ihres Projekts veröffentlicht. Sie nutzt das kürzlich freigegebene Erlang 17, was sich in Ergänzungen der Sprache wie Maps niederschlägt.

Bei Letzteren handelt es sich um Datenstrukturen, bei denen Schlüssel auf Werte verweisen und auf die sich Pattern Matching anwenden lässt. In Erlang sollen Maps als Ersatz für Records dienen, weshalb sich auch die Elixir-Entwickler kritisch mit diesem Konstrukt in ihrer Sprache auseinandersetzten. Records in Elixir sind von Modulen unterstützte Tupel, die Daten nach Feldern organisieren, über eine effiziente In-Memory-Repräsentation und entsprechende Operationen verfügen und für zur Kompilierzeit bereitstehenden Strukturen auch zu dieser Zeit Fehler anzeigen sollten. Außerdem dienten sie als Grundlage für Polymorphismus in Elixir.

Negativ aufgefallen war wohl, dass Entwickler sie als Verbindungsoption von Daten und Funktionen missbrauchen und sie zudem beim Nutzen von Protocols zu Verzögerungen zur Laufzeit führen können, da jeder Tupel ein potenzieller Record und daher zu prüfen ist. Maps erfüllen die ersten zwei der genannten Funktionen der Records, weshalb die Entwickler für die verbleibenden Punkte das struct-Konstrukt eingeführt haben. Sie bestehen nur aus Daten und sollten beim nebenläufigen Datenversand schneller und robuster sein, da sie für diesen Fall explizit mit einem Tag zu versehen sind. structs befinden sich noch in der Entwicklungsphase und sollen innerhalb der nächsten Releases mit ergänzenden Funktionen ausgestattet werden.

Betreiber von Elixir-Projekten sind dazu aufgerufen, Elixir Records aus ihren Anwendungen zu entfernen, sodass man sie vor dem Sprung auf Version 1.0 als veraltet markieren kann (Erlang Records sind davon nicht betroffen). Hier müssen allerdings auch die Entwickler der Sprache tätig werden, da sie auch in Elixir selbst noch zum Einsatz kommen.

Durch die mit Erlang 17 eingeführte Rekursion für anonyme Funktionen, steht in Elixir darüber hinaus eine bessere Syntax für Compressions zur Verfügung (siehe Bekanntmachung). Nach der Aktualisierung gibt es außerdem Verbesserungen für Elixirs Build-Tool Mix: Waren in früheren Versionen Abhängigkeiten noch je Umgebung herunterzuladen und zu kompilieren, holt sich Mix in Elixir 0.13 – sofern nicht anders angegeben – Abhängigkeiten für alle Umgebungen. Für die kommenden Monate planen die Elixir-Entwickler unter anderem einen Logger für ihre Sprache. Außerdem wollen sie untersuchen, wie sich Tasks und Agents integrieren lassen.

Im Zuge der Bekanntmachung der neuen Version, haben die Entwickler außerdem darauf aufmerksam gemacht, dass Ende Juli 2014 zum ersten Mal eine Konferenz für an Elixir interessierte Entwickler stattfindet. Austragungsort der ersten ElixirConf ist Austin (Texas, USA). Außerdem findet der nun bereitstehende Package Manager für Erlang hex.pm Erwähnung.

Elixir ist mit seinen knapp zwei Jahren eine noch relativ junge Sprache, die José Valim ins Leben rief, um Erlangs VM produktiver zu nutzen, ohne auf die Tools und das Ökosystem von Erlang verzichten zu müssen. Im Gegensatz zu Erlang unterstützt sie Metaprogrammierung mit Makros und Polymorphismus durch Protocols. Die wichtigsten syntaktischen Unterschiede hat das Elixir-Projekt auf seiner Website gesammelt. Dort findet sich auch ein für Version 0.13 überarbeiteter "Getting Started"-Guide. Der Quellcode der Sprache ist unter der Apache-Lizenz Version 2.0 und in Teilen unter der Eclipse Public License geschützt. (jul)