Lëshimi i gjuhës së programimit Perl 5.30.0

Pas 11 muajsh zhvillimi Ndodhi lëshimi i një dege të re të qëndrueshme të gjuhës së programimit Perl - 5.30. Në përgatitjen e versionit të ri, rreth 620 mijë rreshta kodi u ndryshuan, ndryshimet prekën 1300 skedarë dhe 58 zhvillues morën pjesë në zhvillim.

Dega 5.30 u lëshua në përputhje me orarin fiks të zhvillimit të miratuar gjashtë vjet më parë, që nënkupton lëshimin e degëve të reja të qëndrueshme një herë në vit dhe lëshimet korrigjuese çdo tre muaj. Në rreth një muaj, është planifikuar të lëshohet versioni i parë korrigjues i Perl 5.30.1, i cili do të korrigjojë gabimet më të rëndësishme të identifikuara gjatë zbatimit të Perl 5.30.0. Së bashku me lëshimin e Perl 5.30, mbështetja për degën 5.26 u ndërpre, për të cilën përditësimet mund të lëshohen në të ardhmen vetëm nëse identifikohen probleme kritike të sigurisë. Ka filluar gjithashtu procesi i zhvillimit të degës eksperimentale 5.31, mbi bazën e së cilës do të formohet një lëshim i qëndrueshëm i Perl 2020 në maj 5.32.

Celës Ndryshimet:

  • Mbështetja eksperimentale për operacionet "" është shtuar në shprehjet e rregullta.(?‹!modeli)"Dhe"(?‹=model)» për akses të kufizuar në shabllonet e emërtuara të përpunuara më parë. Përkufizimi i modelit duhet të jetë brenda 255 karaktereve të vendndodhjes së referencës;
  • Vlera maksimale e specifikuesit të madhësisë (“n”) në blloqet e shprehjeve të rregullta “{m,n}” është rritur në 65534;
  • Shtuar i kufizuar mbështetje maska ​​për të theksuar disa kategori karakteresh në shprehje të rregullta, duke mbuluar grupe të ndryshme Unicode. Për shembull, shprehja “qr! \p{nv= /(?x) \A [0-5] \z / }!” ju lejon të zgjidhni të gjithë karakteret e Unicode që përcaktojnë numrat nga 0 në 5, duke përfshirë drejtshkrimet tajlandeze ose bengali të numrave;
  • Mbështetje e shtuar për personazhet e emërtuar në shprehje të rregullta
    brenda modeleve të kufizuara me thonjëza të vetme (qr'\N{emri}');

  • Mbështetja e specifikimeve të Unicode u përditësua në version 12.1. Flamuri i zhvillimit eksperimental është hequr nga telefonatat sv_utf8_downgrade dhe sv_utf8_decode, përdoret në zhvillimin e zgjerimeve në gjuhën C;
  • U shtua aftësia për të ndërtuar perl me zbatimin e operacioneve me një vendndodhje që mbështet funksionimin me shumë fije (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Më parë, një zbatim i tillë përdorej vetëm kur ndërtohej një version me shumë fije të Perl, por tani mund të aktivizohet për çdo ndërtim;
  • Kombinimi i flamujve "-Dv" (dalja e përmirësuar e korrigjimit) dhe "-Dr" (debugging regex) tani bën që të aktivizohen të gjitha mënyrat e mundshme të korrigjimit të shprehjeve të rregullta;
  • Veçoritë e vjetruara më parë janë hequr:
    • Tani ofrohet si ndarës i rreshtave dhe karaktere të karaktereve të egra lejohet përdorni vetëm grafema (karakteret e përbëra të Unicode nuk lejohen).
    • Ndërprerë mbështetje për disa forma të vjetëruara prej kohësh të përdorimit të karakterit "{" në shprehje të rregullta pa i shpëtuar.
    • Është e ndaluar duke përdorur funksionet sysread(), syswrite(), recv() dhe send() me mbajtësit ":utf8".
    • Ndalohet përdorimi i përkufizimeve të "my" në deklarata të kushtëzuara të rreme (për shembull, "my $x nëse 0").
    • Mbështetja për variablat speciale "$*" dhe "$#" është hequr.
      Mbështetja për thirrjen e nënkuptuar të funksionit dump() është ndërprerë (tani duhet të specifikoni në mënyrë eksplicite CORE::dump()).

    • Funksioni File::Glob::glob është hequr (duhet të përdorni File::Glob::bsd_glob).
    • U shtua mbrojtje për pack() kundër kthimit të sekuencave të pasakta të Unicode.
    • Fundi i mbështetjes për përdorimin e makrove që kryejnë operacione me UTF-8 në kodin XS (blloqe C) është shtyrë deri në versionin tjetër.
  • Optimizimet e performancës:
    • Operacionet e përkthimit nga UTF-8 në paraqitjen e karaktereve janë përshpejtuar (pika e kodit), për shembull, kryerja e operacionit ord(“\x7fff”) tani kërkon 12% më pak udhëzime. Është rritur gjithashtu performanca e operacioneve që kontrollojnë korrektësinë e sekuencave të karaktereve UTF-8;
    • Thirrjet rekursive në funksionin finalize_op() janë eliminuar;
    • Bërë optimizime të vogla në kod për kolapsin e karaktereve identike dhe përcaktimin e klasave të karaktereve në shprehje të rregullta;
    • Optimizuar konvertimi i përkufizimeve të tipit të nënshkruar në të panënshkruar (IV në UV);
    • Algoritmi për konvertimin e numrave të plotë në një varg është përshpejtuar duke përpunuar dy shifra njëherësh në vend të një;
    • Janë bërë përmirësime përgatitur bazuar në analizat nga LGTM;
    • Kodi i optimizuar në skedarët regcomp.c, regcomp.h dhe regexec.c;
    • Në shprehjet e rregullta, përpunimi i modeleve si "qr/[^a]/" me karaktere ASCII është përshpejtuar ndjeshëm.
  • Mbështetja për platformën Minix3 është rikthyer. Është e mundur të ndërtohet duke përdorur përpiluesin Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Versionet e përditësuara të moduleve të përfshira në paketën bazë. Modulet janë hequr nga përbërja kryesore B:: Debug и Lokal::Kodet.

Burimi: opennet.ru

Shto një koment