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-ի կայուն թողարկում։
Սովորական արտահայտություններին ավելացվել է «» գործողությունների փորձարարական աջակցություն:(?‹! նախշ)"Եւ"(?‹=օրինակ)» նախկինում մշակված անվանված ձևանմուշների սահմանափակ մուտքի համար: Կաղապարի սահմանումը պետք է լինի հղման կետից մինչև 255 նիշ.
«{m,n}» կանոնավոր արտահայտությունների բլոկներում չափի ցուցիչի («n») առավելագույն արժեքը ավելացվել է մինչև 65534;
Ավելացված է սահմանափակ աջակցություն դիմակներ՝ կանոնավոր արտահայտություններով ընդգծելու նիշերի որոշակի կատեգորիաներ՝ ընդգրկելով Յունիկոդի տարբեր հավաքածուներ: Օրինակ՝ «qr! \p{nv= /(?x) \A [0-5] \z / }!" թույլ է տալիս ընտրել Յունիկոդի բոլոր նիշերը, որոնք սահմանում են թվերը 0-ից 5-ը, ներառյալ թվերի թայերեն կամ բենգալերեն ուղղագրությունները.
Ավելացվել է կանոնավոր արտահայտություններով անվանված նիշերի աջակցություն
ներսից օրինաչափություններ, որոնք սահմանազատված են առանձին չակերտներով (qr'\N{name}');
Unicode-ի բնութագրերի աջակցությունը թարմացվել է տարբերակին 12.1. Փորձարարական զարգացման դրոշը հեռացվել է զանգերից sv_utf8_downgrade և sv_utf8_decode, օգտագործվում է C լեզվով ընդարձակումների մշակման մեջ;
Ավելացվեց perl-ի ստեղծման հնարավորություն՝ լոկալով գործողություններ իրականացնելու միջոցով, որն աջակցում է բազմաշերտ գործողություններին (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’): Նախկինում նման իրականացումն օգտագործվում էր միայն Perl-ի բազմաշերտ տարբերակ կառուցելիս, բայց այժմ այն կարող է միացված լինել ցանկացած կառուցման համար.
«-Dv» (ընդլայնված վրիպազերծման ելք) և «-Dr» (regex վրիպազերծում) դրոշների համադրումն այժմ հանգեցնում է այն բանի, որ կանոնավոր արտահայտությունների կարգաբերման բոլոր հնարավոր ռեժիմները միացված են.
Նախկինում հնացած գործառույթները հեռացվել են.
Այժմ հասանելի է որպես տողերի բաժանարար և նիշերի նիշ թույլատրվում է օգտագործել միայն գրաֆեմաներ (կոմպոզիտային Unicode նիշերը չեն թույլատրվում):
Դադարեցվել է «{» նիշը կանոնավոր արտահայտություններում օգտագործելու վաղուց հնացած ձևերի աջակցություն՝ առանց դրանից խուսափելու:
Արգելվում է օգտագործելով sysread(), syswrite(), recv() և send() ֆունկցիաները «:utf8» մշակիչներով:
Արգելվում է օգտագործել «իմ»-ի սահմանումները բնածին կեղծ պայմանական հայտարարություններում (օրինակ՝ «my $x եթե 0»):
«$*» և «$#» հատուկ փոփոխականների աջակցությունը հանվել է:
Dump() ֆունկցիայի անուղղակի կանչման աջակցությունը դադարեցվել է (այժմ դուք պետք է հստակորեն նշեք CORE::dump()):
File::Glob::glob ֆունկցիան հեռացվել է (դուք պետք է օգտագործեք File::Glob::bsd_glob):
Պաշտպանություն է ավելացվել pack()-ին՝ Յունիկոդի սխալ հաջորդականությունների վերադարձից:
XS կոդով (C բլոկներ) UTF-8-ով գործողություններ կատարող մակրոների օգտագործման աջակցության ավարտը հետաձգվել է մինչև հաջորդ թողարկումը:
Կատարման օպտիմիզացումներ.
Թարգմանչական գործողությունները UTF-8-ից դեպի նիշերի դասավորություն արագացվել են (կոդը կետ), օրինակ, ord(“\x7fff”) գործողության կատարումն այժմ պահանջում է 12%-ով ավելի քիչ հրահանգներ: Բարձրացվել է նաև UTF-8 նիշերի հաջորդականությունների ճշգրտությունը ստուգող գործողությունների կատարումը.
finalize_op() ֆունկցիայի ռեկուրսիվ զանգերը վերացվել են.
Կոդերի աննշան օպտիմիզացումներ է կատարել՝ նույնական նիշերը քանդելու և կանոնավոր արտահայտություններով նիշերի դասերը սահմանելու համար.
Օպտիմիզացված ստորագրված տիպի սահմանումները վերափոխելով չստորագրվածների (IV-ի ուլտրամանուշակագույնի);
Ամբողջ թվերը տողի վերածելու ալգորիթմն արագացվել է՝ մեկի փոխարեն միանգամից երկու թվանշան մշակելով.
Կատարվել են բարելավումներ պատրաստված LGTM-ի վերլուծության հիման վրա;
Օպտիմիզացված կոդը regcomp.c, regcomp.h և regexec.c ֆայլերում;
Կանոնավոր արտահայտություններում «qr/[^a]/» օրինակների մշակումը ASCII նիշերով զգալիորեն արագացել է:
Minix3 հարթակի աջակցությունը վերականգնվել է: Հնարավոր է կառուցել Microsoft Visual Studio 2019 կոմպիլյատորի միջոցով (Visual C++ 14.2);
Հիմնական փաթեթում ներառված մոդուլների թարմացված տարբերակները: Մոդուլները հանվել են հիմնական կազմից Բ::Վրիպազերծում и Տեղանքը::Codes.