LINUX.ORG.RU

Perl 5.22.0

 


0

4

Вышла новая значительная версия популярного языка программирования Perl. Основные изменения:

  • Модули CGI и Module::Build убраны из стандартной поставки.
  • Новые битовые операторы для работы со строками: &. |. ^. ~. &= |= ^= &.= |.= ^.=
  • Новый оператор <<>>, работающий как <>, но не обрабатывающий спецсимволы в именах файлов.
  • Новый модификатор регулярных выражений: /n, не позволяющий заполнение скаляров $1, $2 и т.д. для групп метасимволов:
    "hello" =~ /(hi|hello)/;   # $1 is "hello"
    "hello" =~ /(hi|hello)/n;  # $1 is undef
    
  • Новый оператор регулярных выражений: \b
  • Добавлена директива use re 'strict', включающая «строгий» режим для регулярных выражений.
  • Добавлена поддержка Unicode 7.0
  • Вызов prototype() без аргумента теперь использует $_
  • fileno теперь работает с дескрипторами директорий.
  • Новый атрибут :const для анонимных функций.
  • Теперь Perl по умолчанию собирается с -fstack-protector-strong и -D_FORTIFY_SOURCE=2
  • Конвертирование бесконечных чисел и NaN в символы (с помощью pack, «chr» и printf «%c») теперь невозможно.
  • Модуль Safe обновлён до версии 2.38 с исправлением критической уязвимости.
  • Пустой срез списка отныне будет возвращён только в том случае, если список был пустым.
  • Числа с плавающей точкой отныне могут содержать бесконечность (как отрицательную, так и положительную) и NaN.
  • Добавлена поддержка шестнадцатеричныхлитералов с плавающей точкой (например, 0x1.23p-4).
  • Действие прагмы use encoding теперь ограничено лексической областью.
  • Импортирование функций через use UNIVERSAL '...' теперь приводит к ошибке.
  • Многочисленные улучшения производительности, обновления входящих в стандартную поставку модулей и многое другое.

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

Поздравляю всех причастных!

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

В генте не будет долго. Я гарантирую.

Это если сидеть и ждать. Можно же всегда использовать perlbrew и оперировать любыми версиями или вариантами собственной сборкой perl.

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

Появления новой версии перла в генте зависит от хотения моего крайнего левого пальца правой ноги. А мне пилить лень. Лето же.

Zlogene ()

Куцая новость, если честно, на опеннете лучше. Пропущено много важного, например:

Новая экспериментальная возможность задания алиасов для переменных и подпрограмм через указатели указателей: \$c = \$d и \&x = \&y.

Введен обсуждаемый ранее новый атрибут ":const", который может быть применен к анонимным функциям, что приведёт к немедленному выполнению подпрограммы в месте её определения с последующей подстановкой сохранённого результата в моменты обращений к ней в коде. Атрибут имеет экспериментальный статус. Детали perlsub, секция «Constant Functions».

Для платформы Win32 завершена реализация формы организации неименованного канала через вызовы open my $fh, "-|", «program», @arguments'.

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

Значительное ускорение обращения к массивам и хэшам (особенно к вложенным формам) в случаях когда в качестве ключа используется простая переменная или константа.

Повышение производительности до 20% на вызовах «length» в некоторых случаях при обращении к связанным (tied) переменным.

Многие внутренние функции переработаны с целью улучшения производительности и уменьшения потребления памяти.

Реализована более быстрая схема поиска в хэше если в качестве ключа используется константа.

anonymous ()

Новый оператор регулярных выражений: \b

Не новый. Он и раньше определял границы слов, а теперь его научили определять ещё границы кластеров графем, более ловко ловить границы слов (например, с апострофами внутри) и определять границы предложений. Думаю, можно этот пункт переделать так: «Расширены возможности оператора регулярных выражений \b (https://metacpan.org/pod/perlrebackslash#b-b-B-B)».

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

Мажорная вроде же первая цифорка? А это так, минорщина.

Не с perl. В perl первая цифра - это ветка языка. Мажорный релиз - это изменение второй цифры и минорный - третьей.

Смотрим внимательно:

localhost:~$ perl --version

This is perl 5, version 20, subversion 2 (v5.20.2) built for x86_64-linux

...

Здесь: perl 5 - это версия языка, version 20 - версия интерпретатора perl пятой версии языка subversion 2 - вот это и является «минорный указателем»

Надеюсь я доступно объяснил.

anonymous ()

Модули CGI и Module::Build убраны из стандартной поставки

CGI

Ну вот теперь-то perl можно с чистой совестью закапывать

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

А это так, минорщина.

Напиши это в соседней теме про Qt 5.4.2

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

Как же его закопать, если он врос в систему

root@makoven:makoven pacmr perl
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: automake: requires perl
:: chromium: requires perl
:: git: requires perl>=5.14.0
:: groff: requires perl
:: hspell: requires perl
:: hyphen: requires perl
:: imagemagick: requires perl
:: libwpg: requires perl
:: openssl: requires perl
:: perl-error: requires perl
:: perl-ipc-system-simple: requires perl
:: rlwrap: requires perl
:: rsync: requires perl
:: strace: requires perl
:: texinfo: requires perl
:: tigervnc: requires perl
:: vim-runtime: requires perl
makoven ★★★★★ ()
Ответ на: комментарий от Zlogene

Бросай курить - вставай на лыжи! У меня вон буст пылится, всё никак не допилю, а ты похалявить решил, редиска? ;-)

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

И словить тучу несовместимостей с perl-core/ ? Да никто, на самом деле. Я просто немного знаю, что из себя представляет полноценная выкатка новой версии Perl-а в Gentoo. Сейчас уже получше, но всё равно - Ад и Израиль

Pinkbyte ★★★★★ ()

вопрос. существуют ли ноулайферы-энтузиасты, которые знают хотя бы 50% всех возможностей и ньюансов перла?

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

может посвятить остаток жизни перлу? как считаете? это же классика, это знать надо.

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

убраны из стандартной поставки
стандартной

Мсье не научился читать предложения до конца?

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

может посвятить остаток жизни перлу? как считаете? это же классика, это знать надо.

Нет, посвяти остаток жизни синьке, как все нормальные сторожа. Каждый должен заниматься своим делом.

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

Довески в перловом репозитории, либо в репозитории той операционки, в которая ставится. Либо нестандартная поставка. Разве нет?

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

Ты часто парсишь много неоднородных текстовых данных? Нет? Тогда не надо.

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

которые знают хотя бы 50% всех возможностей и ньюансов перла

Конечно существуют. Это открытый проект, его девелоперы достаточно хорошо знают возможности и тонкости.

Перловики обычно формрируют свой стиль, который предполагает некое подмножество возможностей языка, все возможности им не нужны. Толстенная книга с верблюдом более чем на половину заполнена описанием «батарейки» и утилит, так что сам язык не настолько большой.

у меня

Твой уровень хорошо известен.

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

CGI плохо написан, он тяжелый и бажный. Так что сомнительная потеря (для меня так скорее приобретение).

outtaspace ★★★ ()

Perl давно надо закопать и забыть как страшный сон.

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

Новая экспериментальная возможность задания алиасов для переменных и подпрограмм через указатели указателей: \$c = \$d и \&x = \&y.

Означает ли это, что в языке появились возможности использовать оператор \ в деструктуризирующих присваиваниях и в сигнатурах функций? Если так, то это самая главная новость, которую ждали больше 10 лет. :)

т.е. можно ли сейчас написать:

my ( \&sub_name, @array ) = @_;

или use feature 'signatures'; sub my_map :prototype ( & @ ) ( \&block, @array ) { ...; &block( ... ); ...; }

?

P.S. Я так понимаю, что написать следующим образом ещё нельзя?:

my ( \( $a, $b ), $c ) = ( [ 1, 2, 3, 4, ], 5, 6, 7, 8 );

allter149 ()

Назовите хоть один серьезный проект разработанный на Perl...

Для всего есть Dotnet. А с выходом пятерочки мир замкнется на ASP

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

может посвятить остаток жизни перлу? как считаете? это же классика, это знать надо.

можно
как раз оставшаяся часть жизни и уйдет на понимание всех ньюансов, как тут говорят

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

Апстрим перла с каждым релизом включает/исключает часть модулей из perl-core/ в базовую поставку. Если сиё действие проигнорировать - то в будущем это как минимум может быть чревато проблемами с безопасностью.

Pinkbyte ★★★★★ ()

Вышла новая мажорная версия популярного языка программирования Perl

Угу, «популярный» это как раз про Perl.

Ну и да, поздравляю :)

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

Назовите хоть один серьезный проект разработанный на Perl...

Abills - недостаточно серьезен? Это первое, что мне как сисадмину провайдера вспомнилось :-)

Pinkbyte ★★★★★ ()

Теперь Perl по умолчанию собирается с -fstack-protector-strong и -D_FORTIFY_SOURCE=2

Собирается где? В каком из дистрибутивов? Или эта опция включается вне зависимости от того какие опции выбраны?

soko1 ★★★★★ ()

Новые битовые операторы для работы со строками: &. |. ^. ~. &= |= ^= &.= |.= ^.=

Теперь можно рисовать ещё более красивые однострочники.

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

вопрос. существуют ли ноулайферы-энтузиасты, которые знают хотя бы 50% всех возможностей и ньюансов перла?

Смотря о чем вопрос. Если вопрос про ньюансы реализации интерпретатора perl, то не думаю что здесь найдутся знающие. Если вопрос непосредственно про ЯП perl, то наверное найдутся. Возможно даже я что-то знаю местами..

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

Изучить язык можно достаточно быстро если подойти напористо. Другое дело что обрести навыки и выработать техники программирования не получится быстро, нужны задачи. Практика показывает что многие в силу психологических и/или интеллектуальных способностей не способно преодолеть порог вхождения в perl, а он достаточно высокий. Не зря же мы видим поток баттхерта как только появляется новость связанная с perl.

может посвятить остаток жизни перлу? как считаете? это же классика, это знать надо.

Но если вы не знаете зачем оно вам, может оно вам и не нужно вовсе? Perl - очень мощный инструмент ориентированный удержать который в руках дано далеко не каждому. С perl очень легко выстрелить себе в ногу, хотя, если честно, с Си гораздо легче :-)

Но если вы не испугались, то я могу вам сформулировать одну задачу уровня серьезной дипломной работы. Если решите ее, то вы сразу станете, если и не мастером, то точно «продвинутым» perl-программистом.

anonymous ()

Зачем, зачем они его выпускают?

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

вопрос. существуют ли ноулайферы-энтузиасты, которые знают хотя бы 50% всех возможностей и ньюансов перла?

Larry Wall :)

может посвятить остаток жизни перлу? как считаете? это же классика, это знать надо.

Ну если не жалко остатка жизни...

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

my ( \&sub_name, @array ) = @_;

пока нет, но можно так, хоть и не ясно зачем :)

use experimental qw'refaliasing signatures lexical_subs';
sub your_map ($code, @arr) :prototype(&;@) {
    my sub block; \&block = $code;
    block(@arr);
}

your_map { ... } ...;

my ( \( $a, $b ), $c ) = ( [ 1, 2, 3, 4, ], 5, 6, 7, 8 );

может это имелось ввиду?

use experimental 'refaliasing';
( \ my @i, my @j ) = ( [1..3], 5..6 );
# или
my (@t, @r);
( \@t, @r ) = ( [1..3], 5..6 );

vividsnow ()

Уже есть читаемые скриптовые языки, зачем пёрл?

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

На слэшдоте перловый говнокод дремучей версии говнокодом погоняющий. Форк его для soylentnews уже больше года разгребает. Уже заработал юникод, лол.

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