Vydanie programovacieho jazyka Perl 5.30.0

Po 11 mesiacoch vývoja uskutočnilo sa vydanie novej stabilnej vetvy programovacieho jazyka Perl - 5.30. Pri príprave nového vydania sa zmenilo asi 620 tisíc riadkov kódu, zmeny sa dotkli 1300 58 súborov a na vývoji sa podieľalo XNUMX vývojárov.

Vetva 5.30 bola vydaná v súlade s pevným harmonogramom vývoja schváleným pred šiestimi rokmi, čo znamená vydávanie nových stabilných vetiev raz ročne a opravné vydania každé tri mesiace. Približne o mesiac sa plánuje vydanie prvého opravného vydania Perlu 5.30.1, ktoré opraví najvýznamnejšie chyby zistené počas implementácie Perlu 5.30.0. Spolu s vydaním Perlu 5.30 bola ukončená podpora pre vetvu 5.26, pre ktorú môžu byť v budúcnosti vydané aktualizácie iba v prípade, že budú identifikované kritické bezpečnostné problémy. Začal sa aj proces vývoja experimentálnej vetvy 5.31, na základe ktorej sa v máji 2020 vytvorí stabilné vydanie Perlu 5.32.

Kľúč zmeny:

  • Do regulárnych výrazov bola pridaná experimentálna podpora pre operácie "".(?‹!vzor)"A"(?‹=vzor)» pre obmedzený prístup k predtým spracovaným pomenovaným šablónam. Definícia vzoru musí byť v rozsahu 255 znakov od referenčného bodu;
  • Maximálna hodnota špecifikátora veľkosti („n“) v blokoch regulárneho výrazu „{m,n}“ bola zvýšená na 65534;
  • Pridané obmedzené podpora masky na zvýraznenie určitých kategórií znakov v regulárnych výrazoch, ktoré pokrývajú rôzne sady Unicode. Napríklad výraz „qr! \p{nv= /(?x) \A [0-5] \z / }!“ umožňuje vybrať všetky znaky Unicode, ktoré definujú čísla od 0 do 5, vrátane thajského alebo bengálskeho hláskovania čísel;
  • Pridaná podpora pre pomenované znaky v regulárnych výrazoch
    vnútri vzorov oddelených jednoduchými úvodzovkami (qr'\N{meno}');

  • Podpora špecifikácie Unicode bola aktualizovaná na verziu 12.1. Z hovorov bol odstránený príznak experimentálneho vývoja sv_utf8_downgrade a sv_utf8_decode, používané pri vývoji rozšírení v jazyku C;
  • Pridaná schopnosť zostaviť perl s implementáciou operácií s miestnym nastavením, ktoré podporuje viacvláknové operácie (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Predtým sa takáto implementácia používala iba pri vytváraní viacvláknovej verzie Perlu, ale teraz ju možno povoliť pre akúkoľvek zostavu;
  • Kombinácia príznakov "-Dv" (vylepšený výstup ladenia) a "-Dr" (ladenie regulárnych výrazov) teraz spôsobí, že budú povolené všetky možné režimy ladenia regulárnych výrazov;
  • Predtým zastarané funkcie boli odstránené:
    • Teraz k dispozícii ako oddeľovač riadkov a zástupné znaky povolený iba použiť grafémy (zložené znaky Unicode nie sú povolené).
    • Prerušené podpora niektorých dávno zastaraných foriem používania znaku „{“ v regulárnych výrazoch bez toho, aby ste ho opustili.
    • je zakázané pomocou funkcií sysread(), syswrite(), recv() a send() s obslužnými programami ":utf8".
    • Je zakázané používať definície „moje“ vo svojej podstate nepravdivých podmienených vyhláseniach (napríklad „môj $ x, ak je 0“).
    • Podpora špeciálnych premenných „$*“ a „$#“ bola odstránená.
      Podpora pre implicitné volanie funkcie dump() bola ukončená (teraz musíte explicitne zadať CORE::dump()).

    • Funkcia File::Glob::glob bola odstránená (mali by ste použiť File::Glob::bsd_glob).
    • Pridaná ochrana do pack() proti vráteniu neplatných sekvencií Unicode.
    • Ukončenie podpory používania makier, ktoré vykonávajú operácie s UTF-8 v kóde XS (bloky C) bolo odložené do ďalšieho vydania.
  • Optimalizácie výkonu:
    • Operácie prekladu z UTF-8 do rozloženia znakov boli zrýchlené (kódový bod), napríklad vykonanie operácie ord(“\x7fff”) teraz vyžaduje o 12 % menej pokynov. Zvýšil sa aj výkon operácií kontrolujúcich správnosť sekvencií znakov UTF-8;
    • Rekurzívne volania vo funkcii finalize_op() boli eliminované;
    • Vykonali menšie optimalizácie kódu na zbalenie identických znakov a definovanie tried znakov v regulárnych výrazoch;
    • Optimalizované prevod podpísaných definícií typu na nepodpísané (IV na UV);
    • Algoritmus na prevod celých čísel na reťazec bol zrýchlený spracovaním dvoch číslic naraz namiesto jednej;
    • Vykonali sa zlepšenia pripravený na základe analýzy LGTM;
    • Optimalizovaný kód v súboroch regcomp.c, regcomp.h a regexec.c;
    • V regulárnych výrazoch sa výrazne zrýchlilo spracovanie vzorov ako „qr/[^a]/“ so znakmi ASCII.
  • Podpora platformy Minix3 bola obnovená. Je možné zostaviť pomocou kompilátora Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Aktualizované verzie modulov, ktoré sú súčasťou základného balíka. Moduly boli odstránené z hlavného zloženia B::Ladenie и Locale::Codes.

Zdroj: opennet.ru

Pridať komentár