Vrystelling van programmeertaal Perl 5.30.0

Na 11 maande van ontwikkeling plaasgevind vrystelling van 'n nuwe stabiele tak van die Perl-programmeertaal - 5.30. By die voorbereiding van die nuwe weergawe is ongeveer 620 duisend reëls kode verander, die veranderinge het 1300 lêers geraak, 58 ontwikkelaars het aan die ontwikkeling deelgeneem.

Tak 5.30 word vrygestel in ooreenstemming met die vaste ontwikkelingskedule wat ses jaar gelede goedgekeur is, wat die vrystelling van nuwe stabiele takke een keer per jaar en korrektiewe vrystellings elke drie maande impliseer. Die eerste regstellende vrystelling van Perl 5.30.1 is geskeduleer om oor ongeveer 'n maand vrygestel te word, wat die belangrikste foute regstel wat tydens die implementering van Perl 5.30.0 geïdentifiseer is. Saam met die vrystelling van Perl 5.30, is ondersteuning vir die 5.26-tak laat vaar, wat slegs in die toekoms opgedateer kan word as kritieke sekuriteitskwessies geïdentifiseer word. Die ontwikkelingsproses van die 5.31-eksperimentele tak het ook begin, op grond waarvan die stabiele vrystelling van Perl 2020 in Mei 5.32 gevorm sal word.

Sleutel veranderinge:

  • Eksperimentele ondersteuning vir "(?<!patroon)"En"(?‹=patroon)' vir beperkte toegang tot voorheen verwerkte benoemde sjablone. Die sjabloondefinisie moet binne 255 karakters van die verwysing wees;
  • Die maksimum waarde van die grootte spesifiseerder ("n") in "{m,n}" blokke van gereelde uitdrukkings is verhoog na 65534;
  • Beperk bygevoeg ondersteun jokertekens om sekere kategorieë karakters in gereelde uitdrukkings uit te lig, wat oor verskillende Unicode-stelle strek. Byvoorbeeld, die uitdrukking "qr! \p{nv= /(?x) \A [0-5] \z / }!” laat jou toe om alle Unicode-karakters te kies wat getalle van 0 tot 5 definieer, insluitend Thaise of Bengaalse variante van skryf van getalle;
  • Bygevoeg ondersteuning vir benoemde karakters in gewone uitdrukkings
    binne-patrone afgebaken deur enkele aanhalingstekens (qr'\N{naam}');

  • Ondersteuning vir die Unicode-spesifikasie is opgedateer na weergawe 12.1. Het die teken van eksperimentele ontwikkeling van oproepe verwyder sv_utf8_afgradering en sv_utf8_dekodeer, gebruik in die ontwikkeling van uitbreidings in die C-taal;
  • Bygevoeg die vermoë om perl te bou met implementering van locale bedrywighede wat multi-threaded bewerking ondersteun (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Voorheen is so 'n implementering slegs gebruik wanneer 'n multi-threaded weergawe van Perl gebou is, maar nou kan dit vir enige bouwerk geaktiveer word;
  • Die kombinasie van "-Dv" (uitgebreide ontfout-uitvoer) en "-Dr" (regex-ontfouting)-vlae skakel nou alle moontlike gereelde-uitdrukking-ontfoutingsmodusse aan;
  • Verwyder kenmerke wat voorheen opgeskort is:
    • As lyn en patroon skei karakters nou toegelaat slegs gebruik grafeme (saamgestelde Unicode-karakters is verbode).
    • gestaak ondersteuning vir sommige lang verouderde vorme van die gebruik van die "{" karakter in gereelde uitdrukkings sonder om dit te ontsnap.
    • Запрещено gebruik van sysread(), syswrite(), recv() en send() funksies met ":utf8" hanteerders.
    • Dit is verbode om definisies van "my" in aanvanklike vals voorwaardelike stellings te gebruik (byvoorbeeld, "my $x as 0").
    • Verwyder ondersteuning vir spesiale veranderlikes "$*" en "$#".
      Ondersteuning vir die implisiete oproep na die dump()-funksie is laat vaar (nou moet jy CORE::dump() eksplisiet spesifiseer).

    • Verwyder File::Glob::glob-funksie (moet File::Glob::bsd_glob gebruik).
    • Beskerming by pack() gevoeg teen die terugkeer van ongeldige Unicode-reekse.
    • Afskaffing van makro's wat UTF-8-bewerkings in XS-kode (C-blokke) uitvoer, is uitgestel tot die volgende vrystelling.
  • Prestasie-optimalisasies:
    • Versnelde vertaling van UTF-8 na karakteruitleg (kode punt), byvoorbeeld, om ord("\x7fff") uit te voer, vereis nou 12% minder instruksies om uit te voer. Die werkverrigting van bewerkings om die korrektheid van UTF-8-karakterreekse na te gaan, is ook verbeter;
    • Uitgesluit rekursiewe oproepe in die finalize_op() funksie;
    • Geringe optimaliserings is aan die kode gemaak vir die ineenstorting van identiese karakters en om karakterklasse in gewone uitdrukkings te definieer;
    • Geoptimaliseer omskakeling van getekende tipe spesifikasies na ongetekende (IV na UV);
    • Die algoritme vir die omskakeling van heelgetalle na 'n string is versnel deur twee syfers gelyktydig te verwerk in plaas van een;
    • Verbeterings is aangebring voorberei soos ontleed deur LGTM;
    • Geoptimaliseerde kode in regcomp.c, regcomp.h en regexec.c lêers;
    • In gewone uitdrukkings is die verwerking van patrone soos "qr/[^a]/" met ASCII-karakters aansienlik versnel.
  • Ondersteuning vir die Minix3-platform hervat. Die vermoë om te bou met behulp van die Microsoft Visual Studio 2019-samesteller (Visual C ++ 14.2) word verskaf;
  • Opgedateerde weergawes van modules wat by die basiese verspreiding ingesluit is. Modules verwyder uit die hoofsamestelling B :: ontfout и Locale :: Kodes.

Bron: opennet.ru

Voeg 'n opmerking