Po 11 měsících vývoje odehrál se vydání nové stabilní větve programovacího jazyka Perl - 5.30. Při přípravě nového vydání bylo změněno asi 620 tisíc řádků kódu, změny se dotkly 1300 souborů a na vývoji se podílelo 58 vývojářů.
Větev 5.30 byla vydána v souladu s pevným plánem vývoje schváleným před šesti lety, což znamená vydávání nových stabilních větví jednou ročně a opravná vydání každé tři měsíce. Zhruba za měsíc se plánuje vydání prvního opravného vydání Perlu 5.30.1, které opraví nejvýznamnější chyby zjištěné během implementace Perlu 5.30.0. Spolu s vydáním Perlu 5.30 byla ukončena podpora pro větev 5.26, pro kterou mohou být v budoucnu vydány aktualizace pouze v případě, že budou identifikovány kritické bezpečnostní problémy. Rovněž byl zahájen proces vývoje experimentální větve 5.31, na jehož základě se v květnu 2020 vytvoří stabilní vydání Perlu 5.32.
Do regulárních výrazů byla přidána experimentální podpora pro operace "".(?<!vzor)"A"(?‹=vzor)» pro omezený přístup k dříve zpracovaným pojmenovaným šablonám. Definice vzoru musí být v rozmezí 255 znaků od referenčního bodu;
Maximální hodnota specifikátoru velikosti („n“) v blocích regulárních výrazů „{m,n}“ byla zvýšena na 65534;
Přidáno omezené podpora masky pro zvýraznění určitých kategorií znaků v regulárních výrazech, které pokrývají různé sady Unicode. Například výraz „qr! \p{nv= /(?x) \A [0-5] \z / }!“ umožňuje vybrat všechny znaky Unicode, které definují čísla od 0 do 5, včetně thajského nebo bengálského hláskování čísel;
Přidána podpora pojmenovaných znaků v regulárních výrazech
uvnitř vzorů oddělených jednoduchými uvozovkami (qr'\N{jméno}');
Podpora specifikace Unicode byla aktualizována na verzi 12.1. Z volání byl odstraněn příznak experimentálního vývoje sv_utf8_downgrade a sv_utf8_decode, používané při vývoji rozšíření v jazyce C;
Přidána možnost sestavit perl s implementací operací s národním prostředím, které podporuje vícevláknové operace (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Dříve se taková implementace používala pouze při sestavování vícevláknové verze Perlu, ale nyní ji lze povolit pro jakékoli sestavení;
Kombinace příznaků "-Dv" (vylepšený výstup ladění) a "-Dr" (ladění regulárních výrazů) nyní způsobí, že budou povoleny všechny možné režimy ladění regulárních výrazů;
Dříve zastaralé funkce byly odstraněny:
Nyní k dispozici jako oddělovač řádků a zástupné znaky povoleno použij jen grafémy (složené znaky Unicode nejsou povoleny).
Přerušeno podpora některých dávno zastaralých forem použití znaku „{“ v regulárních výrazech bez jeho escapování.
Zakázáno pomocí funkcí sysread(), syswrite(), recv() a send() s obslužnými rutinami ":utf8".
Je zakázáno používat definice „můj“ ve své podstatě nepravdivých podmíněných příkazech (například „můj $ x, pokud je 0“).
Podpora speciálních proměnných „$*“ a „$#“ byla odstraněna.
Podpora pro implicitní volání funkce dump() byla ukončena (nyní musíte explicitně zadat CORE::dump()).
Funkce File::Glob::glob byla odstraněna (měli byste použít File::Glob::bsd_glob).
Do pack() byla přidána ochrana proti vracení nesprávných sekvencí Unicode.
Konec podpory používání maker, která provádějí operace s UTF-8 v kódu XS (bloky C), byl odložen do příštího vydání.
Optimalizace výkonu:
Překladové operace z UTF-8 do rozložení znaků byly zrychleny (kódový bod), například provedení operace ord(“\x7fff”) nyní vyžaduje o 12 % méně instrukcí. Zvýšil se také výkon operací kontrolujících správnost sekvencí znaků UTF-8;
Rekurzivní volání ve funkci finalize_op() byla odstraněna;
Provedli drobné optimalizace kódu pro sbalení identických znaků a definování tříd znaků v regulárních výrazech;
Optimalizováno převod podepsaných definic typů na nepodepsané (IV na UV);
Algoritmus pro převod celých čísel na řetězec byl urychlen zpracováním dvou číslic najednou místo jedné;
Byla provedena vylepšení připravený na základě analýzy LGTM;
Optimalizovaný kód v souborech regcomp.c, regcomp.h a regexec.c;
V regulárních výrazech bylo výrazně zrychleno zpracování vzorů jako „qr/[^a]/“ se znaky ASCII.
Podpora platformy Minix3 byla obnovena. Je možné sestavit pomocí kompilátoru Microsoft Visual Studio 2019 (Visual C++ 14.2);
Aktualizované verze modulů obsažených v základním balíčku. Moduly byly odstraněny z hlavní kompozice B::Ladit и Locale::Codes.