Після 11 місяців розробки відбувся реліз нової стабільної гілки мови програмування Perl 5.30. Під час підготовки нового випуску було змінено близько 620 тис. рядків коду, зміни торкнулися 1300 файлів, у розробці взяли участь 58 розробників.
Гілка 5.30 випущена відповідно до затвердженого шість років тому фіксованого графіка розробки, що передбачає випуск нових стабільних гілок щорічно та коригувальних релізів — раз на три місяці. Приблизно через місяць планується випустити перший коригуючий реліз Perl 5.30.1, у якому буде виправлено найбільш значні помилки, виявлені у процесі впровадження Perl 5.30.0. Одночасно з виходом Perl 5.30 припинено підтримку гілки 5.26, для якої в майбутньому можуть бути випущені оновлення лише у разі виявлення критичних проблем з безпекою. Також розпочався процес розробки експериментальної гілки 5.31, на базі якої у травні 2020 року буде сформовано стабільний реліз Perl 5.32.
До регулярних виразів додано експериментальну підтримку операцій «(?‹!pattern)» та «(?‹=pattern)» для обмеженого звернення до раніше оброблених іменованих шаблонів. Визначення шаблону має бути не більше 255 символів від місця звернення;
До 65534 збільшено максимальне значення специфікатора розміру (n) в блоках {m,n} регулярних виразів;
Додана обмежена підтримка масок для виділення певних категорій символів у регулярних виразах, охоплюючи різні набори Unicode. Наприклад, вираз «qr! \p{nv= /(?x) \A [0-5] \z / }!» дозволяє виділити всі Unicode-символи, що визначають цифри від 0 до 5, включаючи тайські чи бенгальські варіанти написання цифр;
У регулярних виразах додано підтримку іменованих символів
усередині шаблонів, обмежених одинарними лапками (qr'\N{name}');
Підтримка специфікації Unicode оновлена до версії 12.1. Знято ознаку експериментальної розробки з викликів sv_utf8_downgrade та sv_utf8_decode, що використовуються при розробці розширень мовою Сі;
Додано можливість складання perl з реалізацією операцій з локаллю, що підтримує роботу в багатопотоковому режимі (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Раніше подібна реалізація використовувалася тільки при складанні багатопотокового варіанта Perl, а тепер може бути включена для будь-яких збірок;
Поєднання прапорів "-Dv" (розширений налагоджувальний висновок) і "-Dr" (налагодження регулярних виразів) тепер призводить до включення всіх можливих режимів налагодження регулярних виразів;
Видалено можливості, раніше оголошені застарілими:
Як символи-розділювачі рядків і шаблонів тепер допускається використання тільки графем (заборонено складові символи Unicode).
Припинено підтримка деяких давно застарілих форм застосування у регулярних виразах символу "{" без його екранування.
заборонено використання функцій sysread(), syswrite(), recv() та send() з обробниками «:utf8».
Заборонено використання визначень "my" в початково неправдивих умовних операторах (наприклад, "my $x if 0").
Видалено підтримку спецзмінних «$*» та «$#».
Припинено підтримку неявного виклику функції dump() (тепер потрібно явно вказувати CORE::dump()).
Видалено функцію File::Glob::glob (потрібно використовувати File::Glob::bsd_glob).
У pack() додано захист від повернення некоректних послідовностей Unicode.
До наступного випуску відкладено припинення підтримки використання у коді XS (блоки на Сі) макросів, які виконують операції з UTF-8.
Оптимізації продуктивності:
Прискорено виконання операцій трансляції UTF-8 у розкладку символів (кодова точка), наприклад, виконання операції ord(«x7fff») тепер вимагає виконання на 12% менше інструкцій. Також збільшено продуктивність операцій перевірки коректності послідовностей символів UTF-8;
Виключено рекурсивні виклики до функцій finalize_op();
Внесено невеликі оптимізації до коду згортання ідентичних символів та визначення класів символів у регулярних виразах;
Оптимізовано перетворення знакових визначників типу на беззнакові (IV у UV);
Прискорено алгоритм перетворення цілих чисел у рядок за рахунок обробки разом двох цифр замість однієї;
Внесено покращення, підготовлені за результатами аналізу компанією LGTM;
Оптимізовано код у файлах regcomp.c, regcomp.h та regexec.c;
У регулярних виразах значно прискорено обробку шаблонів виду «qr/[^a]/» із символами ASCII.
Відновлено підтримку платформи Minix3. Забезпечено можливість збирання з використанням компілятора Microsoft Visual Studio 2019 (Visual C++ 14.2);
Оновлено версії модулів, що входять до базової поставки. З основного складу видалено модулі B::Debug и Локаль::Коди.