Ohjelmointikielen Perl 5.30.0 julkaisu

11 kuukauden kehityksen jälkeen tapahtui Perl-ohjelmointikielen uuden vakaan haaran julkaisu - 5.30. Uutta julkaisua valmisteltaessa muutettiin noin 620 tuhatta koodiriviä, muutokset koskivat 1300 58 tiedostoa ja kehittämiseen osallistui XNUMX kehittäjää.

Branch 5.30 julkaistiin kuusi vuotta sitten vahvistetun kiinteän kehitysaikataulun mukaisesti, mikä tarkoittaa uusien vakaajen sivujen julkaisemista kerran vuodessa ja korjaavia julkaisuja kolmen kuukauden välein. Noin kuukauden kuluttua on tarkoitus julkaista Perl 5.30.1:n ensimmäinen korjaava julkaisu, joka korjaa merkittävimmät Perl 5.30.0:n toteutuksen aikana havaitut virheet. Perl 5.30:n julkaisun myötä tuki 5.26-haaralle lopetettiin, jolle päivityksiä voidaan julkaista tulevaisuudessa vain, jos kriittisiä tietoturvaongelmia havaitaan. Myös kokeellisen haaran 5.31 kehitysprosessi on alkanut, jonka pohjalta Perl 2020:sta muodostetaan vakaa julkaisu toukokuussa 5.32.

Avain muutokset:

  • Säännöllisiin lausekkeisiin on lisätty kokeellinen tuki ""-operaatioille.(?<!kuvio)"Ja"(?‹=kuvio)» rajoitettu pääsy aiemmin käsiteltyihin nimettyihin malleihin. Kuvion määritelmän on oltava 255 merkin sisällä viitepisteestä;
  • Kokomääritteen ("n") enimmäisarvo "{m,n}" säännöllisten lausekkeiden lohkoissa on nostettu arvoon 65534;
  • Lisätty rajoitetusti tukea maskit korostamaan tiettyjä merkkiluokkia säännöllisissä lausekkeissa, jotka kattavat eri Unicode-joukot. Esimerkiksi lauseke "qr! \p{nv= /(?x) \A [0-5] \z / }!” voit valita kaikki Unicode-merkit, jotka määrittävät numerot 0–5, mukaan lukien thai- tai bengalinkieliset numeroiden oikeinkirjoitukset;
  • Lisätty tuki nimetyille merkeille säännöllisissä lausekkeissa
    yksittäisillä lainausmerkeillä rajattujen kuvioiden sisällä (qr'\N{nimi}');

  • Unicode-määritystuki päivitetty versioon 12.1. Kokeellisen kehityksen lippu on poistettu puheluista sv_utf8_downgrade ja sv_utf8_decode, jota käytetään C-kielen laajennusten kehittämisessä;
  • Lisätty mahdollisuus rakentaa perl toimintojen toteutuksella monisäikeistä toimintaa tukevalla maa-alueella (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Aikaisemmin tällaista toteutusta käytettiin vain kun rakennettiin monisäikeistä Perl-versiota, mutta nyt se voidaan ottaa käyttöön missä tahansa koontiversiossa;
  • Lippujen "-Dv" (tehostettu virheenkorjaustulos) ja "-Dr" (säännöllinen virheenkorjaus) yhdistäminen saa nyt kaikki mahdolliset säännöllisen lausekkeen virheenkorjaustilat käyttöön.
  • Aiemmin käytöstä poistetut ominaisuudet on poistettu:
    • Nyt saatavilla rivierottimena ja jokerimerkkinä sallittu vain käyttöön grafeemit (Unicode-yhdistelmämerkit eivät ole sallittuja).
    • Lopetettu tuki joillekin vanhentuneille muodoille, joissa käytetään "{"-merkkiä säännöllisissä lausekkeissa ilman, että sitä vältetään.
    • Se on kielletty käyttämällä sysread(), syswrite(), recv() ja send()-funktioita ":utf8"-käsittelijöiden kanssa.
    • On kiellettyä käyttää "minun" määritelmiä luonnostaan ​​väärissä ehdollisissa lauseissa (esimerkiksi "minun $x, jos 0").
    • Erityismuuttujien "$*" ja "$#" tuki on poistettu.
      Dump()-funktion implisiittisen kutsun tuki on lopetettu (sinun on nyt määritettävä erikseen CORE::dump()).

    • File::Glob::glob-funktio on poistettu (siitä tulee käyttää File::Glob::bsd_glob).
    • Lisätty suojaus pack():iin virheellisten Unicode-sekvenssien palauttamista vastaan.
    • UTF-8:lla operaatioita XS-koodissa (C-lohkot) suorittavien makrojen käytön tuen päättyminen on lykätty seuraavaan julkaisuun.
  • Suorituskyvyn optimoinnit:
    • Käännöstoimintoja UTF-8:sta merkkiasetteluun on nopeutettu (koodipiste), esimerkiksi ord("\x7fff") -toiminnon suorittaminen vaatii nyt 12 % vähemmän käskyjä. Myös UTF-8-merkkijonojen oikeellisuutta tarkistavien toimintojen suorituskykyä on lisätty;
    • Rekursiiviset kutsut finalize_op()-funktiossa on eliminoitu;
    • Teki pieniä optimointeja koodiin identtisten merkkien tiivistämiseksi ja merkkiluokkien määrittämiseksi säännöllisissä lausekkeissa;
    • Optimoitu etumerkittyjen tyyppimääritelmien muuntaminen etumerkittömiksi (IV:stä UV:ksi);
    • Algoritmia kokonaislukujen muuntamiseksi merkkijonoksi on nopeutettu käsittelemällä kaksi numeroa kerralla yhden sijasta;
    • Parannuksia on tehty valmis perustuu LGTM:n analyysiin;
    • Optimoitu koodi tiedostoissa regcomp.c, regcomp.h ja regexec.c;
    • Säännöllisissä lausekkeissa ASCII-merkkejä sisältävien kuvioiden, kuten "qr/[^a]/" käsittelyä on nopeutettu merkittävästi.
  • Tuki Minix3-alustalle on palautettu. On mahdollista rakentaa Microsoft Visual Studio 2019 -kääntäjällä (Visual C++ 14.2);
  • Päivitetyt versiot peruspakettiin kuuluvista moduuleista. Moduulit on poistettu pääkoostumuksesta B::Debug и Kieli::Koodit.

Lähde: opennet.ru

Lisää kommentti