Вчера вечером на «Perl and Raku Conference in the Cloud», Sawyer X анонсировал смену основной версии Perl с 5 на 7. Работы уже ведутся, новая версия выйдет в течение года. Большого количества изменений ждать не стоит, если коротко: Perl 7 это всё тот же Perl 5.32 с современными настройками по умолчанию. Вам больше не надо явно подключать возможности которые вы и так используете, их включат для вас!
Что включат?
Полного списка пока нет, но strict и warnigs точно! В 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