Выпуск 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 г. →