Από τον πηγαίο κώδικα στα abstract forms
Η πιο σημαντική αλλαγή στην έκδοση 1.19.0 της Gleam είναι η πλήρης αναγραφή του Erlang code generator. Αντί για την παραγωγή κώδικα Erlang, ο compiler παράγει πλέον Erlang abstract forms. Πρόκειται για μια ενδιάμεση αναπαράσταση (intermediate representation) σε δυαδική μορφή, η οποία τροφοδοτείται απευθείας στον Erlang compiler. Αυτή η προσέγγιση επιτρέπει την παράκαμψη του tokenization και του parsing, μειώνοντας το overhead και προσφέροντας ακριβέστερα metadata για το runtime.
Βελτιστοποιήσεις στο JavaScript target
Πέρα από το οικοσύστημα BEAM, η Gleam βελτίωσε σημαντικά τον τρόπο που παράγει JavaScript. Η νέα λογική στα pattern matching επιτρέπει τη μετατροπή πολύπλοκων nested case εκφράσεων σε πιο επίπεδο (flat) κώδικα, μειώνοντας τον αριθμό των branches που πρέπει να διαχειριστεί η JavaScript engine. Επιπλέον, η βελτιστοποίηση των list literals για μικρές λίστες εξαλείφει την ανάγκη για runtime μετατροπές από arrays, προσφέροντας καλύτερη απόδοση σε βιβλιοθήκες όπως η Lustre.
Στρατηγική επιλογή έναντι του BEAM bytecode
Παρά τις συζητήσεις για απευθείας παραγωγή BEAM bytecode, η ομάδα της Gleam επέλεξε τα abstract forms ως το «σημείο συμφόρησης (bottleneck)» με τη βέλτιστη σχέση κόστους-οφέλους. Η διατήρηση της συμβατότητας με τις εξελίξεις της Erlang VM απαιτεί τεράστιους πόρους, και η χρήση των abstract forms —μια πρακτική που ακολουθεί και η Elixir— διασφαλίζει τη σταθερότητα και τη βιωσιμότητα του project μακροπρόθεσμα.
Εμπειρία προγραμματιστή και tooling
Η αναβάθμιση περιλαμβάνει επίσης σημαντικές βελτιώσεις στα μηνύματα σφάλματος, την υποστήριξη για TypeScript API overloads και τη δυνατότητα χρήσης του formatter μέσω WebAssembly στον browser. Η προσπάθεια για καλύτερη ενσωμάτωση με εργαλεία όπως το Mix και το rebar3 καθιστά τη Gleam μια ολοένα και πιο ελκυστική επιλογή για projects που απαιτούν υψηλή διαλειτουργικότητα (interoperability) εντός του οικοσυστήματος της Erlang.