Les nouveautés de Perl 5.24

Journées perl 2016

Une nouvelle année, une nouvelle version stable de Perl.

Revue des nouveautés majeures de la version 5.24, publiée le 09 mai 2016.

Vous souhaitez consulter la présentation originale, c'est ici.

9 commentaires Donner une note à l'article (5)

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Les nouveautés de Perl 5.22

Présentation

  • condensé de perldelta (66 Ko)
  • seulement les changements les plus marquants

Cycles de publication

  • planification des versions

    • une version majeure par an (Q2)
    • des versions mineures tous les 2-3 mois
  • cycle de dépréciation court

    • avertissement pendant une ou deux versions majeures
    • suppression effective à la version majeure suivante
    • modules retirés envoyés sur le CPAN

Précédentes versions majeures

  • 5.12.0 le 12 avril 2010
  • 5.14.0 le 14 mai 2011
  • 5.16.0 le 12 mai 2012
  • 5.18.0 le 18 mai 2013

Perl 5.20

  • 5.20.0 le 16 mai 2014

    • 5.16 n'est plus officiellement supportée
  • principales nouveautés :

    • signatures de fonctions ;
    • déréférence postfixée ;
    • tranche de hash.

Perl 5.22

  • 5.22.0 le 1er juin 2015

    • 5.18 n'est plus officiellement supportée
    • principales nouveautés :

      • opérateurs : bitwise ; double diamant <<>> ;
      • regexps : use re "strict" ; nouvelles frontières de mot \b ; option de non-capture /n ;
      • fonctionnalités : refaliasing ; :const.

Perl 5.24

  • 5.24.0 le 9 mai 2016

    • 5.20 n'est plus officiellement supportée
  • 5.24.1 probablement vers septembre 2016
  • 5.24.2 probablement vers mars 2017

Résumé

  • peu de nouveautés, des retraits de certaines choses
  • version de stabilisation
  • et bien sûr des correctifs et des optimisations

Confirmation - déréférencement postfixé

  • n'est plus une fonctionnalité expérimentale
  • use feature "postderef" maintenant sans effet
  • use v5.24 active postderef_qq
  • $r = [ 1, [ 2, 3 ], 4 ]; $r->[1]->@*; # équivalent à @{ $r->[1] }

Regexps

  • nouvelles frontières de mot \b (UAX #29: Unicode Text Segmentation)
  • \b{gcb}, \b{wb} et \b{sb} introduits avec 5.22
  • \b{lb} — Line Break, aussi disponible avec Unicode::LineBreak
  • \b{wb} — plus proche de ce qui est attendu en Perl
  • erreurs à l'exécution maintenant détectées à la compilation

    • propriétés Unicode \p{} et \P{}
  • \N{} maintenant une erreur sous use re "strict"
  • qr/(?[ ])/ fonctionne maintenant avec les locales UTF-8

Unicode

  • Unicode 8.0.0
  • ajout de 7 716 caractères, dont 6 nouveaux systèmes d'écriture

    • nombreuses syllabes minuscules Cherokee, appariées avec les caractères existants
    • 5 771 idéographes CJK unifiés
    • nouveaux symboles emoji pour supporter la diversité dans la couleur de peau
    • caractères pour des langues africaines (Ik en Ouganda, Kulango en Côte d'Ivoire)

Nouveautés diverses

  • décalages binaires (<< et >>) ne dépendent plus de l'implémentation C du système
  • printf et sprintf supportent des arguments de précision réagençables
    sprintf '|%.*2$d|', 2, 3 # "|002|"
  • plus de champs passés au callback de sigaction configuré avec SA_SIGINFO
  • redirection de shebang vers Perl 6

Changements incompatibles

  • autoderef a été retiré
    push $arrayref, @values;
  • my $_ a été retiré

    • introduit dans 5.10 (2007), rendu expérimental dans 5.18 (2013)
  • caractères ASCII non graphiques interdits dans les noms de variables
  • déclarations imbriquées interdites
    my ($x, my($y)); our (my $x);
  • \C retirée
  • chdir('') ou chdir(undef) maintenant sans effet
 
Sélectionnez
     maddingue@Landroval:/tmp $ perl5.22.0 -E 'chdir(""); say `pwd`'
     Use of chdir('') or chdir(undef) as chdir() is deprecated at -e line 1.
     /Users/maddingue
     
     maddingue@Landroval:/tmp $ perl5.24.0 -E 'chdir(""); say `pwd`'
     /tmp

Changements internes

  • implémentation de la pile de contexte et son API interne
  • pas de gros changements sur l'API publique
  • mais assez pour casser certains modules CPAN
    Algorithm::Permute, Coro, Data::Alias, RPerl, Scope::Upper, TryCatch, mod_perl

Dépréciations

  • utilisation de code points au dessus du IV_MAX de la plate-forme
  • opérations de bits sur les chaînes avec des code points au dessus de 0xFF
  • sysread(), syswrite(), recv() et send() sur des descripteurs en mode :utf8

Optimisations

  • entrée et sortie de portée lexicale plus rapides
  • opérations de casse (ucfirst(), qr//i) plus rapides sur les langages sans casse
  • /string/ potentiellement beaucoup plus rapide (dépend de memchr())
  • addition, soustraction et multiplication plus rapides
  • pré-/post- incrément / décrément plus rapides

Support de plates-formes

  • plates-formes à nouveau fonctionnelles

    • AmigaOS
  • nombreux correctifs

    • Win32, VMS, EBCDIC

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

En complément sur Developpez.com

  

Licence Creative Commons
Le contenu de cet article est rédigé par Sébastien Tramonis-Asperghis et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2013 Developpez.com.