IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La version 0.32.0 de Gleam, le langage évolutif et sûr pour la machine virtuelle Erlang et les moteurs d'exécution JavaScript, a été publiée

Le , par Anthony

33PARTAGES

6  0 
La version 0.32.0 de Gleam, le langage évolutif et sûr pour la machine virtuelle Erlang et les moteurs d'exécution JavaScript, a été publiée

Gleam v0.32.0 vient d'être publié. Gleam est un langage de type sûr et évolutif pour la machine virtuelle Erlang et les moteurs d'exécution JavaScript. Cette version se concentre sur la préparation de Gleam pour une future version 1.0 en apportant quelques changements avant que le langage ne soit déclaré stable.

Gleam est un langage convivial permettant de construire des systèmes de type sûrs et évolutifs. Ce langage offre la puissance d'un système de types, l'expressivité de la programmation fonctionnelle et la fiabilité du moteur d'exécution Erlang hautement concurrent et tolérant aux pannes, avec une syntaxe familière et moderne.

Exécuté sur la machine virtuelle Erlang qui a fait ses preuves et qui alimente des systèmes à l'échelle de la planète tels que WhatsApp et Ericsson, Gleam est prêt pour des charges de travail de toute taille. Grâce à un système de concurrence basé sur des acteurs multicœurs qui peut exécuter des millions de tâches simultanées, des structures de données rapides et immuables, et un ramasse-miettes concurrent qui fait en sorte que le monde ne s'arrête jamais, votre service peut évoluer et rester rapide comme l'éclair, en toute simplicité.


Gleam est livré avec un compilateur, un outil de construction, un formateur, des intégrations d'éditeurs et un gestionnaire de paquets tous intégrés, de sorte que la création d'un projet Gleam consiste simplement à exécuter gleam new.

En tant que partie intégrante de l'écosystème BEAM, les programmes Gleam peuvent utiliser des milliers de paquets publiés, qu'ils soient écrits en Gleam, Erlang ou Elixir. Pas de valeurs nulles, pas d'exceptions, des messages d'erreur clairs et un système de types pratique. Que vous écriviez un nouveau code ou que vous mainteniez un ancien code, Gleam est conçu pour rendre votre travail le plus agréable et le moins stressant possible.

Gleam facilite en outre l'utilisation de code écrit dans d'autres langages BEAM tels qu'Erlang et Elixir. Il existe donc un écosystème riche de milliers de bibliothèques open source que les utilisateurs de Gleam peuvent utiliser. Gleam peut également compiler en JavaScript, ce qui vous permet d'utiliser votre code dans le navigateur ou partout où JavaScript peut s'exécuter. Il génère par ailleurs des définitions TypeScript, ce qui vous permet d'interagir avec votre code Gleam en toute confiance, même depuis l'extérieur.

Pourquoi le langage s'appelle-t-il Gleam ?

Gleam rime avec et est un synonyme de "beam", qui est le nom de la machine virtuelle Erlang. C'est aussi un mot court et mignon qui, espérons-le, est facile à épeler et à prononcer pour la plupart des gens.

En quoi Gleam compile-t-il ?

Gleam compile en Erlang ou en JavaScript.

Gleam aura-t-il des classes de type ?

Les classes de type sont amusantes et permettent de créer de très belles API concises, mais elles peuvent faciliter la création d'un code difficile à comprendre, ont tendance à avoir des messages d'erreur confus, à consommer le code d'autres langages beaucoup plus difficilement, ont un coût de compilation élevé, et ont un coût d'exécution à moins que le compilateur n'effectue une compilation complète du programme et un monomorphisme coûteux. Ce n'est malheureusement pas un bon choix pour Gleam et ce n'est pas prévu.

Gleam aura-t-il une forme de métaprogrammation ?

L'équipe de Gleam est très intéressée par une forme de métaprogrammation dans Gleam. Actuellement, Gleam est dans la phase de recherche et de conception, et ce n'est pas une priorité par rapport à l'outillage et aux autres travaux nécessaires à la sortie de la version 1.0.

Si vous avez des problèmes qui pourraient être résolus par la métaprogrammation, ou des propositions pour une conception de métaprogrammation, n'hésitez pas à les partager.

Gleam a-t-il un état mutable ?

Toutes les structures de données de Gleam sont immuables et sont implémentées en utilisant le partage structurel afin qu'elles puissent être mises à jour efficacement.

Si votre application a besoin de conserver un état mutable, celui-ci peut être conservé par un acteur (qui enveloppe de manière immuable l'état mutable en utilisant la récursivité) ou vous pouvez utiliser ETS, la base de données clé-valeur en mémoire d'Erlang.

Si vous compilez Gleam en JavaScript, la bibliothèque gleam_javascript propose des références mutables.


Gleam v0.32.0 a été publié

Gleam est un langage de type sûr et évolutif pour la machine virtuelle Erlang et les moteurs d'exécution JavaScript. Aujourd'hui, Gleam v0.32.0 a été publié, une version qui se concentre sur la préparation de Gleam pour une version 1.0 en apportant quelques changements avant que le langage ne soit déclaré stable.

Résoudre l'ambiguïté des importations

Voici à quoi ressemble la syntaxe d'importation de Gleam :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
import gleam/option.{Option, Some, None}

pub fn greet(option : Option(String)) -> String {
  case option {
    Some(name) -> "Hello " <> name
    None -> "Hello, World !"
  }
}

Ici, le module gleam/option est importé, et les valeurs Some, et None ainsi que le type Option sont importés de manière non qualifiée afin que l'on puisse s'y référer sans le préfixe module_name.

Bien que Option soit un type et None une valeur, ils sont tous deux importés en utilisant la même syntaxe. La situation devient plus complexe si l'on considère que dans Gleam, un type et une valeur peuvent avoir le même nom. Par exemple :

Code : Sélectionner tout
1
2
3
4
5
/// A type called `Person`
pub type Person {
  /// A value constructor, also called `Person`
  Person(name : String)
}

Dans ce cas, lorsque vous lisez le code import the/module.{Person}, vous ne pouvez pas savoir si c'est le type qui est importé, la valeur ou les deux. Le compilateur résout cette ambiguïté en vérifiant comment l'élément importé est utilisé.

La clarté est un objectif central de Gleam, c'est pourquoi, pour alléger la charge cognitive de la lecture du code Gleam, la syntaxe d'importation des types et des valeurs a été modifiée.

Code : Sélectionner tout
import gleam/option.{type Option, Some, None}

Pour importer un type, le mot-clé type est utilisé avant le nom, aucun mot-clé n'étant utilisé pour une valeur. Désormais, on sait toujours ce que fait une déclaration d'importation !

L'ancienne syntaxe est toujours supportée, mais sera supprimée dans une prochaine version, et un avertissement de dépréciation sera émis lorsqu'elle sera utilisée.

BitString -> BitArray

Gleam dispose d'un type pour une séquence contiguë de bits. Il est similaire au type bytes de Python, mais il n'est pas limité à des octets de 8 bits, il peut s'agir de n'importe quel nombre de bits.

Il dispose également d'une syntaxe littérale pour la construction et la recherche de motifs, de sorte que la plupart des opérations bitwise utilisées dans d'autres langages peuvent être effectuées avec une syntaxe plus simple.

Code : Sélectionner tout
1
2
3
pub fn seven_bit_little_endian_int() -> BitString {
  <<2:size(7)-little>>>
}

Cette fonctionnalité, que Gleam a héritée d'Erlang, est très appréciée par la communauté, à l'exception du nom. De nombreux utilisateurs de Gleam, en particulier ceux qui viennent de langages autres qu'Erlang ou Elixir, trouvent le nom BitString déroutant. Qu'est-ce que cela a à voir avec les chaînes de caractères ? C'est uniquement pour le texte ?

Cette confusion est compréhensible, c'est pourquoi le nom a été changé en BitArray, et dans la syntaxe du pattern, les options binary et bit_string ont été renommées en bytes et bits, en espérant que leur but soit plus clair. Parallèlement, le module de la bibliothèque standard gleam/bit_string a été supprimé au profit de gleam/bit_array. Les anciens noms et modules sont obsolètes et seront supprimés dans une prochaine version.

Le retour de gleam fix

Wow, ça fait beaucoup de choses obsolètes ! Il va être fastidieux de corriger tout le code existant, n'est-ce pas ? Heureusement, la commande gleam fix est de retour.

Lancez gleam fix à la racine de n'importe quel paquetage Gleam et il mettra automatiquement à jour votre code pour utiliser la nouvelle syntaxe. Elle mettra également à jour le fichier gleam.toml pour définir la contrainte de version de Gleam à >= 0.32.0, garantissant que si vous publiez votre paquetage dans le gestionnaire de paquetages Hex, les utilisateurs de versions plus anciennes de Gleam n'obtiendront pas d'erreurs déroutantes dues à la nouvelle syntaxe.

Actions du code du serveur de langage

Le binaire gleam inclut le compilateur, l'outil de construction, le gestionnaire de paquets, ainsi que le serveur de langage, qui fournit des fonctionnalités IDE à VS Code, Vim, Emacs, et tout autre éditeur qui supporte le protocole.

Avec cette version, le...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !