3

Մեկ տարի զարգացումից հետո հրատարակված Perl ծրագրավորման լեզվի նոր կայուն մասնաճյուղի թողարկում - 5.44. Երբ պատրաստում Նոր թողարկումը փոփոխել է կոդի մոտավորապես 270 տող (բացառությամբ փաստաթղթերի և ավտոմատ կերպով ստեղծված կոդի՝ 110), փոփոխությունները ազդել են 860 ֆայլի վրա, և մշակմանը մասնակցել է 71 մշակող։

5.44 ճյուղը թողարկվել է տասներեք տարի առաջ սահմանված ֆիքսված մշակման ժամանակացույցի համաձայն, որը նախատեսում է նոր կայուն ճյուղերի թողարկում տարին մեկ անգամ, իսկ փոքր թողարկումները՝ յուրաքանչյուր երեք ամիսը մեկ: Առաջին փոքր թողարկումը՝ Perl 5.44.1-ը, նախատեսված է թողարկել մոտ մեկ ամսից, որը կուղղի Perl 5.44.0-ի ներդրման ընթացքում հայտնաբերված ամենակարևոր սխալները: Perl 5.44-ի թողարկմամբ ավարտվել է 5.40 ճյուղի աջակցությունը. դրա թարմացումները կարող են թողարկվել ապագայում միայն այն դեպքում, եթե հայտնաբերվեն կարևոր անվտանգության խնդիրներ: Սկսվել է փորձարարական 5.45 ճյուղի մշակման գործընթացը, որը հիմք կհանդիսանա Perl 5.46-ի կայուն թողարկման համար 2027 թվականի առաջին կեսին, եթե որոշում չկայացվի։ գնացեք դեպի 7.x համարակալումը։

Բանալի փոփոխություններ:

  • Ավելացված է անվանված պարամետրեր օգտագործելու փորձարարական հնարավորությունը ստորագրություններ Ֆունկցիաներ, որոնք սահմանում են ֆունկցիային փոխանցվող փոփոխականների ցանկը ոչ թե ֆունկցիայի մարմնում, այլ դրա հայտարարման ժամանակ։ Այս նոր գործառույթը թույլ է տալիս պարամետրերը փոխանցել ոչ թե խիստ հերթականությամբ, այլ ցանկացած հերթականությամբ՝ օգտագործելով բանալի/արժեք զույգեր և հեշերում տարրերի վերագրմանը նման շարահյուսություն։
    • հին շարահյուսություն՝ sub f { my ($x, $y) = @_; …} f(1, 2);
    • ստորագրություններ՝ ենթաբաժին f ($x, $y) { … } f(1, 2);
    • ստորագրություններ անվանված պարամետրերով՝ sub f (:$x, :$y) { … } f(y => 2, x => 1);
  • Ավելացվել է փորձարարական աջակցություն բազմաթիվ փոփոխականներով foreach ցիկլերում կեղծանունների (ցուցիչներ դեպի ցուցիչներ) օգտագործման համար: Այս գործառույթը թույլ է տալիս ստեղծել կեղծանուն foreach ցիկլում, երբ մեկ ցիկլի իտերացիայում ստանում եք բազմաթիվ արժեքներ: Օրինակ, դուք կարող եք ստեղծել կեղծանուն հեշ տարրի համար զանգվածով, երբ իտերացիա եք կատարում հեշի և՛ բանալիների, և՛ արժեքների վրա. use v5.44; use feature qw(refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "$key զանգվածը պարունակում է՝ @items"; } # Մինչև 5.44 տարբերակը, անհրաժեշտ կլիներ հղումների հեռացում. foreach my ( $key, $var ) ( %hash ) { say "$key զանգվածը պարունակում է՝ @$var"; } # Առանց փորձարարական վերահարթեցման և declared_refs ֆունկցիաների՝ foreach my $key (keys %hash) { say "$key զանգվածը պարունակում է՝ @{$hash{$key}}"; }
  • Կանոնավոր արտահայտություններում իրականացվել է Փորձարարական «բարելավված_xx» ռեժիմը թույլ է տալիս /xx մոդիֆիկատորը օգտագործել քառակուսի փակագծերում գրված նիշերի դասերի հետ ([a-zA-Z])՝ դրանք մի քանի տողերի բաժանելու կամ մեկնաբանություններ տեղադրելու համար։ Օրինակ, պայմանը, եթե ($text =~ m/[a-zA-Z]/){ կարող է գրվել որպես՝ եթե ($text =~ m/[a-z # փոքրատառ տառեր A-Z # մեծատառ տառեր ]/xx) {
  • Կեղծ-պատահական թվերի գեներատորը օգտագործում է getentropy() համակարգային կանչը՝ այն աջակցող համակարգերի էնտրոպիան ստանալու համար (Linux, BSD, macOS)։ Այլ համակարգերում էնտրոպիան ստացվում է /dev/urandom սարքից կարդալով կամ ժամանակի, պրոցեսի ID-ի և ցուցիչի արժեքի հեշ օգտագործելով։
  • Ավելացված է հստակեցման աջակցություն Unicode 17.0- ը.
  • Յունիկոդի կանոնների խիստ պահպանումն ապահովվել է նույնականացուցիչների անունների և կանոնավոր արտահայտությունների խմբերի համար, ընդ որում՝ մոտ 160 Յունիկոդի նիշ, որոնք նախկինում ծածկվում էին w դասով, այժմ արգելված է։ Օրինակ՝ w դասը, որը ծածկում է բոլոր տառերը, թվանշանները և ընդգծման նիշը, այժմ բացառում է շրջանագծված լատինական տառերը, որոնք նման են իրական տառերին, բայց այդպիսին չեն։ Այս վարքագծի փոփոխությունը ազդում է միայն utf8 ռեժիմն օգտագործող ծրագրերի վրա։
  • Ուղղվել են Perl_study_chunk ֆունկցիաների բուֆերային արտահոսքերի պատճառով առաջացած խոցելիությունները (CVE-2026-8376- ը, հայտնվում է 32-բիթային հավաքույթներում) և S_measure_struct (CVE-2026-57432- ը), ինչպես նաև Regex շարժիչում 16-բիթային հաշվիչի գերբեռնվածությունը (CVE-2026-13221- ը), ինչը կարող է հանգեցնել կանոնավոր արտահայտության ձախողմանը։
  • Goto օպերատորի միջոցով ցիկլերի և բլոկային կոնստրուկտների ներսում դիրքեր անցնելն արգելվում է: Այս գործառույթը դադարեցվել է 2010 թվականին:
  • Կատարվել են կատարողականի օպտիմալացումներ՝ ամբողջ թվերի գումարումը, հանումը և բազմապատկումը, ֆունկցիայի ստորագրության մշակումը արագացնելու և բանալի/արժեք ցուցակներից հեշերը կոմպիլյացիայի ժամանակ հայտնի տողային բանալիներով լրացնելու համար։

Source: linux.org.ru

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster