1 points par GN⁺ 2024-06-13 | 1 commentaires | Partager sur WhatsApp

Sortie d’Elixir v1.17 : types en théorie des ensembles, durées de calendrier, prise en charge d’Erlang/OTP 27

Avertissements progressifs de types en théorie des ensembles

  • Elixir v1.17 introduit des types en théorie des ensembles qui infèrent les types à partir des motifs et les utilisent pour vérifier les types du programme.
  • Ce système de types permet de trouver des erreurs et des bugs dans une base de code sans modifier le logiciel existant.
  • Pour l’instant, les développeurs ne peuvent interagir avec ce système de types qu’au travers d’avertissements.
  • Principaux avertissements :
    • pattern matching sur des clés inexistantes
    • accès à des clés inexistantes
    • appel de fonction sur quelque chose qui n’est pas un module
    • appel de quelque chose qui n’est pas une fonction lors de l’invocation d’une fonction anonyme
    • comparaison entre des structs
    • comparaison entre des types qui ne se recouvrent pas
    • pattern matching binaire invalide
    • tentative de rescue d’une struct d’exception non définie
    • accès à des champs non définis dans une exception interceptée

Prise en charge d’Erlang/OTP

  • Elixir v1.17 prend en charge Erlang/OTP 27 et abandonne la prise en charge d’Erlang/OTP 24.
  • Les développeurs Elixir recommandent de migrer vers Erlang/OTP 26 ou supérieur.
  • Principales fonctionnalités d’Erlang/OTP 27 :
    • ajout du module json
    • ajout des labels de processus (proc_lib:set_label/1)

Nouveau type de données Duration et fonctions de décalage de date

  • Elixir v1.17 introduit le type de données Duration ainsi qu’une API permettant de décaler des dates, des heures et des dates-heures d’une durée donnée.
  • Exemple :
    iex> Date.shift(~D[2016-01-31], month: 2)
    ~D[2016-03-31]
    
  • Duration est essentiel pour modéliser des intervalles, des événements récurrents et des plannings.
  • Dans le cas des DateTimes, Elixir gère correctement les changements de fuseau horaire.

Autres changements majeurs

  • Ajout des nouvelles fonctions Keyword.intersect/2,3.
  • Ajout du nouveau profileur Mix mix profile.tprof.
  • Ajout du garde Kernel.is_non_struct_map/1.
  • Le Logger d’Elixir formate les rapports gen_statem et inclut les labels de processus d’Erlang/OTP 27.

L’avis de GN⁺

  • Types en théorie des ensembles : ce système de types peut grandement aider à améliorer la stabilité et la fiabilité du code. Il est particulièrement utile dans les projets de grande taille.
  • Prise en charge d’Erlang/OTP 27 : la prise en charge de la dernière version d’Erlang/OTP apporte de nombreux avantages en matière de performances et de fonctionnalités.
  • Type de données Duration : la fonctionnalité de décalage de date prenant en compte les fuseaux horaires et le calendrier est très utile dans des applications comme la gestion d’agenda.
  • Limites du système de types : pour l’instant, l’analyse de types au-delà des frontières de fonction n’est pas possible, ce point devra donc être amélioré dans de futures mises à jour.
  • Produits concurrents : comparée à d’autres langages offrant un système de types statique, comme TypeScript, l’approche d’Elixir fournit une sûreté de type tout en conservant la flexibilité d’un langage dynamique.

1 commentaires

 
GN⁺ 2024-06-13
Commentaires sur Hacker News
  • Les équipes d’Elixir et d’Erlang obtiennent d’excellents résultats depuis quelques années. Les contributions des auteurs de bibliothèques et de livres sont également importantes. Suivre les commits d’Elixir et d’OTP est passionnant. Merci à toutes les personnes impliquées.

  • J’ai eu une expérience productive et agréable sur un side project utilisant Elixir en backend. J’apprécie énormément la productivité de LiveView, mais ce n’est pas adapté lorsque la connexion réseau est instable. Elixir reste tout à fait plaisant à utiliser même séparé de LiveView.

  • Je développe une startup en full stack avec Elixir, et c’est de loin la meilleure technologie que j’aie utilisée jusqu’à présent. Je fais découvrir les avantages d’Elixir à mes amis. J’espère que RabbitMQ et le client fonctionneront avec OTP 27.

  • Merci pour l’excellent travail des développeurs Elixir et Erlang. J’espère que l’excuse du « manque de types » disparaîtra pour favoriser une adoption plus large d’Elixir. Continuez comme ça.

  • Je lis des choses sur Elixir depuis 10 ans et j’adore ce langage. Mais j’ai renoncé aux emplois liés à Elixir à cause de salaires plus bas que dans les langages grand public. Le salaire et un produit enthousiasmant comptent davantage que la stack technique. Cela reste amusant de suivre Elixir de loin.

  • La fonctionnalité la plus sympa de cette version est l’ajout de get_in/1. Par exemple, dans get_in(struct.foo.bar), si foo renvoie nil, aucune erreur ne se produit en accédant à bar.

  • Cette version est la dernière pièce qu’il me manquait. J’ai hâte de voir la suite. Je pense que le langage est désormais complet à 100 % en termes de fonctionnalités.

  • Le système de types m’enthousiasme beaucoup. Je me souviens que José l’avait présenté comme un « système de types progressif ». Il devrait être ajouté étape par étape. Je me demande si la prochaine étape apportera de nouvelles fonctionnalités liées à ce système de types. J’attends surtout de nouvelles optimisations du compilateur.

  • Je suis très enthousiaste à propos de cette version. J’espère que des ressources seront investies dans le plugin Elixir pour IntelliJ. Je n’aime pas utiliser VSCode.

  • Je me demande si quelqu’un sait ce que signifie « types ensemblistes ». Je m’intéresse beaucoup aux langages de programmation, mais c’est la première fois que j’entends ce terme.