Анонсирован выход Perl 7

Вчера вечером на «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