LINUX.ORG.RU

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

 ,


3

2

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

>>> Подробности

★★★

Проверено: alpha ()

Ответ на: комментарий от anonymous

То есть ты переписал скриптуху с питона на го и пришел страдать из-за пердла?

а чего мне должно было не хватить в го?

После перла перловщикам тима тоуди не хватает по их же словам.

Virtuos86 ★★★★★ ()
Ответ на: комментарий от perl5_guy

Есть попытки прикрутить типизацию, но перспективы не радужные. Конечно большие компании ставку на Perl не делают. На энтузиазме такой крест затащить сложно.

дело не в типизации, а в том, что код не надо переписывать, а надо только перекопмилировать. если его не надо переписывать, то и не надо перетестировать. эти два «простых действия» могут легко напрячь тысячу человек на самом первом этапе.

до сегодняшнего дня перл был стабилен. хипсторы там где-то возились с раку/сраку/пурл/хурл, не важно, главное, что они перл особо не трогали, значит и на нём можно было что-то сделать и оставить. стоимость поддержки кода на перле была около нулевой, он «просто работал».

да, ты всё правильно понял, бро, те самые патрики про которых на видео, именно они. и ты знаешь, в крупной компании, ну найдётся кто-то кто перепишет, всё равно все на зарплате, а ты попробуй в опенсорсе найти волонтёра который возьмёт и забесплатно перепишет миллион строк кода. мда. поэтому в первую очередь от перла 7 пострадает именно опенсорс на перле.

понятно, что язык не должен стоять на месте и должен развиваться, и с этим будут связаны какие-то затруднения и т.д. и т.п. но то что было сказано на видео - это, мягко говоря, не совсем то, что мне хотелось бы услышать если бы у меня был миллион строк кода на перле. но всё равно, спасибо за пост, было интересно послушать, и будет интересно посмотреть чем это закончится.

anonymous ()
Ответ на: комментарий от anonymous

питухон с нами попрощался - его дело, в добрый путь.

я к этому языку хорошо относился, пока про него просто слышал со стороны. А потом установил себе Meld и прихуел от тормозов.

anonymous ()
Ответ на: комментарий от anonymous

поэтому в первую очередь от перла 7 пострадает именно опенсорс на перле.

Надо не кровати двигать, а девочек менять. Опен-сорс это хорошо, но пока он не освоил коммерческие рельсы, это будут бесконечные кривульки и недоделки.

anonymous ()
Ответ на: комментарий от perl5_guy

Не думаю что дистростроители будут тащить две версии. Скорей всего для системы останется 5.32, который обещают поддерживать минимум 5 лет

Смотря какие дистростроители. В каком-нибудь арче перл7 будет прям завтра, и не важно, что всё сломается. В дебиане я надеюсь не увижу его до 2030 года (если доживу).

bread ()
Ответ на: комментарий от anonymous

хипстеры поломали питон, теперь до перла добролись.

Этого следовало ожидать, потому что нехипстеры уже осваивают дома престарелых. Теперь смузихлёбы сломают вообще всё, нужно привыкать.

bread ()
Последнее исправление: bread (всего исправлений: 1)
Ответ на: комментарий от zloelamo

Я как-то писал большую клюкву с наследованием

Вот и зря. Как только у кодера зачесалось ООП, перл уже надо отставлять. Вообще любой код на перле не умещающийся в одном файле = ССЗБ.

bread ()
Ответ на: комментарий от zloelamo

Я люблю Perl, но дао «это можно сделать несколькими путями» по факту приводит к плохим результатам.

языков где это дао не работает - нет

взять например Питон, он пропагандирует обратное дао «лучше иметь строго один путь»

но и на нём можно

  • писать ООП и функционально
  • использовать map/filter, лямбды или генераторы
  • циклами ходит while или for
  • есть всякие else около циклов/исключений
  • есть суффиксные if-else, они же есть в генераторах

итп итд

нет языка где конкретный алгоритм записывается строго однозначно.

поэтому парадигма Тимтоуди работает везде

и если её придерживаться - можно банально находить более изящное написание алгоритма.

от языка это не зависит

rsync ★★ ()
Ответ на: комментарий от rsync

парадигма Тимтоуди работает везде

и если её придерживаться - можно банально находить более изящное написание алгоритма.

Удваиваю этого господина. Поэтому к трем известным достоинствам программиста нужно добавить четвертое — обостренное чувство прекрасного %)

Nervous ★★★★ ()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от perl5_guy

Раку это другой язык, но он вполне себе Perl’овый. Я книжечку по нему прочитал и остался крайне доволен

Что за книжечка? Мне гугл предложил обжигать вазы.

rupert ★★★★★ ()
Последнее исправление: rupert (всего исправлений: 1)

Странно, что так долго тянули, видимо пока не наигрались в перлашесть раку. Без некоторых «но», прямо-таки напоминает переход с четвертой версии – вполне традиционное развитие. Видимо поотрывают эвристики интерпретатор станет несколько быстрее и глупее. С compat::blah-blah – хотя и очевидно, но не совсем понятно, при уже используемой use v5.blah;, ну ладно особо грустить не будем.

Если начнут тягать массово «фишки» из раку (те же грамматики, или мультиметод, или необязательную типизацию с автовыводом, интроспекцию расширить для «белой» магии, и прочие хотелки) – то веселье еще на двадцаток лет будет.

anonymous ()
Ответ на: комментарий от rsync

и функционально

Когда принесёшь рекурсию и фол в виде изменяемых из замыканий обкладок, тогда и заикнёшься про функциональность.

использовать map/filter, лямбды или генераторы

Хипстерам функции высшего порядка - сложна, не первый год идут разговоры о выпиле лямбд.

циклами ходит while или for

Не for, а foreach, постциклов нет, расширений к циклам тоже.

есть всякие else около циклов/исключений

раз в тыщу лет

есть суффиксные if-else, они же есть в генераторах

и чо?

поэтому парадигма Тимтоуди работает везде

Это не парадигма, судя по тому, как ты её применяешь. В контексте перла оно значит «давайте ещё навалим в язык синтаксического мусора, чтобы делать то, что мы понимаем, сотней способов, а что не понимаем - не делать».

anonymous ()

Почему вдруг barewords перевели как «пустые слова»? Пустые = длины 0. Речь идёт о неэкранированных строковых константах, это далеко не то же самое. Я бы вообще не переводил этот термин из-за громоздкости корректного перевода. Barewords и barewords, можно в скобочках по-русски написать что имеется в виду.

Cheater ()
Ответ на: комментарий от q0tw4

Я по Raku только одну книжечку прочитал вводную, которая представляет из себя компиляцию обзорных статей Андрея Шитова. Так что не могу отвечать на ваши ответы. Может через пол годика. Кстати, сегодня утром забрал наконец «Learning Perl6» и буду её читать.

P.S. Уже начал применять Raku в повседневной жизни. Не с целью его задрачивать, просто некоторые конкурентные задачки оч. хорошо ложатся на этот язык. Или вот надо было быстро декартово произведение замутить, а в Raku цельный оператор для этого есть. Оч. удобно.

perl5_guy ★★★ ()
Ответ на: комментарий от Cheater

Перевод великолепный, на мой вкус. «Пустые слова» т.е. ничем не подкреплённые. ‘Эй, парень, что это ты понаписал? «FD_666», это что? Где разыменовывающий префикс? Это дескриптор или функция? Для меня твоя писанина - пустые слова. Пиши нормально!’

perl5_guy ★★★ ()
Последнее исправление: perl5_guy (всего исправлений: 1)
Ответ на: комментарий от rupert

А вот специальный сайтик же есть: https://perl6book.com/

Да и тут все те же книжки перечислены: https://raku.org/resources/

Там, правда, названия некоторых книжек устаревшие, потому что их авторы уже подсуетились и сделали s/perl6/raku/

aeralahthu ()

А есть ли простой способ организовать библиотеку модулей для отдельного проекта и подтягивать туда зависимости? Типа node_modules в JS.

Nervous ★★★★ ()
Ответ на: комментарий от anonymous

в перле существенно меньше синтаксического мусора нежели скажем в питоне

__одна__.__магия__ там чего стоит, with’ы, ужасно реализованные async/await итп

пространство имён загажено страшно. переменную нельзя назвать ни from ни str, ни вообще как-то обобщённо: шаг влево/шаг вправо натыкаешься на коллизию с stdlib

rsync ★★ ()
Ответ на: комментарий от anonymous

Хипстерам функции высшего порядка - сложна, не первый год идут разговоры о выпиле лямбд.

Что, правда что-ли? Есть предложения исключить из питона лямбды?

rupert ★★★★★ ()

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

ОНО еще живое?
Вопрос - зачем и кому он нужен?
Пожалуйста можно пруфы прог написанные на перле (желательное свежие за последние 5 лет)

anonymous ()
Ответ на: комментарий от rsync

языков где это дао не работает - нет

Поддерживаю. Но не совсем. Есть DSL и прочие не полные по Тьюрингу языки.

взять например Питон, он пропагандирует обратное дао «лучше иметь строго один путь»

Лучше его не брать ^_^

но и на нём можно. писать ООП и функционально

Нельзя. ФП полностью не поддерживается, ООП тоже. Можно только «эмулировать» данные парадигмы и использовать огрызки их для композиции кода.

использовать map/filter, лямбды или генераторы

Лямбды убогие. Полноценно использовать их не получится.

циклами ходит while или for

На практике применяется чаще всего for. while все же и for хоть и имеют одну цель являются по смыслу разными и используются в разных кейсах.

есть всякие else около циклов/исключений

И?

есть суффиксные if-else, они же есть в генераторах

И?

silver-bullet-bfg ★★ ()

Следует заметить, что содержание и подача анонса вызвала неоднозначную реакцию p5p.

Решение было выработано текущим релиз-менеджером Perl (SawyerX) и закрытой группой неустановленных лиц. Принято и широко анонсировано как свершившийся факт без обсуждения в p5p.

https://www.nntp.perl.org/group/perl.perl5.porters/2020/06/msg257565.html

http://blogs.perl.org/users/leon_timmermans/2020/06/not-quite-getting-better-yet.html

https://www.reddit.com/r/perl/comments/hf3jlx/announcing_perl_7/

vividsnow ()

Перл5_Гей, спасибо за новость! Собираюсь заставить себя выучить Перл. Так быстрее смогу устроиться на работу админом.

Владимир

anonymous ()
Ответ на: комментарий от perl5_guy

Perl замечательно поддерживается и легко осваивается.

Да, так замечательно, что MetaBrainz (фонд стоящий за MusicBrainz) все новые проекты делает на Python, т.к. найти разработчиков даже на MusicBrainz (он как раз написан на Perl) весьма непросто…

X-Pilot ★★★★★ ()
Последнее исправление: X-Pilot (всего исправлений: 1)