Présentation de Gleam

Gleam est un langage de programmation sécurisé et évolutif pour la machine virtuelle Erlang et les runtime JavaScript. La version 1.18.0 de Gleam a été publiée, apportant plusieurs améliorations importantes, notamment au niveau de son serveur de langage.

Fonctionnalités du serveur de langage

Le serveur de langage de Gleam prend en charge les champs d'enregistrement, ce qui signifie qu'il peut maintenant gérer les go-to-definition, find-references et rename pour les champs d'enregistrement. Par exemple, pour le code suivant :

pub type Person { Person(name: String, age: Int) }

Le serveur de langage peut renommer le champ name partout où il est utilisé.

De plus, le serveur de langage permet maintenant de renommer les variables de type dans les fonctions, les types et les constantes. Par exemple :

pub fn twice(value: a, f: fn(a) -> a) -> a { f(f(value)) }

peut être renommé en :

pub fn twice(value: anything, f: fn(anything) -> anything) -> anything { f(f(value)) }

Améliorations de performances et de sécurité

Gleam a également amélioré les performances de son compilateur JavaScript en identifiant les structures de données où toutes les instances sont équivalentes et en utilisant une seule valeur pour chaque utilisation au lieu de construire une nouvelle instance à chaque fois. Cela a un impact significatif sur les performances, notamment pour les applications qui utilisent beaucoup de ces structures de données.

En outre, Gleam a déprécié la syntaxe de pipeline ambiguë, qui pouvait entraîner des erreurs de compilation. Le serveur de langage offre maintenant une action de code pour corriger cette syntaxe dépréciée.

Intégration avec Hex et améliorations de l'expérience utilisateur

Gleam utilise Hex, le gestionnaire de packages pour l'écosystème Erlang. La version 1.18.0 de Gleam prend en charge les clés API Hex pour les opérations de lecture, ce qui permet d'éviter les limites de taux d'Hex. De plus, l'expérience utilisateur de Gleam avec Hex a été améliorée, notamment avec des messages d'erreur plus clairs et une prise en charge améliorée des monorepos.