Через год после релиза Perl 5.28.0 состоялся релиз Perl 5.30.0.
Важные изменения:
- Добавлена поддержка Unicode версий 11, 12 и чернового варианта 12.1;
- Верхний предел «n», задаваемый в квантификаторе регулярного выражения в форме «{m, n}», был удвоен до 65534;
- Метасимволы в спецификациях значений свойств Unicode теперь частично поддерживаются;
- Добавлена поддержка qr’N{name}’;
- Теперь можно скомпилировать Perl, чтобы всегда использовать потокобезопасные операции локали;
- Ограниченная длина переменной в сопоставлении с образцом регулярного выражения теперь поддерживается экспериментально;
- Теперь используется более быстрый метод для конвертирования в UTF-8;
- Тюркские локали UTF-8 теперь поддерживаются без проблем;
- Исключено использование макроса opASSIGN из ядра;
Функционал, который был удалён, и несовместимые изменения:
- Удалены модули: Math::BigInt::CalcEmu, arybase, Locale::Code, B::Debug;
- Разделители шаблонов теперь должны быть графемами;
- Разделители теперь должны быть графемами;
- Некоторые ранее устаревшие способы использования неэкранированной левой скобки «{» в шаблонах регулярных выражений теперь запрещены;
- Назначение ненулевого значения переменной $[ (индекс первого элемента массива) теперь фатально;
- Ранее устаревшие sysread()/syswrite() при обработке :utf8 теперь фатальны.
- my() в ложных условиях теперь запрещена;
- Считается устаревшим $* (переменная использовалась для включения поиска многострочных соответствий и была удалена в Perl v5.10.0) и $# (переменная использовалась для форматирования выводимых чисел и была удалена в Perl v5.10.);
- Считается устаревшим неквалифицированное использование dump();
- Удалена File::Glob::glob();
- pack() больше не может возвращать некорректный UTF-8;
- Любой набор цифр в общем скрипте допустим в скрипте, выполняемом другим скриптом;
- JSON::PP по умолчанию включает allow_nonref;
Устаревший функционал:
- Теперь нельзя в коде XS использовать различные макросы, которые обрабатывают UTF-8;
Источник: linux.org.ru