Le conseil d'administration du projet Perl a rĂ©sumĂ© ses plans pour le dĂ©veloppement futur de la branche Perl 5 et la crĂ©ation de la branche Perl 7. Au cours des discussions, le conseil a convenu qu'il n'Ă©tait pas acceptable de rompre la compatibilitĂ© avec le code dĂ©jĂ Ă©crit pour Perl 5, sauf dans les cas oĂč cette rupture est nĂ©cessaire pour corriger des vulnĂ©rabilitĂ©s. Le conseil a Ă©galement conclu que le langage doit Ă©voluer et que de nouvelles fonctionnalitĂ©s doivent ĂȘtre davantage promues, tout en simplifiant l'accĂšs aux innovations Ă©mergentes et en encourageant leur adoption.
Contrairement aux intentions initiales, permettant d'inclure par défaut dans la branche Perl 7 des modifications rompant la compatibilité, le nouveau plan prévoit une transition progressive de la branche Perl 5 vers Perl 7 sans violer la compatibilité avec le code existant. La sortie de Perl 7.0 ne sera conceptuellement pas différente d'une nouvelle branche Perl 5.xx.
Le dĂ©veloppement de nouvelles versions de Perl 5 se poursuivra comme auparavant : les nouvelles fonctionnalitĂ©s ajoutĂ©es Ă la branche, non compatibles avec l'ancien code, seront toujours incluses uniquement si explicitement indiquĂ© dans le code par les pragmas «use version» ou «use feature fonctionnalité». Par exemple, dans la version Perl 5.010, un nouveau mot-clĂ© «say» a Ă©tĂ© introduit, mais comme des fonctions portant le mĂȘme nom pouvaient ĂȘtre utilisĂ©es dans le code existant, la prise en charge de ce nouveau mot-clĂ© n'Ă©tait activĂ©e que par une indication explicite du pragma «use feature âsay'».
La nouvelle syntaxe ajoutĂ©e au langage, qui entraĂźnait une erreur dans les versions prĂ©cĂ©dentes, est dĂ©sormais disponible immĂ©diatement sans nĂ©cessitĂ© d'indiquer des pragmas spĂ©ciaux. Par exemple, dans Perl 5.36, une syntaxe simplifiĂ©e pour le traitement simultanĂ© de plusieurs valeurs d'une liste («foreach my ($key, $value) (%hash) {») sera disponible tout de suite, mĂȘme dans un code sans le pragma «use v5.36».
Dans sa forme actuelle, dans Perl 5.36, lors de l'utilisation du pragma «use v5.36», 13 fonctionnalitĂ©s rompant la compatibilitĂ© (âsayâ, âstateâ, âcurrent_subâ, âfcâ, âlexical_subsâ, âsignaturesâ, âisaâ, âbareword_filehandlesâ, âbitwiseâ, âevalbytesâ, âpostderef_qqâ, âunicode_evalâ et âunicode_stringsâ) sont activĂ©es par dĂ©faut, les modes «use strict» et «use warnings» sont inclus, et le support de la notation d'appel d'objet obsolĂšte est dĂ©sactivĂ© (oĂč un espace est utilisĂ© Ă la place de «->») ainsi que des tableaux et des hachages multidimensionnels en style Perl 4 («$hash{1, 2}»).
Lorsque les changements s'accumuleront suffisamment, une version Perl 7.0 sera créée au lieu d'une autre version de Perl 5.x, qui reprĂ©sentera un instantanĂ© de l'Ă©tat actuel, tout en restant complĂštement rĂ©trocompatible avec Perl 5. Pour inclure des modifications et des configurations non compatibles, il sera nĂ©cessaire d'ajouter explicitement dans le code la pragma « use v7 ». Autrement dit, le code avec la pragma « use v7 » peut ĂȘtre considĂ©rĂ© comme « Perl moderne », dans lequel des modifications du langage non compatibles sont disponibles, tandis que sans cela, c'est « Perl conservateur », qui restera entiĂšrement rĂ©trocompatible avec les versions prĂ©cĂ©dentes.
Source : opennet.ru
