LINUX.ORG.RU

Perl 5.14

 ,


0

3

14 мая после долгого тестирования и трёх релиз-кандидатов состоялась публикация Perl версии 5.14. Это первый релиз Perl 5 по новому графику, согласно которому выпуск стабильной версии будет происходить раз в 1 год.

В этой версии присутствует множество изменений и улучшений. Вот лишь некоторые из них:

  • Поддержка unicode 6.0 и огромное число улучшений связанных с работой unicode.
    Ниже представлен пример тестирования строки регулярным выражением, который не находит соответствия в предыдущих версиях Perl, но отрабатывает корректно в Perl 5.14
    use utf8;
    'Тестовая строка' =~ /^[а-я ]+$/i
        or die 'regexp failed';
    

  • Улучшения в поддержке IPv6.
    В модуле Socket появились константы и функции с соответствующим функционалом.

  • Значительно упростилась конфигурация клиента CPAN
    Всё ещё сложно? На CPAN доступен альтернативный клиент cpanminus, который и вовсе не требует предварительной конфигурации.

  • Новый модификатор /r производящий замену s/// не модифицируя исходную переменную
    my $old = "cat";
    my $new = $old =~ s/cat/dog/r;
    # $old по прежнему "cat", а $new теперь "dog"
    

  • Новые модификаторы регулярных выражений /a и /u позволяющие указать, что выражение нужно компилировать как ASCII или Unicode соответственно.
    Например класс \w с модификатором /a гораздо менее обширен, чем он же с модификатором /u

  • Новый синтаксис объявления пакетов «package Foo { }»
    В предыдущих версиях область видимости пакета продолжалась до конца файла, блока, eval или до объявления нового пакета. Новый синтаксис позволяет определить область видимости пакета в более логичной форме.
    package Foo {
      ...
    }
    # эквивалентно
    {
      package Foo;
      ...
    }
    

  • Меньшее потребление памяти и CPU, чем в предыдущих версиях
  • Множество исправлений ошибок, в том числе очень серьёзных

Обо всех остальных изменениях можно узнать ознакомившись с perl5140delta.

Важно отметить, что с выходом этой версии официально объявлено об окончании поддержки Perl 5.10

Разработка Perl 5.14 заняла 1 год с момента выхода версии Perl 5.12.0 12 апреля прошлого года. 550 тысяч строк кода было добавлено и изменено в трёх тысячах файлов 150-ю авторами и энтузиастами. Авторы благодарят сообщество CPAN, которое помогает Perl процветать, а также всё комьюнити, благодаря которому стал возможен релиз этой версии. Отдельное спасибо авторы выражают Джессу Винсенту (Jesse Vincent), который является координатором и релиз менеджером Perl 5.14.

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

Новый модификатор /r производящий замену s/// не модифицируя исходную переменную

Чем не угодил классический вариант?

(my $new = $old) =~ s/cat/dog/;

Как там дела с 6кой обстоят?

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

Пилится 6-ка, но пока очень тормозная и ресурсопожирающая. Хотя авторы пишут, что в сравнении с perl5 у perl6 задел под оптимизацию гораздо шире и в будущем всё может измениться.

Olegymous ★★★
() автор топика

> Новый модификатор /r производящий замену s///

и tr/// (y///) тоже.

> Новые модификаторы регулярных выражений /a и /u

/l, /d и /aa забыл…

+ всякие push/shift/keys/… теперь могут принимать списки/хэши по ссылке (push($ref, 1, 2, 3) вместо push(@$ref, 1, 2, 3)).

+ ускорили конкатенацию строк. на офтопике — примерно в 100 раз получилось :)

+ удалили таки модуль Switch.

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

> Чем не угодил классический вариант?

say map { s/a/b/r } @z;

смотрится лучше, чем

say map { (my $t = $_) =~ s/a/b/; $t } @z;
arsi ★★★★★
()
Ответ на: комментарий от zfsed

Вы уверены, что нам нужны такие подробности? :)

adepto
()

Ура!

> Поддержка unicode 6.0 и огромное число улучшений связанных с работой unicode.
От ругани вида 'Wide character in print' всё ещё нужно специально избавляться, или это я что-то делаю не так?

Новый модификатор /r производящий замену s/// не модифицируя исходную переменную

Отлично! Раньше для этих целей приходилось копировать переменную.




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

>Слишком много интимных подробностей для новости, имхо.

Интимные подробности очень вкусные. За ради нормального юникода уже обновиться можно

DNA_Seq ★★☆☆☆
()

Да, перл становится все эзотеричнее:

my $new = $old =~ s/cat/dog/r;

DNA_Seq ★★☆☆☆
()

Важно отметить, что с выходом этой версии официально объявлено об окончании поддержки Perl 5.10

интересно, каким местом думал Космонавт, включая в 11.04 такое говно мамонта как perl 5.10, когда 5.12 вышел аж год назад ?

Reset ★★★★★
()

Иду за поп-корном, должно быть интересно)

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

Спасибо, binmode STDOUT,":utf8" в очередной раз спас.

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

> интересно, каким местом думал Космонавт, включая в 11.04 такое говно мамонта как perl 5.10, когда 5.12 вышел аж год назад ?

Просто версия 5.10 была на тот момент в Debian Testing, вот и все.

anonymous
()

Надеюсь, это будет в Мандриве 2011.

redgremlin ★★★★★
()
Ответ на: Ура! от AITap

> От ругани вида 'Wide character in print' всё ещё нужно специально избавляться …?

конечно. и, скорее всего, нужно будет во всей пятой ветке, ибо обратная совместимость. можно в профиле задать переменную окружения PERL_UNICODE=SDA… но лучше по старинке, use encoding 'utf8', портабельнее будет.

arsi ★★★★★
()

> огромное число улучшений связанных с работой unicode

Как с юникодом в перле по-сравнению с рубями, никто не знает?

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

Да это расстраивает, на федоре уже как обновил перл до 5.14, а вот на убунту не могу, придется собирать ручками

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

Согласен, порой даже ппа не спасают =(

sol13 ★★★★★
()

НЕ ВЕРЮ, БЛИН. наконец-то пофиксили #44225. задолбало уже костыли везде тыкать. вот бы еще в дебиановский 5.10 все фиксы влили

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

perlbrew используй. Через него можно сколько угодно разных версий Perl держать спокойно. И, кстати, через cpanm очень быстро и удобно модули ставить, в отличии от CPAN или CPANPlUS

anonymous
()

Неужели utf8 теперь стал работоспособным?

anonymous
()

школота такая школота, а перл жив =)

shybovycha
()

Отлично еще чуть чуть и получиться PHP со своей обвязкой с названием CPAN. Когда к Sub приделают альяс function и появятся классы?

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

Это потому что в Debian Testing только сегодня приехал апдейт 5.10 -> 5.12

Jetty ★★★★★
()

> 550 тысяч строк кода было добавлено и изменено в трёх тысячах файлов
они туда наверное еще свежих анекдотов добавили, но новость отличная! Эх perl, хорош чертяка!

fero ★★★★
()

Ураааа!

// Я видел этот тред на одной странице!

Hoodoo ★★★★★
()

Это же просто праздник какой-то! Только неделю назад столкнулся с пофикшенными в выпуске проблемами с юникодом. Уже качаю, мои поздравления перлистам.

hadagnahash
()

> 550 тысяч строк кода было добавлено и изменено

_<

sv75 ★★★★★
()

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

Vudod ★★★★★
()

кстати, они таки сделали «:=» синтаксической ошибкой. «This allows future use of := as a new token.» что они задумали, интересно, алиасы как в шестёрке? они так весь шестой перл по частям перетащат в пятый :)

arsi ★★★★★
()

> 550 тысяч строк кода было добавлено и изменено в трёх тысячах файлов 150-ю авторами и энтузиастами...
и одним скриптом на питоне :3

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

Скорее всего. Потому что Мэсак сегодня сказал, что 5 и 6 будут развиваться отдельно и 6 не заменит 5 (по крайней мере не в ближайшем будующем).

iSage ★★★★
()

Перестаньте насиловать труп!

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

А мне очень perl5i понравился

Тормозит только немного и несколько несуразицей есть. А так, вот таким бы я хотел видеть Перл 6, а не тем,что из него 10 лет лепят. А 5.14 хорош в первую очередь действительно большим количеством выловленных багов, и обновленной документацией.

Кстати, и 5.12 не ставили в Дебиан по причине большого количества багов, пока до 5.12.3 не дорос.

anonymous
()

Кстати интересная особенность. 5.12 вышел 12 апреля, 5.14 14 мая. Предсказываю, что релиз 5.16 увидим 16 июня :)

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

интересно, каким местом думал Космонавт, включая в 11.04 такое говно мамонта как perl 5.10, когда 5.12 вышел аж год назад ?

Может из-за каких-нибудь регрессий. По крайней мере я одну неприятную багу с отладкой ловил

https://bugzilla.altlinux.org/show_bug.cgi?id=24665

Исправления этой баги в 5.12 не планируется.

Vovka-Korovka ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.