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

good-penguin.png

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