LINUX.ORG.RU

Perl 5.28

 ,


1

2

Пока ты попивал смузи и катался на гироскутере, серьёзные пацаны подготовили к выпуску Perl 5.28

Что нового?

  • Поддержка Unicode 10.0 (появился символ биткоина).
  • delete можно использовать на срезах:
    my %sanitised_values = delete %input_values{@allowed_keys};
  • Проверка системы письменности на однородность (script runs):
    'Pеrl' =~ /^(*sr:\w+$)/
    Вернёт «ложь», т.к. буква «е» кириллическая. (подробнее о script runs)

Экспериментальные возможности:

Поддержка буквенных синонимов для некоторых утверждений (assertion) регулярных выражений (Осторожно! Может повысить читабельность!):

(?=...)        (*pla:...) or (*positive_lookahead:...)
(?!...)        (*nla:...) or (*negative_lookahead:...)
(?<=...)       (*plb:...) or (*positive_lookbehind:...)
(?<!...)       (*nlb:...) or (*negative_lookbehind:...)
(?>...)        (*atomic:...)

Улучшения производительности:

  • Серьёзно снижены накладные расходы связанные с использованием параметров юникод (\p{...}) в регулярных выражениях.
  • Существенно ускорена множественная конкатенация. Например, следующий код на x86_64 работает в 4 раза быстрее:

    my $s;
    my $a = "ab\x{100}cde";
    my $b = "fghij";
    my $c = "\x{101}klmn";
     
    for my $i (1..10_000_000) {
        $s = "\x{100}wxyz";
        $s .= "foo=$a bar=$b baz=$c";
    }
    

  • sprintf() с фиксированным набором аргументов и строкой формата содержащей только %s и %% работает быстрее.
  • ref() работает намного быстрей в булевом контексте, т.к. больше не создаётся временная строка вроде Foo=ARRAY(0x134af48).
  • Циклы for() и аналогичные конструкции в большинстве ситуаций будут работать быстрей
  • Появилась возможность хранить процедуры в пакетах без использования таблиц имён, что позволяет сэкономить крупные объёмы памяти.

Другие изменения:

  • Ядро почистили от «use vars». Многие продолжают использовать «use vars», что является плохой практикой с момента введения «our» в версии 5.6.0.
  • Новое предупреждение для случаев:

    my $name='Pistachio';
    print "In $name's house";
    

    Рекомендую посмотреть на видео. Возможно улыбнётесь.

Видео: Sawyer X рассказывает о нововведениях и фитчах предыдущих версий, которые ты пропустил.

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

Посмотрите вот это интервью, в части где Ларри рассказывает про Perl6. Очень интересно. Сама идея языка находится в становлении, поэтому нельзя сказать что он опоздал. Уникальный проект с необычным подходом к разработке.

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

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

https://stackoverflow.blog/2017/10/31/disliked-programming-languages/

The most disliked languages, by a fairly large margin, are Perl, Delphi, and VBA. They’re followed by PHP, Objective-C, Coffeescript, and Ruby. On our team we’re certainly happy to see that R is the least disliked programming language, relative to the number of people who liked it.

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

Это тот самый опрос клоунов, обожающих раст? Удивительно как у них получается ненавидеьь мертвый перл и любить нерожденный раст (который как раз наследник перла по вырвиглазию).

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

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

Было бы неплохо увидеть конкретные проблемы Perl'а ИТТ, с примерами чтоб. Может быть я действительно поставил не на ту лошадь и нужно срочно мигрировать на $lang_name

perl5_guy ()