Izdaja programskega jezika Perl 5.30.0

Po 11 mesecih razvoja potekal izdaja nove stabilne veje programskega jezika Perl - 5.30. Pri pripravi nove izdaje je bilo spremenjenih približno 620 tisoč vrstic kode, spremembe so vplivale na 1300 datotek, pri razvoju pa je sodelovalo 58 razvijalcev.

Branch 5.30 je bil izdan v skladu s fiksnim urnikom razvoja, odobrenim pred šestimi leti, kar pomeni izdajo novih stabilnih vej enkrat letno in popravne izdaje vsake tri mesece. Čez približno mesec dni je načrtovana izdaja prve popravne izdaje Perl 5.30.1, ki bo popravila najpomembnejše napake, ugotovljene med implementacijo Perl 5.30.0. Skupaj z izdajo Perla 5.30 je bila ukinjena podpora za vejo 5.26, za katero bodo posodobitve morda izdane v prihodnosti le, če bodo odkrite kritične varnostne težave. Začel se je tudi razvojni proces eksperimentalne veje 5.31, na podlagi katere bo maja 2020 oblikovana stabilna izdaja Perla 5.32.

Ključ Spremembe:

  • Eksperimentalna podpora za operacije "" je bila dodana regularnim izrazom.(?‹! vzorec)"In"(?‹=vzorec)» za omejen dostop do predhodno obdelanih poimenovanih predlog. Definicija vzorca mora biti znotraj 255 znakov referenčne točke;
  • Največja vrednost določitelja velikosti (»n«) v blokih regularnega izraza »{m,n}« je bila povečana na 65534;
  • Dodano omejeno podporo maske za poudarjanje določenih kategorij znakov v regularnih izrazih, ki pokrivajo različne nize Unicode. Na primer, izraz »qr! \p{nv= /(?x) \A [0-5] \z / }!" omogoča izbiro vseh znakov Unicode, ki določajo števila od 0 do 5, vključno s tajskim ali bengalskim črkovanjem številk;
  • Dodana podpora za imenovane znake v regularnih izrazih
    znotraj vzorcev, ločenih z enojnimi narekovaji (qr'\N{name}');

  • Podpora za specifikacijo Unicode posodobljena na različico 12.1. Oznaka eksperimentalnega razvoja je bila odstranjena iz klicev sv_utf8_downgrade in sv_utf8_decode, ki se uporablja pri razvoju razširitev v jeziku C;
  • Dodana zmožnost gradnje perla z izvajanjem operacij z jezikovnimi nastavitvami, ki podpirajo večnitno operacijo (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Prej je bila taka izvedba uporabljena le pri gradnji večnitne različice Perla, zdaj pa jo je mogoče omogočiti za katero koli gradnjo;
  • Kombinacija zastavic "-Dv" (izboljšan izhod za odpravljanje napak) in "-Dr" (odpravljanje napak pri regularnem izrazu) zdaj povzroči, da so omogočeni vsi možni načini za odpravljanje napak v regularnem izrazu;
  • Funkcije, ki so bile prej opuščene, so bile odstranjene:
    • Zdaj na voljo kot ločilo vrstic in nadomestni znaki dovoljeno uporabite samo grafemi (sestavljeni znaki Unicode niso dovoljeni).
    • Prekinjeno podpora za nekatere že zdavnaj zastarele oblike uporabe znaka “{” v regularnih izrazih, ne da bi se mu izognili.
    • Je prepovedano z uporabo funkcij sysread(), syswrite(), recv() in send() z obdelovalci ":utf8".
    • Prepovedana je uporaba definicij "my" v samih po sebi napačnih pogojnih izjavah (na primer "my $x if 0").
    • Podpora za posebne spremenljivke “$*” in “$#” je bila odstranjena.
      Podpora za implicitno klicanje funkcije dump() je bila ukinjena (zdaj morate izrecno določiti CORE::dump()).

    • Funkcija File::Glob::glob je bila odstranjena (uporabiti morate File::Glob::bsd_glob).
    • Dodana zaščita za pack() pred vračanjem neveljavnih zaporedij Unicode.
    • Konec podpore za uporabo makrov, ki izvajajo operacije z UTF-8 v kodi XS (bloki C), je bil odložen do naslednje izdaje.
  • Optimizacije delovanja:
    • Operacije prevajanja iz UTF-8 v postavitev znakov so bile pospešene (kodna točka), na primer, izvajanje operacije ord(“\x7fff”) zdaj zahteva 12 % manj navodil. Povečana je tudi zmogljivost operacij preverjanja pravilnosti zaporedja znakov UTF-8;
    • Rekurzivni klici v funkciji finalize_op() so bili odpravljeni;
    • Naredili manjše optimizacije kode za strnitev enakih znakov in definiranje razredov znakov v regularnih izrazih;
    • Optimizirano pretvorba predznačenih definicij tipa v nepredznačene (IV v UV);
    • Algoritem za pretvorbo celih števil v niz je bil pospešen z obdelavo dveh števk naenkrat namesto ene;
    • Narejene so bile izboljšave pripravljeno na podlagi analize LGTM;
    • Optimizirana koda v datotekah regcomp.c, regcomp.h in regexec.c;
    • V regularnih izrazih je bila obdelava vzorcev, kot je »qr/[^a]/« z znaki ASCII, bistveno pospešena.
  • Podpora za platformo Minix3 je bila obnovljena. Možno je graditi s prevajalnikom Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Posodobljene različice modulov, vključenih v osnovni paket. Moduli so bili odstranjeni iz glavne kompozicije B::Odpravljanje napak и Locale::Codes.

Vir: opennet.ru

Dodaj komentar