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Ă©. ![Perl 7](https://i.imgur.com/mMfH65w.png) _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/). ![Surprised](https://live.staticflickr.com/6024/5888927678_9b2c9b8e14_b.jpg) _[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/). ![why7](https://i.imgur.com/gUuXLXE.png) # « 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). ![retro](https://i.imgur.com/NjaJNVu.png) 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. ![evolve](https://i.imgur.com/MAnauKV.png) 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 : ![p5p](https://i.imgur.com/fR9iSfw.png) _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 !

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /