За рік після релізу 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