Gleam 1.19 erzeugt keinen Erlang-Quellcode mehr, sondern Erlang Abstract Forms
Gleam v1.19.0, veröffentlicht am 5. Oktober, ersetzt den Erlang-Codegenerator des Compilers. Bisher erzeugte Gleam Erlang-Quellcode und gab ihn an den Erlang-Compiler weiter; jetzt erzeugt es Erlang Abstract Forms, die Zwischendarstellung, die der Erlang-Compiler sonst mit eigenem Tokenizer und Parser aufbaut.

Was das laut Ankündigung bringt.
- Schnellere Builds. Abstract Forms haben ein Binärformat, das sich direkt laden lässt; die vordere Hälfte des Erlang-Compilers entfällt. Der Beitrag meldet deutlich kürzere Build-Zeiten für Gleam-Projekte auf Erlang, gemessen mit José Valims langcompilebench (100 Module mit je 100 Funktionen, vollständig ohne Cache kompiliert) im Vergleich von v1.17.0 und v1.19.0. Die erste Stufe des Umbaus war bereits in v1.18.0 enthalten.
- Genaue Positionen. Die Positionsangaben zur Laufzeit beziehen sich jetzt auf den ursprünglichen Gleam-Quelltext; Zeilennummern in BEAM-Absturzberichten und Stacktraces stimmen exakt. Vorher bezogen sie sich auf generiertes Erlang und zeigten teils nur auf die nächstgelegene Funktion.
- Saubererer Compiler-Code. Der alte Generator gehörte zu den ältesten Teilen der Codebasis und folgte nicht den heutigen Konventionen.
Warum kein BEAM-Bytecode. Der Beitrag erklärt, warum Gleam nicht direkt Bytecode erzeugt: Anders als Erlang-Quellcode und Abstract Forms ist BEAM-Bytecode nicht festgeschrieben und kann sich mit jeder VM-Version ändern. Ihn selbst zu erzeugen hieße, diese Änderungen dauerhaft nachzuziehen und auf die Optimierungen des Erlang-Compilers zu verzichten.
Die Ankündigung warnt selbst, dass der Benchmark konstruiert ist: Er kompiliert nur einen kleinen Teil der Sprachmerkmale und taugt als grober Vergleich, nicht als Schlussfolgerung.