Hier soir, lors de la « Perl and Raku Conference in the Cloud », Sawyer X a annoncé le passage de la version principale de Perl de 5 à 7. Les travaux sont déjà en cours et la nouvelle version sera lancée dans l'année. Il ne faut pas s'attendre à de nombreux changements, en résumé : Perl 7, c'est toujours Perl 5.32 avec des réglages modernes par défaut. Vous n'aurez plus besoin de charger explicitement les fonctionnalités que vous utilisez déjà, elles seront activées pour vous !
Qu'est-ce qui sera inclus ?
Il n'y a pas encore de liste complète, mais strict et warnings sont définitivement inclus ! Dans la version 7, les signatures resteront probablement expérimentales, et utf8 ne sera pas inclus à temps.
Qu'est-ce qui sera désactivé ?
- Appels de méthode indirects :
{;
package Foo;sub new { bless {} }
sub bar { print "Hello from bar()!n" x pop }
}# Нормальный вызов
my $foo = Foo->new();
# Непрямой вызов
bar $foo 42; - Mots vides (barewords) comme identifiants de descripteurs (à l'exception des standards (STDIN, STDOUT, STDERR))
- Hachages pseudo-multidimensionnels à la manière de Perl 4.
# примеры взяты из perldoc perlvar
$foo{$x,$y,$z}
# на самом деле означает $foo{join($;, $x, $y, $z)} - Anciens prototypes à la manière de Perl 4. Désormais, il faut écrire uniquement comme suit :
sub foo :prototype($$) ($left, $right) {
return $left + $right;
}D'abord, le prototype qui influence la compilation des appels, puis les signatures qui placent les arguments dans les variables correspondantes lors de l'exécution.
Néanmoins, il restera possible de tout remettre en arrière :
use compat::perl5;
Ou un par un.
Perl 5.32 passe en mode de support à long terme pour une durée de 5 ans.
Annonce détaillée de Brian D Foy : https://www.perl.com/article/announcing-perl-7/
Version TL;DR de lui-même : http://blogs.perl.org/users/brian_d_foy/2020/06/the-perl-7-tldr.html
Source : linux.org.ru
