Vydání programovacího jazyka Perl 5.30.0

Po 11 měsících vývoje odehrál se vydání nové stabilní větve programovacího jazyka Perl - 5.30. Při přípravě nového vydání bylo změněno asi 620 tisíc řádků kódu, změny se dotkly 1300 souborů a na vývoji se podílelo 58 vývojářů.

Větev 5.30 byla vydána v souladu s pevným plánem vývoje schváleným před šesti lety, což znamená vydávání nových stabilních větví jednou ročně a opravná vydání každé tři měsíce. Zhruba za měsíc se plánuje vydání prvního opravného vydání Perlu 5.30.1, které opraví nejvýznamnější chyby zjištěné během implementace Perlu 5.30.0. Spolu s vydáním Perlu 5.30 byla ukončena podpora pro větev 5.26, pro kterou mohou být v budoucnu vydány aktualizace pouze v případě, že budou identifikovány kritické bezpečnostní problémy. Rovněž byl zahájen proces vývoje experimentální větve 5.31, na jehož základě se v květnu 2020 vytvoří stabilní vydání Perlu 5.32.

Klíč změny:

  • Do regulárních výrazů byla přidána experimentální podpora pro operace "".(?<!vzor)"A"(?‹=vzor)» pro omezený přístup k dříve zpracovaným pojmenovaným šablonám. Definice vzoru musí být v rozmezí 255 znaků od referenčního bodu;
  • Maximální hodnota specifikátoru velikosti („n“) v blocích regulárních výrazů „{m,n}“ byla zvýšena na 65534;
  • Přidáno omezené podpora masky pro zvýraznění určitých kategorií znaků v regulárních výrazech, které pokrývají různé sady Unicode. Například výraz „qr! \p{nv= /(?x) \A [0-5] \z / }!“ umožňuje vybrat všechny znaky Unicode, které definují čísla od 0 do 5, včetně thajského nebo bengálského hláskování čísel;
  • Přidána podpora pojmenovaných znaků v regulárních výrazech
    uvnitř vzorů oddělených jednoduchými uvozovkami (qr'\N{jméno}');

  • Podpora specifikace Unicode byla aktualizována na verzi 12.1. Z volání byl odstraněn příznak experimentálního vývoje sv_utf8_downgrade a sv_utf8_decode, používané při vývoji rozšíření v jazyce C;
  • Přidána možnost sestavit perl s implementací operací s národním prostředím, které podporuje vícevláknové operace (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Dříve se taková implementace používala pouze při sestavování vícevláknové verze Perlu, ale nyní ji lze povolit pro jakékoli sestavení;
  • Kombinace příznaků "-Dv" (vylepšený výstup ladění) a "-Dr" (ladění regulárních výrazů) nyní způsobí, že budou povoleny všechny možné režimy ladění regulárních výrazů;
  • Dříve zastaralé funkce byly odstraněny:
    • Nyní k dispozici jako oddělovač řádků a zástupné znaky povoleno použij jen grafémy (složené znaky Unicode nejsou povoleny).
    • Přerušeno podpora některých dávno zastaralých forem použití znaku „{“ v regulárních výrazech bez jeho escapování.
    • Zakázáno pomocí funkcí sysread(), syswrite(), recv() a send() s obslužnými rutinami ":utf8".
    • Je zakázáno používat definice „můj“ ve své podstatě nepravdivých podmíněných příkazech (například „můj $ x, pokud je 0“).
    • Podpora speciálních proměnných „$*“ a „$#“ byla odstraněna.
      Podpora pro implicitní volání funkce dump() byla ukončena (nyní musíte explicitně zadat CORE::dump()).

    • Funkce File::Glob::glob byla odstraněna (měli byste použít File::Glob::bsd_glob).
    • Do pack() byla přidána ochrana proti vracení nesprávných sekvencí Unicode.
    • Konec podpory používání maker, která provádějí operace s UTF-8 v kódu XS (bloky C), byl odložen do příštího vydání.
  • Optimalizace výkonu:
    • Překladové operace z UTF-8 do rozložení znaků byly zrychleny (kódový bod), například provedení operace ord(“\x7fff”) nyní vyžaduje o 12 % méně instrukcí. Zvýšil se také výkon operací kontrolujících správnost sekvencí znaků UTF-8;
    • Rekurzivní volání ve funkci finalize_op() byla odstraněna;
    • Provedli drobné optimalizace kódu pro sbalení identických znaků a definování tříd znaků v regulárních výrazech;
    • Optimalizováno převod podepsaných definic typů na nepodepsané (IV na UV);
    • Algoritmus pro převod celých čísel na řetězec byl urychlen zpracováním dvou číslic najednou místo jedné;
    • Byla provedena vylepšení připravený na základě analýzy LGTM;
    • Optimalizovaný kód v souborech regcomp.c, regcomp.h a regexec.c;
    • V regulárních výrazech bylo výrazně zrychleno zpracování vzorů jako „qr/[^a]/“ se znaky ASCII.
  • Podpora platformy Minix3 byla obnovena. Je možné sestavit pomocí kompilátoru Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Aktualizované verze modulů obsažených v základním balíčku. Moduly byly odstraněny z hlavní kompozice B::Ladit и Locale::Codes.

Zdroj: opennet.ru

Přidat komentář