Après un an de développement, la version 25 du langage de programmation fonctionnelle Erlang a été publiée, visant le développement d'applications résilientes distribuées, assurant le traitement parallèle des requêtes en temps réel. Le langage a gagné en popularité dans des domaines tels que les télécommunications, les systèmes bancaires, le commerce électronique, la téléphonie informatique et l'organisation d'échanges de messages instantanés. La version OTP 25 (Open Telecom Platform) a également été publiée simultanément — un ensemble de bibliothèques et de composants pour le développement de systèmes distribués en Erlang.
Les principales nouveautés :
- Une nouvelle construction « maybe ... end » a été implémentée pour grouper plusieurs expressions dans un seul bloc, similaire à « begin ... end », mais sans entraîner l'exportation de variables en dehors du bloc.
- Le support de l'activation sélective des fonctionnalités a été ajouté, permettant de tester et d'introduire progressivement de nouvelles fonctionnalités du langage et du runtime potentiellement incompatibles, sans perturber le code existant. Les fonctionnalités peuvent être activées et désactivées à la fois au moment de la compilation et à l'aide de la directive feature() dans les fichiers de code. Par exemple, pour activer la nouvelle expression maybe dans le code, on peut spécifier « feature(maybe_expr, enable) ».
- Des optimisations basées sur des informations de types de données ont été mises en œuvre dans le compilateur JIT, et le support des processeurs ARM 64 bits (AArch64) a été ajouté. Le support des outils perf et gdb a été amélioré, avec la transmission des informations sur les numéros de ligne dans le code.
- Un nouveau module peer a été ajouté avec des fonctions pour exécuter des nœuds Erlang liés. Après la perte de la connexion de contrôle avec un nœud, le fonctionnement de ce dernier est automatiquement arrêté.
- Le support de OpenSSL 3.0 a été ajouté.
- Dans le module maps, les fonctions groups_from_list/2 et groups_from_list/3 ont été ajoutées pour grouper une liste d'éléments.
- Dans le module lists, les fonctions uniq/1, uniq/2, enumerate/1 et enumerate/2 ont été ajoutées pour filtrer les éléments en double dans une liste et générer une liste de tuples avec les indices des éléments.
- Un nouveau générateur de nombres pseudo-aléatoires très rapide a été mis en œuvre dans le module rand.
Source : opennet.ru
