Perl 5.38.0 est sorti

Posté par  . Édité par kai, volts, orfenor, J-Forget, Benoît Sibaud, Xavier Teyssier et Ysabeau 🧶 🧦. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
33
18
sept.
2023
Perl

Perl est un langage généraliste créé en 1987 par Larry Wall. Il est distribué sous une double licence : Artistic Licence et GPL v1+. La plupart des modules du CPAN, dépôt de référence pour des modules tiers, suivent également ce même traitement. Perl est inclus dans la quasi-totalité des distributions GNU/Linux.

La toute dernière version de Perl, la 5.38.0, est sortie le 3 juillet 2023. Vous la retrouverez bientôt dans votre distribution préférée.

Tout d’abord un petit lien vers la dépêche de l’année dernière sur la sortie de Perl 5.36.0 ainsi que vers les dépêches annonçant les sorties de Perl 5.32.0 et 5.30.0.


Perl (wikipedia)
Annonce de Perl 5.38.0
Changelog Perl 5.38.0
TODO Changelog commenté
Site officiel Perl


Perl est un langage généraliste créé en 1987 par Larry Wall. Il est distribué sous une double licence : Artistic Licence et GPL v1+. La plupart des modules du CPAN, dépôt de référence pour des modules tiers, suivent également ce même traitement. Perl est inclus dans la quasi-totalité des distributions GNU/Linux.

Améliorations de base

Nouvelle fonctionnalité de classe

Depuis quelque temps, Curtis 'Ovid' Poe propose d’intégrer une couche orienté-objet dans l’interpréteur Perl lui-même. Si Perl a plusieurs (dizaines de) modules qui permettent d’utiliser de l’orienté-objet qu’on trouve facilement sur CPAN, ceux-ci sont bridés par le fait qu’ils ne peuvent pas modifier la syntaxe du langage. Ajoutons qu’il n’est pas toujours facile de choisir parmi les différentes solutions proposées… Il a donc proposé un nouveau concept, Corinna, qui sera intégré dans l’interpréteur Perl en plusieurs étapes, la première ayant été intégrée pendant le cycle de développement de Perl 5.38.

Les classes

Ainsi, une nouvelle syntaxe est désormais disponible pour définir des classes d’objets, où les données par instance sont stockées dans des variables « champ » qui se comportent comme des lexiques.
On peut déclarer une classe des manières suivantes :

  • class NAME BLOCK
  • class NAME VERSION BLOCK
  • class NAME;
  • class NAME VERSION;

Les champs

Le mot clé 'field' permet de déclarer des variables à l’intérieur d’une classe. Les valeurs de ces variables sont privées par défaut, mais on peut créer une fonction qui les rend accessibles.

  • field VARIABLE_NAME;
  • field VARIABLE_NAME = EXPR;
  • field VARIABLE_NAME : ATTRIBUTES;
  • field VARIABLE_NAME : ATTRIBUTES = EXPR;

Les méthodes

Le mot-clé 'method' permet de déclarer des fonctions (anonymes ou pas) propres à une classe.

  • method METHOD_NAME SIGNATURE BLOCK
  • method METHOD_NAME BLOCK
  • method SIGNATURE BLOCK
  • method BLOCK

Comme dit, ceci reste une fonctionnalité nouvelle et expérimentale, encore en développement. Elle fera l’objet d’ajouts, de raffinements et sans doute de modifications. Comme elle est expérimentale, son utilisation génère des avertissements dans la catégorie experimental::class. Ceux-ci peuvent être réduits au silence par une déclaration de non-avertissement.

Comme toujours, use v5.38; active les fonctionnalités pour cette version de Perl.

use v5.38;
sub add ($x, $y) {
    return $x + $y;
}

Unicode 15.0 est pris en charge

Chaque version de Perl essaie d’avoir le support de la dernière version d’Unicode connue et Perl 5.38 ne fait pas exception à la règle. La version 15.0 d’Unicode étant sortie en septembre 2022, c’est le support de cette version qu’on retrouve dans Perl 5.38.

Si les développeurs de Perl visent la sortie d’une nouvelle version en juin, c’est, entre autres raisons, parce que la communauté Perl organise la conférence Perl et Raku (« The Perl and Raku Conference », en vo) au mois de juillet. L’édition de cette année s’est déroulée à Toronto, au Canada et on a pu y discuter de l’utilisation du langage, des ajouts qui sont prévus et de l’utilisation de certains modules. On peut retrouver l’ensemble des présentations données sur la chaîne Youtube de l’évènement.

  • # Objet

    Posté par  . Évalué à 7.

    Ça signifie qu'il devrait à terme ne plus y avoir besoin du fonctionnement à base de bless pour la POO en perl ?

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

    • [^] # Re: Objet

      Posté par  (site web personnel) . Évalué à 7.

      Très bonne question !

      Si je me souviens bien :

      bless $var ;

      "Bénie" une variable qui devient alors un objet …

      Perso j'ai vraiment compris la notion d'objet grace à cette commande

    • [^] # Re: Objet

      Posté par  (site web personnel, Mastodon) . Évalué à 5. Dernière modification le 19 septembre 2023 à 20:38.

      Apparemment oui https://perldoc.perl.org/perlclass#History

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

    • [^] # Re: Objet

      Posté par  . Évalué à 4.

      Si j'ai bien tout suivi, tu pourras toujours utiliser bless pour faire de l'orienté objet mais tu auras aussi l'option d'utiliser cette nouvelle syntaxe Corinna pour faire la même chose en moins de ligne et de manière plus claire.

      • [^] # Re: Objet

        Posté par  (site web personnel) . Évalué à 4.

        À mon avis, cela va plus loin. Avec Corinna, l'objet est codé en dur dans la machine donc ce ne sera pas une table de hashage (ou un tableau, ou un scalaire, ou une array inversé…).

        Donc en principe, cela devrait être plus performant.

        • [^] # Re: Objet

          Posté par  . Évalué à 4.

          Paul Evans (le développeur principal de Corinna) a plusieurs fois expliqué que l'implémentation actuelle est non optimisée. Une fois qu'on aura finalisé cette implémentation, on pourra voir à optimiser les perfs pour que ça aille le plus vite possible.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.