URL: https://linuxfr.org/news/annonce-de-perl-7 Title: Annonce de Perl 7 Authors: contra-sh Lawless, Ysabeau đ§¶, Davy Defaud, theojouedubanjo, ZeroHeure, Bruno Ethvignot, Alcyone et palm123 Date: 2020ćčŽ06æ30æ„T13:23:05+02:00 License: CC By-SA Tags: perl7 et perl Score: 55 Câest officiel, Sawyer X a annoncĂ© Perl 7. Câest une rĂ©volution pour Perl, clairement. Cependant, Perl 7 ne sera pas une rĂ©volution en termes de fonctionnalitĂ©s mais une Ă©tape de modernisation pour activer un grand nombre de fonctionnalitĂ©s par dĂ©faut, qui Ă©taient jusqueâlĂ activables Ă la demande, ainsi que changer de paradigme de dĂ©veloppement, puisquâon va faire avancer le langage plutĂŽt que de systĂ©matiquement privilĂ©gier la rĂ©trocompatibilitĂ©.  _Diapo explicative de Sawyer X_ ---- [VidĂ©os de la confĂ©rence Perl](https://www.youtube.com/c/YAPCNA/videos) [Liste de diffusion p5p](https://www.nntp.perl.org/group/perl.perl5.porters/) [Perl](https://www.perl.org/) [Code source de Perl](https://github.com/Perl/perl5) ---- # YAPC Il y a quelques jours sâest tenue la [plus grande confĂ©rence annuelle](https://www.youtube.com/yapcna) autour du langage [Perl](https://www.perl.org/). Pendant trois jours se sont succĂ©dĂ© : - de nombreux ateliers (aussi appelĂ©s BOF soit « _Birds Of a Feather_ »), par exemple sur les cadriciels Web [Mojolicious](https://mojolicious.org/) et [Dancer](http://perldancer.org/), ou sur la [promotion de Perl](https://www.perlfoundation.org/) ; - des _keynotes_ par des personnalitĂ©s majeures de Perl ou Raku ([Sawyer X](https://twitter.com/perlsawyer), [Damian Conway](https://fr.wikipedia.org/wiki/Damian_Conway) et [Johnathan Worthington](https://www.jnthn.net/)) ; - des confĂ©rences sur de nombreux sujets comme les tests (Perl <3 tests...), la fonctionnalitĂ© [_async_ de Mojolicious](https://mojolicious.io/blog/2019/12/26/announcing-core-async-await/), comment faire tourner [Perl en WebAssembly](https://webperl.zero-g.net/), lâ[intĂ©gration continue](https://fr.wikipedia.org/wiki/Int%C3%A9gration_continue) avec Perl, le dĂ©bogueur, lâanalyseur, le YAML, etc. ; - des discussions Ă©clairs (_lightning talks_), par exemple sur [OpenQA](http://open.qa/) ou sur [lâinterfaçage avec dâautres langages](https://metacpan.org/pod/Alien::FFI) (FFI). Toutes les vidĂ©os sont disponibles sur la [page YouTube officielle de la confĂ©rence Perl & Raku, hĂ©bergĂ©e par la Fondation Perl](https://www.youtube.com/c/YAPCNA/videos). :) # Annonce de Perl 7 Lors de la [_keynote_ dâintroduction](https://www.youtube.com/watch?v=6wPMh-3qYJM), Sawyer X, lâactuel mainteneur en chef de Perl, a surpris tout le monde en annonçant que la prochaine version de [Perl 5](https://github.com/Perl/perl5) serait [Perl 7](https://www.perl.com/article/announcing-perl-7/).  _[Monkey surprise](https://www.flickr.com/photos/29468339@N02/5888927678), par [@Doug88888](https://www.flickr.com/photos/29468339@N02) â licence [CC BYâNCâSA 2.0](https://creativecommons.org/licenses/by-nc-sa/2.0/?ref=ccsearch&atype=rich)._ Dans la foulĂ©e, [brian d foy](https://en.wikipedia.org/wiki/Brian_d_foy) a annoncĂ© la sortie de son livre qui explique comment se [prĂ©parer Ă Perl 7](https://perlschool.com/books/preparing-for-perl-7/). # Pourquoi Perl 7 ? Tout simplement parce que Perl 6 est devenu un autre langage et a Ă©tĂ© renommĂ© [**Raku**](https://www.raku.org/).  # « Feature guards » Toutes ces annĂ©es, lâinterprĂ©teur (et le langage) ont bien continuĂ© dâĂ©voluer avec des versions majeures, et ce, de façon trĂšs rĂ©guliĂšre... Mais sur les *numĂ©ros mineurs*... (nous en sommes Ă la version Perl 5.32.0). Voici les dĂ©pĂȘches _LinuxFr.org_ traitant des sorties de Perl : - [Sortie de Perl 5.10](https://linuxfr.org/news/sortie-de-perl-5100), en 2007 ; - [Sortie de Perl 5.12](https://linuxfr.org/news/perl-512-une-constante-jeunesse), en 2010 ; - [Sortie de Perl 5.14](https://linuxfr.org/users/jbbourgoin/journaux/sortie-de-perl-5140), en 2011 ; - [Sortie de Perl 5.16](https://linuxfr.org/news/perl-5-16-0), en 2012 ; - [Sortie de Perl 5.18, 5.20 et 5.22](https://linuxfr.org/news/sortie-de-perl-5-22-0) (5.18 en 2013, 5.20 en 2014, 5.22 en 2015) ; - [Sortie de Perl 5.30](https://linuxfr.org/news/sortie-de-perl-5-30-0) (5.24 en 2016, 5.26 en 2017, 5.28 en 2018, 5.30 en 2020) ; - [Sortie de Perl 5.32](https://linuxfr.org/news/sortie-de-perl-5-32-0), en 2020. Perl Ă©volue, mais ne casse jamais rien, car, jusqueâlĂ , Perl a fait preuve dâune rĂ©trocompatibilitĂ© presque maladive (et tant mieux !). Techniquement, les changements incompatibles sont « cachĂ©s » derriĂšre des « _[feature guard](https://perldoc.pl/feature.html)_ ». Sawyer X a dĂ©clarĂ© que « les _feature guards_ sont trĂšs intĂ©ressants, ils gardent la syntaxe. LâidĂ©e est quâelle ne changera jamais Ă moins que vous ne le demandiez, ce qui est une trĂšs bonne idĂ©e car cela offre une bonne protection contre une syntaxe et une sĂ©mantique non dĂ©sirĂ©es. Pour donner un exemple, le comportement du mot clĂ© `fc` peut ĂȘtre modifiĂ© en activant `use feature 'fc'` dans notre programme ([doc](https://perldoc.pl/feature.html#The-'fc'-feature)). Plusieurs _features guards_ peuvent ĂȘtre utilisĂ©s au sein dâun mĂȘme programme selon les portions (portĂ©e lexicale) et lâon peut Ă©galement supprimer des fonctionnalitĂ©s avec `no feature ...`. On peut Ă©galement activer un ensemble de _features guards_ tout dâun coup avec un `use version`. Par exemple, `use v5.32` active le « pack de fonctionnalitĂ©s Perl 5.32 » et empĂȘchera Ă©galement, si besoin, lâexĂ©cution sur un interprĂ©teur plus ancien : ``` $ perl -e "use v5.32;" Perl v5.32.0 required--this is only v5.26.1, stopped at -e line 1. ``` Perl 5.000 est sorti en 1994 mais, dans la pratique, on peut dire que la rĂ©trocompatibilitĂ© sâĂ©tend plutĂŽt sans problĂšme jusquâĂ 5.10.\* (5.10.0 en 2007) ou 5.8.\* (5.8.0 en 2002), parfois mĂȘme un peu plus (5.6.\*...). Tous les dĂ©tails sur les dates de sorties dans lâ[historique des sorties de Perl](https://perldoc.pl/perlhist).  Si lâon nâessaye pas dĂ©libĂ©rĂ©ment dâutiliser des fonctionnalitĂ©s modernes (activables donc), on peut trĂšs facilement Ă©crire du code qui tournera partout, pour longtemps, et mĂȘme sur Perl 5.8.9 ou 5.10.1. Dâautres « dĂ©fauts » ne sont pas des fonctionnalitĂ©s, mais des recommandations comme `use strict` et `use warnings` qui permettent de protĂ©ger le programmeur de luiâmĂȘme et sont mises en avant comme bonnes pratiques par la communautĂ© Perl depuis trĂšs longtemps. Les dĂ©veloppeurs de Perl ont donc dĂ©cidĂ© de se dĂ©barrasser de ce « fardeau » et dâactiver un bon nombre de ces « dĂ©fauts » qui sont quasiâincontestables.  Le comportement des « dĂ©fauts » va changer, mais les *Perl porters* ne sont pas fous et il sera toujours possible de retrouver le comportement dâavant avec un mode de compatibilitĂ© Perl 5... Tous les dĂ©tails techniques de la proposition Perl 7 sont disponibles sur cette [page de wiki](https://github.com/Perl/perl5/wiki/The-Proposal-for-Perl-7). La version 7.0.0 est prĂ©vue au plus vite (si possible a la place de la 5.34.0). En plus de la modernisation du langage, Perl 7 sert Ă©galement de : - pont vers Perl 8, qui est peut ĂȘtre la vĂ©ritable rĂ©volution (qui verra sĂ»rement de nombreuses nouveautĂ©s, ainsi que de nombreuses dĂ©prĂ©ciations et du nettoyage de code) ; - communication pour faire parler du langage en donnant une image positive. # AprĂšs lâannonce Lâannonce a Ă©tĂ© trĂšs bien accueillie et laisse place maintenant aux discussions dâimplĂ©mentation et Ă quelques inquiĂ©tudes ou quelques rĂ©fractaires. Le [GitHub Perl 5](https://github.com/Perl/perl5/issues), le canal IRC _#p5p_ ainsi que la [liste de diffusion](https://www.nntp.perl.org/group/perl.perl5.porters/) (en particulier le fil de discussion « _[Announcing Perl 7](https://www.nntp.perl.org/group/perl.perl5.porters/2020/06/msg257565.html)_ ») se sont transformĂ©s en forum :  _Fils de discussion sur la liste de diffusion._ Parmi les remarques, il ressort que certains souhaitent Ă tout prix utiliser un marqueur de version majeure comme `use v7` (sans pour autant sâen servir de « _feature guard_ » Ă proprement parler), et cette demande a dâailleurs par la suite [Ă©tĂ© acceptĂ©e](https://www.nntp.perl.org/group/perl.perl5.porters/2020/07/msg257817.html). Il y aura donc une sorte de « protocole » permettant de dĂ©finir pour quelle gĂ©nĂ©ration de lâinterprĂ©teur est Ă©crit le code. Le but Ă©tant de faciliter le plus possible une migration douce du [CPAN](https://metacpan.org/). LâidĂ©e Ă©tant « on peut casser, mais pas trop Ă la fois » et quâil nâest pas souhaitĂ© de « forker » le CPAN. Toutes ces prĂ©cautions se comprennent tout Ă fait, car la rĂ©trocompatibilitĂ© Ă©tait un des plus gros points forts de Perl... Mais ce nâest pas le seul ! Il y a Ă©galement de nombreuses demandes de fonctionnalitĂ©s (`try`â`catch`, les types, le comportement des « [sigils](https://fr.wikipedia.org/wiki/Sigil_(informatique)) », de nouveaux opĂ©rateurs...). Mais, lĂ , câest plutĂŽt hors sujet. Bref la communautĂ© est en pleine Ă©bullition ! # Et Perl 5 dans tout ça ? Il est prĂ©vu une pĂ©riode de support Ă©tendu de minimum cinq Ă dix ans pour Perl 5.32. Perl dispose dâune infrastructure dâoutils (installateurs trĂšs intelligents qui pourraient modifier du code Ă la volĂ©e) et dâune [culture du test](https://www.cpantesters.org/) qui va devoir tourner Ă plein rĂ©gime pour migrer, tester et corriger les [modules CPAN](https://metacpan.org/) (presque [200 000 modules](https://www.cpan.org/)) ! En attendant, Ă trĂšs bientĂŽt Perl 7, je lâespĂšre !