Programmeerimiskeele Perl 5.30.0 väljalase

Pärast 11-kuulist arengut võttis aset Perli programmeerimiskeele uue stabiilse haru väljalase - 5.30. Uue väljalase ettevalmistamisel muudeti umbes 620 tuhat koodirida, muudatused puudutasid 1300 faili ning arenduses osales 58 arendajat.

Branch 5.30 ilmus vastavalt kuus aastat tagasi kinnitatud fikseeritud arendusgraafikule, mis tähendab uute stabiilsete filiaalide väljaandmist kord aastas ja korrigeerivaid väljalaseid iga kolme kuu tagant. Umbes kuu aja pärast on plaanis välja anda Perl 5.30.1 esimene korrigeeriv väljalase, mis parandab Perl 5.30.0 juurutamisel tuvastatud olulisemad vead. Koos Perl 5.30 väljalaskmisega lõpetati 5.26 haru tugi, mille värskendusi võidakse tulevikus välja anda ainult kriitiliste turbeprobleemide tuvastamisel. Samuti on alanud eksperimentaalse haru 5.31 arendusprotsess, mille põhjal moodustatakse 2020. aasta mais Perl 5.32 stabiilne väljalase.

Võti muutused:

  • Regulaaravaldistele on lisatud eksperimentaalne tugi operatsioonidele "".(?‹!muster)"Ja"(?‹=muster)» piiratud juurdepääsuks varem töödeldud nimega mallidele. Mustri määratlus peab olema võrdluspunktist 255 tähemärgi piires;
  • Suuruse spetsifikaatori (“n”) maksimumväärtust “{m,n}” regulaaravaldise plokkides on suurendatud 65534-ni;
  • Lisatud piiratud toetama maskid, et tõsta esile teatud kategooriate tähemärke regulaaravaldistes, hõlmates erinevaid Unicode'i komplekte. Näiteks väljend "qr! \p{nv= /(?x) \A [0-5] \z / }!” võimaldab valida kõik Unicode'i märgid, mis määravad numbreid vahemikus 0 kuni 5, sealhulgas Tai või Bengali numbrite kirjapilt;
  • Lisatud on regulaaravaldiste nimeliste märkide tugi
    sees mustrid, mis on piiritletud jutumärkidega (qr’\N{nimi}’);

  • Unicode'i spetsifikatsiooni tugi värskendati versioonile 12.1. Eksperimentaalse arenduse lipp on kõnedelt eemaldatud sv_utf8_downgrade ja sv_utf8_decode, mida kasutatakse C-keele laiendite väljatöötamisel;
  • Lisatud on võimalus luua perl koos toimingute rakendamisega lokaadiga, mis toetab mitme lõimega operatsiooni (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’). Varem kasutati sellist teostust ainult Perli mitme lõimega versiooni loomisel, kuid nüüd saab seda lubada mis tahes versiooni jaoks;
  • Lippude "-Dv" (täiustatud silumisväljund) ja "-Dr" (regulaarne silumine) kombineerimine lubab nüüd kõik võimalikud regulaaravaldise silumisrežiimid;
  • Varem aegunud funktsioonid on eemaldatud:
    • Nüüd saadaval reaeraldaja ja metamärkidena lubatud kasutada ainult grafeemid (Unicode'i liitmärgid pole lubatud).
    • Lõpetatud toetus mõnele ammu aegunud vormile, mille abil kasutatakse regulaaravaldistes tähemärki „{” ilma selle vältimiseta.
    • Keelatud on kasutades funktsioone sysread(), syswrite(), recv() ja send() koos ":utf8" töötlejatega.
    • "Minu" definitsioonide kasutamine olemuslikult valedes tingimuslausetes (näiteks "minu $x, kui 0") on keelatud.
    • Erimuutujate “$*” ja “$#” tugi on eemaldatud.
      Funktsiooni dump() kaudse kutsumise tugi on lõpetatud (peate nüüd selgesõnaliselt määrama CORE::dump()).

    • Funktsioon File::Glob::glob on eemaldatud (peaksite kasutama File::Glob::bsd_glob).
    • Pakendile pack() on lisatud kaitse valede Unicode'i järjestuste tagastamise eest.
    • UTF-8-ga operatsioone XS-koodis (C-plokkides) sooritavate makrode kasutamise toe lõppemine on edasi lükatud järgmise väljalaskeni.
  • Toimivuse optimeerimine:
    • Tõlketoiminguid UTF-8-lt märgipaigutusele on kiirendatud (koodipunkt), näiteks toimingu ord(“\x7fff”) sooritamine nõuab nüüd 12% vähem juhiseid. Samuti on suurendatud UTF-8 märgijadade õigsust kontrollivate toimingute jõudlust;
    • Funktsiooni finalize_op() rekursiivsed väljakutsed on elimineeritud;
    • Tegi koodis väiksemaid optimeerimisi identsete märkide ahendamiseks ja regulaaravaldistes märgiklasside määratlemiseks;
    • Optimeeritud märgistatud tüübimääratluste teisendamine märgita definitsioonideks (IV UV-ks);
    • Täisarvude stringiks teisendamise algoritmi on kiirendatud ühe numbri asemel kahe numbri korraga töötlemisega;
    • Parandusi on tehtud ette valmistatud põhineb LGTM analüüsil;
    • Optimeeritud kood failides regcomp.c, regcomp.h ja regexec.c;
    • Regulaaravaldistes on ASCII-märkidega mustrite, nagu "qr/[^a]/" töötlemist oluliselt kiirendatud.
  • Minix3 platvormi tugi on taastatud. Võimalik on ehitada kasutades Microsoft Visual Studio 2019 kompilaatorit (Visual C++ 14.2);
  • Põhipaketis sisalduvate moodulite uuendatud versioonid. Moodulid on põhikoosseisust eemaldatud B::Silumine и Locale::Codes.

Allikas: opennet.ru

Lisa kommentaar