Erlang/OTP 28 wurde mit großer Spannung von der Entwicklergemeinschaft erwartet und präsentiert sich nun als eins der bedeutendsten Updates der letzten Zeit. Die neue Version bringt eine Vielzahl von Verbesserungen und Erweiterungen, die nicht nur die Programmiererfahrung verbessern, sondern auch die Performance und Wartbarkeit von verteilten Anwendungen steigern. Besonders im Bereich der Nachrichtenverarbeitung, Fehlerdiagnosen und Shell-Interaktion gibt es viele Neuerungen, die sowohl Anfänger als auch erfahrene Entwickler begeistern. Ein umfassender Überblick über die wichtigsten Features zeigt, wie Erlang/OTP 28 die Grenzen bislang möglicher Funktionalitäten ausweitet und die Programmierung nachhaltiger und sicherer macht.Ein Kernfeature, das in Erlang/OTP 28 eingeführt wurde, ist das Konzept der Prioritätsnachrichten.
Die Messaging-Architektur von Erlang ist das Herzstück seiner Fähigkeit, hochverfügbare und skalierbare Systeme zu realisieren. Bisher wurden eingehende Nachrichten standardmäßig am Ende der Empfangswarteschlange eines Prozesses angefügt, was bei langen Nachrichtenwarteschlangen zu Verzögerungen führen konnte. Mit der Einführung von Prioritätsnachrichten lässt sich nun steuern, dass besonders dringende Nachrichten bevorzugt und vor regulären in die Warteschlange eingefügt werden. Diese Neuerung erlaubt eine noch feinere Steuerung der Nachrichtenverarbeitung, was z. B.
bei der Überwachung von Logger-Queues oder bei zeitkritischen Signalen von enormem Vorteil ist. Dabei bleibt die Reihenfolge der Prioritätsnachrichten untereinander erhalten, und die klassische Garantie von Erlang, dass Signale in der Reihenfolge ihres Versands eintreffen, gilt weiterhin uneingeschränkt.Die Bedienung dieser Prioritätsnachrichten erfolgt über sogenannte Prioritäts-Aliase, die Prozesse erstellen können, um Nachrichten mit bevorzugter Behandlung zu markieren. Entwickler können so sicherstellen, dass nur autorisierte Sender solche Prioritäten vergeben. Diese Option lässt sich jederzeit aktivieren oder deaktivieren und beeinflusst die Performance nicht negativ, da die bestehenden Optimierungen zum selektiven Empfang von Nachrichten weiterhin wirksam sind.
Auch Wartemeldungen in verbundenen Prozessen oder Monitoren können durch Priorisierung gezielt beschleunigt behandelt werden, was vor allem in komplexen verteilten Systemen die Reaktionsfähigkeit wesentlich erhöht.Neben der Nachrichtenverarbeitung hat sich bei den Comprehensions, einem mächtigen Werkzeug für die Datenverarbeitung in Erlang, ebenfalls viel getan. Mit dem Update erfolgt die Einführung von sogenannten Strict Generators. Bisher wurden Elemente, die in Mustervergleichen scheiterten, in Comprehensions stillschweigend übersprungen – ein Verhalten, das zwar praktisch war, bei unerwarteten Daten aber Fehler verschleiern konnte. Nun kann über Strict Generators festgelegt werden, dass solche Mismatch-Situationen zu einem Fehler führen, der sofort sichtbar wird.
Das entspricht auch stärker der Erlang-Philosophie des „Let it crash“ und erhöht die Sicherheit und Wartbarkeit im Code erheblich. Gleichzeitig bleiben die bisher positiven Eigenschaften von Relaxed Generators erhalten, so dass Entwickler je nach Anwendungsfall differenziert entscheiden können.Ebenfalls neu in diesem Bereich sind die Zip Generators, die es erlauben, mehrere Listen oder andere Datenstrukturen parallel anstelle der klassischen Verschachtelung zu durchlaufen. Mit dieser Erweiterung lassen sich parallele Iterationen deutlich einfacher und übersichtlicher realisieren. Im Vergleich zu Listenfunktionen wie lists:zip bietet dieser Ansatz mehrere Vorteile, darunter verbesserte Fehlermeldungen und eine effizientere Umsetzung, da Zwischentupel vermieden werden.
Die Möglichkeit, Generatoren frei miteinander zu kombinieren, erhöht die Ausdruckskraft und sorgt für eleganteren und wartbareren Code.Für Entwickler, die viel Zeit im Erlang-Shell verbringen, bringt Version 28 ebenfalls wichtige Verbesserungen mit. Das Einlesen von Standardeingaben erfolgt jetzt „lazy“, das heißt, nur bei tatsächlichem Bedarf wird Input gelesen. So wurden zuvor offene Probleme im Umgang mit Sonderzeichen oder langen Eingaben behoben und die Bedienbarkeit insgesamt verbessert. Auch im „noshell“-Modus wurden mit den neuen „rohen“ und „gekochten“ Modi die Grundlagen für interaktive Terminalanwendungen geschaffen.
Gerade der Raw Mode erlaubt das Einlesen von Tastendrücken in Echtzeit, ohne dass die Eingabetaste gedrückt werden muss. Entwickler können so komfortabel Spiele, interaktive Tools oder komplexe Kommandozeilenanwendungen realisieren, die früher erheblich mehr Aufwand erforderten.Ein ausgesprochen praktisches Feature ist die Möglichkeit, Funktionsreferenzen im Shell direkt mit der Syntax fun Name/Arity zu erzeugen. Dadurch werden gängige Built-In-Functions genauso wie lokal definierte Funktionsnamen direkt nutzbar, was die Interaktivität und das schnelle Testen von Codefragmenten erheblich vereinfacht. Die Shell fühlt sich dadurch moderner und benutzerfreundlicher an, ohne die bewährte Stabilität einzubüßen.
Auf der Performance-Ebene zeigt sich Erlang/OTP 28 mit der Einführung von erlang:hibernate/0 als besonders innovativ. Diese Funktion versetzt einen Prozess in einen wartenden Zustand, der dessen Speicherverbrauch auf ein Minimum reduziert. Im Gegensatz zur bisherigen Version erlang:hibernate/3 wird dabei der Aufrufstack nicht verworfen, was manche Anwendungsfälle deutlich vereinfacht. Ein Benchmark mit up zu einer Million Prozessen belegt signifikante Einsparungen im Speicherverbrauch von bis zu 75 Prozent, wenn Prozesse überwiegend inaktiv sind. Insbesondere für Systeme mit sehr vielen langwierig wartenden oder inaktiven Prozessen bietet sich so ein enormer Effizienzgewinn, der insbesondere auf modernen, großen Serverlandschaften spürbar wird.
Die neue Version geht auch an einer Archaischkeit vorbei und warnt vor der weiteren Nutzung des veralteten catch-Konstrukts zugunsten von try...catch. Das alte catch war zwar kurz und einfach, fängt aber alle Ausnahmen und kann so versteckte Fehler verursachen.
Stattdessen wird die explizite Fehlerbehandlung mit try...catch empfohlen, die mehr Sicherheit und bessere Lesbarkeit bietet. Entwickler sollten sich mit den Umstellungsmöglichkeiten vertraut machen, insbesondere wenn sie alte Codebasen pflegen.
Die Einführung eines Warnflags unterstützt diesen Übergang, bevor ab zukünftigen Versionen solche Konstrukte automatisch als Fehler angezeigt werden.Mit der Unterstützung von basierten Gleitkommazahlen eröffnet sich für das Schreiben von präzisem und maschinennahem Code eine neue Dimension. Die Möglichkeit, Fließkommazahlen in beliebigen Basen zu schreiben, hilft insbesondere bei der Konvertierung, Speicherung und Kommunikation von exakten numerischen Werten. Dies ist für Tools zur Codegenerierung und wissenschaftliche Anwendungen von großer Bedeutung und bringt Erlang auf Augenhöhe mit moderneren Programmiersprachen, die ähnliche Syntax bereits implementiert haben.Ein wichtiges technisches Update wurde auch für reguläre Ausdrücke umgesetzt, denn die re-Bibliothek nutzt nun PCRE2.
Die neuere Version ist moderner und sicherer, stellt aber auch strengere Syntaxregeln auf. Alte, nicht konforme Regex-Muster können somit fehlschlagen oder leicht abweichendes Verhalten zeigen. Das erfordert bei vorhandenen Projekten Tests und gegebenenfalls Anpassungen, bietet aber zugleich eine verbesserte Codequalität und Wartbarkeit. Wer das volle Potenzial von PCRE2 nutzen will, kann so von neueren Features und Performance Vorteilen profitieren.Im Bereich Sicherheit und Performance wurde TLS 1.
3 optimiert, was sich direkt in einer höheren Geschwindigkeit bei verschlüsselter Kommunikation niederschlägt. Benchmark-Ergebnisse zeigen Verbesserungen von bis zu 25 Prozent bei der Latenz gegenüber der Vorgängerversion. Diese Optimierung ist für alle wichtig, die auf sichere Netzwerke und Cloud-Services setzen und dabei gleichzeitig schnelle Antwortzeiten benötigen. Ein automatisches Upgrade auf Erlang/OTP 28 lohnt sich also besonders, wenn TLS 1.3 eingesetzt wird.
Ebenfalls bedeutsam ist die Einführung von nominalen Typen in Dialyzer. Diese neue Art von Typen erlaubt eine strengere Unterscheidung zwischen Typen mit gleicher Struktur, was die Vermeidung von versehentlichem Typenmissbrauch erleichtert. Dadurch erhöht sich die Typensicherheit und damit auch die Zuverlässigkeit des Codes. Mit dieser Innovation öffnet sich Erlang für eine noch genauere statische Analyse, ohne die Flexibilität einzuschränken, für die die Sprache bekannt ist.Abschließend sei erwähnt, dass ein neues Emacs Erlang Mode in Entwicklung ist, das mit modernen Technologien wie Treesitter arbeitet.
Es verspricht eine deutlich verbesserte Syntaxhervorhebung und Handhabung von Erlang-Quelltexten, insbesondere bei Strings und Dokumentationen. Obwohl es noch nicht im offiziellen Release von Erlang/OTP 28 enthalten ist, kann es bereits ausprobiert werden. Das zeigt, dass Erlang nicht nur in der Runtimetechnologie fortschrittlich bleibt, sondern auch in den Werkzeugen rundherum kontinuierlich modernisiert wird.Insgesamt stellt Erlang/OTP 28 einen großen Schritt nach vorne für die Erlang-Community dar. Die Vielzahl von Neuerungen reicht von fundamentalen Verbesserungen der Nachrichtenverarbeitung und Codequalität bis hin zu Performance- und Entwicklerfreundlichkeitsthemen.
Es ist eine Version, die sowohl den Anforderungen moderner verteilter Systeme gerecht wird als auch bewährte Prinzipien von Erlangs „Let it crash“-Philosophie weiter fördert. Für Entwickler und Unternehmen, die Erlang einsetzen, lohnt sich ein Update, um von den neuen Features zu profitieren und gleichzeitig die Zukunftssicherheit ihrer Anwendungen zu gewährleisten.