Perl 5.30.0 ծրագրավորման լեզվի թողարկում

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.

Source: opennet.ru

Добавить комментарий