Вчера вечерта на „Perl and Raku Conference in the Cloud“, Sawyer X обяви прехода от основната версия Perl от 5 на 7. Работата вече е в ход, новата версия ще излезе в рамките на годината. Не очаквайте много промени, накратко: Perl 7 е все същият Perl 5.32 с модерни настройки по подразбиране. Вече не е необходимо да включвате явно функциите, които вече използвате, те ще бъдат активирани автоматично!
Какво ще бъде включено?
Все още няма пълен списък, но strong и warnings определено ще има! В 7-ия релиз сигнатурите вероятно ще останат експериментални, а utf8 също няма да успеят да включат.
Какво ще бъде деактивирано?
- Неправилен извикване на методи:
{;
package Foo;sub new { bless {} }
sub bar { print "Hello from bar()!n" x pop }
}# Нормальный вызов
my $foo = Foo->new();
# Непрямой вызов
bar $foo 42; - Празни думи (barewords) като идентификатори на дескриптори (с изключение на стандартните (STDIN, STDOUT, STDERR))
- Псевдо многомерни хешове в стил Perl 4.
# примеры взяты из perldoc perlvar
$foo{$x,$y,$z}
# на самом деле означает $foo{join($;, $x, $y, $z)} - Старите прототипи в стил Perl 4. Сега трябва да пишете само така:
sub foo :prototype($$) ($left, $right) {
return $left + $right;
}Първо, прототипът, който влияе на компилацията при извикванията, и след това сигнатурите, поставящи аргументите в съответстващите променливи по време на изпълнението.
Все пак остава възможност да върнете всичко обратно наведнъж:
use compat::perl5;
Или по един.
Perl 5.32 преминава в режим на дълготрайна поддръжка за срок от 5 години.
Разширено обявление от Брайън Д Фой: https://www.perl.com/article/announcing-perl-7/
TL;DR версия от него: http://blogs.perl.org/users/brian_d_foy/2020/06/the-perl-7-tldr.html
Източник: linux.org.ru
