Выпуск 1. Март 2013

Всё, что вы хотели знать об AnyEvent, но боялись спросить | Содержание | Обзор CPAN за февраль 2013 г.

Что нового в Perl 5.17.9

20 февраля 2013 г. была выпущена новая версия Perl 5.17.9 для разработчиков. За месяц прошедший с выпуска 5.17.8 были сделаны изменения в примерно 42000 строках кода в 510 файлах 35 авторами.

Поддержка интерполяции в операциях со множествами в регулярных выражениях

В предыдущей версии Perl 5.17.8 появилась новая экспериментальная возможность использовать операции со множествами, такими как пересечение и вычитание, внутри регулярных выражений. Форма записи: (?[]). Например, регулярное выражение

/(?[ \p{Thai} & \p{Digit} ])/

совпадает со всеми цифровыми символами в Тайском письме. Поддерживаются операции пересечения (&), объединения (+ или |), разности (-), симметрической разности (^) и унарная операция дополнения (!).

В 5.17.9 к этой экспериментальной возможности добавилась поддержка интерполяции, например:

my $thai_or_lao = qr/\p{Thai} + \p{Lao}/;
qr/(?[ \p{Digit} & $thai_or_lao ])/;

совпадает с цифровым символом тайского или лаосского письма. Таким образом добавляется поддержка расширения множеств через скомпилированные ранее множества. Данная экспериментальная возможность была введена в соответствии с рекомендациями стандарта Unicode.

Удаление переменной окружения

В версии 5.17.3 была введена новая возможность, когда присвоение переменной окружения undef стало эквивалентно удалению данной переменной окружения:

$ENV{foo} = undef;
delete $ENV{foo}

В 5.17.9 это изменение было отменено.

Лексическая $_

В версии 5.17.7 использование лексической $_ было помечено как устаревшее. В новом выпуске передумали и решили сделать её экспериментальной.

Прагма encoding

Прагма encoding, начиная с версии Perl 5.18 и выше, станет устаревшей и возможно будет удалена в более поздних версиях.

Дистрибутивы модулей удалённые из базового состава Perl

B::Lint, CPANPLUS, Log::Message, Log::Message::Simple, Module::Pluggable, Object::Accessor, Term::UI удалены из базового состава Perl. Теперь их необходимо устанавливать со CPAN.

Дополнительные символы, которые требуется экранировать в шаблонах /x

В шаблонах регулярных выражений, компилируемых с ключом /x, Perl игнорирует 6 символов пробельного типа, такие как пробел и табуляция. Однако в стандарте Юникод рекомендуется рассматривать как пробельные 11 символов. В подготовке соответствия с этим стандартом в будущих версиях Perl, начиная с версии 5.17.9 использование этих недостающих символов в неэкранированном виде будет приводить к выводу предупреждений. Вот эти 5 символов:

U+0085 NEXT LINE,
U+200E LEFT-TO-RIGHT MARK,
U+200F RIGHT-TO-LEFT MARK,
U+2028 LINE SEPARATOR,
U+2029 PARAGRAPH SEPARATOR.

Новые модули

Добавлен модуль Config::Perl::V версии 0.16 для получения структурированной информации вывода perl -V.

Изменения в утилитах

В утилите corelist появились опции --feature для получения первой версии Perl, в которой появились запрошенные фичи, а также опция --upstream, для получения информации о том, где запрошенный модуль поддерживается: в составе Perl или на CPAN с указанием URL на баг-трекер.

Сборка

Появилась новая опция для скрипта Configure с длинным названием useversionedarchname, при использовании которой api_versionstring добавляется в archname. Таким образом имя архитектуры начнёт включать в название версию Perl, например, x86_64-linux-5.13.6-thread-multi. По-умолчанию опция отключена.

Исправления

Базовые тесты Perl теперь проходят на системах, на которых отсутствует поддержка локали (например, Android). Слой :crlf теперь нормально поддерживает операции чтения наоборот (unread), а ungetc() корректно обрабатывает UTF-8 данные. Лишний символ / в хвосте путей @INC больше не появляется.

Теперь, как обычно, запускаем perlbrew install 5.17.9 и делимся впечатлениями.

Владимир Леттиев


Всё, что вы хотели знать об AnyEvent, но боялись спросить | Содержание | Обзор CPAN за февраль 2013 г.
Нас уже 1393. Больше подписчиков — лучше выпуски!

Комментарии к статье