Programmeerimiskeele Perl 5.30.0 väljalaskmine

Pärast 11 kuu arendustööd toimus uue stabiilse Perl programmikeele versiooni väljalaskmine — 5.30. Uue väljaande ettevalmistamisel muudeti umbes 620 tuhande koodi rida, muudatused puudutasid 1300 faili, arenduses osales 58 arendajat.

Haru 5.30 on väljastatud kuus aastat tagasi kehtestatud fikseeritud arendusgraafiku kohaselt, mis näeb ette uute stabiilsete harude väljaandmist kord aastas ja paranduste väljaandeid — iga kolme kuu järel. Umbes kuu aja pärast plaanitakse välja anda esimene parandusversioon Perl 5.30.1, milles parandatakse kõige olulisemad vead, mis avastati Perl 5.30.0 rakendamise käigus. Koos Perl 5.30 väljalaskmisega lõpetatakse haru 5.26 tugi, millele tulevikus võivad ilmuda uuendused ainult kriitiliste turbeprobleemide avastamise korral. Samuti on alustatud katseharu 5.31 arendamise protsessi, mille põhjal moodustatakse mai 2020 stabiliseeritud versioon Perl 5.32.

Peamised muudatused:

  • Regulaarsetesse väljenditesse on lisatud katse tugi operatsioonidele "(?<!pattern)» ja «(?<=pattern)» piiratud juurdepääs varem töödeldud nimetatud mustritele. Mustri määratlemine peab toimuma 255 tähemärgi kaugusel viitamiskohast;
  • Suurendatud maksimaalne suuruse määraja („n“) väärtus blokis „{m,n}“ regulaarsete avaldiste puhul 65534-ni;
  • Lisatud piiratud toetamine maskide määramine konkreetsete sümbolikategooriate jaoks regulaarsetes avaldiste, hõlmates erinevaid Unicode'i kogumeid. Näiteks avaldis „qr! \p{nv= /(?x) \A [0-5] \z / }!“ võimaldab esile tuua kõik Unicode’i sümbolid, mis määratlevad numbreid vahemikus 0 kuni 5, sealhulgas tai või bengali numbrite kirjutamise variandid;
  • Regulaarsetes avaldiste on lisatud toetus määratud sümbolitele
    ühekordsete tsiteeringute piiratud mustrites (qr’\N{name}’);
  • Unicode spetsifikatsiooni tugi on uuendatud versioonile 12.1. Eksperimentaalse arenduse märgis on eemaldatud sv_utf8_downgrade ja sv_utf8_decode, mida kasutatakse C-keeles laienemiste arendamisel;
  • Lisatud toega Perl-i koostamine, mis toetab operatsioone lokaalses režiimis, mis võimaldab töötada mitme kiirusrežiimiga (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’). Varem kasutati sellist teostust ainult mitme kiirusvariandi Perl-i koostamisel, kuid nüüd saab seda lubada kõikide koostamiste jaoks;
  • Lipufunktsioonide kombinatsioon „-Dv” (laiendatud silumisväljavõte) ja „-Dr” (regulaarsete väljendite silumine) toob nüüd kaasa kõik võimalikud regulaarsete väljendite silumise režiimid;
  • Eemaldatud varem vananenud funktsioonid:
    • Ridade ja mallide eraldajate märkidena kasutatakse nüüd ainult grafeeme (komplekssete Unicode-märkide kasutamine on keelatud). toetatakse teatud vananenud regulaarsete väljendite sümboli „{” kasutamise vorme ilma selle pidamise süsteemita.
    • Lõpetatud funktsioonide sysread(), syswrite(), recv() ja send() kasutamine „:utf8” töötlejatega.
    • Keelatud Eemaldatud spetsiaalsete muutujate toetamine „$*” ja „$#”.
    • Toetamine dump() funktsiooni varjatud kutsumise lõpetamine (nüüd tuleb CORE::dump() selgelt määrata).
    • Удалена поддержка спецпеременных «$*» и «$#».
      Прекращена поддержка неявного вызова функции dump() (теперь нужно явно указывать CORE::dump()).
    • File::Glob::glob funktsioon on eemaldatud (kasutada tuleb File::Glob::bsd_glob).
    • funktsiooni pack() on lisatud kaitse vigaste Unicode-järjendite tagastamise vastu.
    • Toetuse lõpetamine XS-koodi (C-blokid) makrode kasutamiseks, mis teevad UTF-8 operatsioone, on järgmise väljaande tarbeks edasi lükatud.
  • Tulemuslikkuse optimeerimised:
    • UTF-8 tõlkeoperatsioonide täitmine on kiiruselt paranenud (koodipunkt), näiteks ord(«\x7fff») täitmiseks on nüüd vajalik 12% vähem käske. Samuti on paranenud UTF-8 järjendite kehtivuse kontrollimise operatsioonide tulemuslikkus;
    • rekursiivsed kutsed on funktsioonist finalize_op() välja jäetud;
    • väiksed optimeerimised on tehtud identsete sümbolite kokkuvoldimise ja regulaarsete väljendite sümbolitüüpide määramise koodis;
    • optimiseeritud märkijate tüüpide muutmised signeeritudist mittesigneeritudiks (IV muutub UV-ks);
    • täisarvude stringiks muutmise algoritmi tõhusust on parendatud, töötledes korraga kahte numbrit asemel ühte;
    • parendused on tehtud, mille on valmistanud analüüsitulemuste põhjal, mille tegi LGTM;
    • kood on optimeeritud failides regcomp.c, regcomp.h ja regexec.c;
    • Regulaarväljendites on oluliselt kiirendatud ASCII sümbolitega mustrite töötlemine, nagu "qr/[^a]/".
  • Taaskäivitati toetust Minix3 platvormile. Tagatud on võimalus koostada Microsoft Visual Studio 2019 (Visual C++ 14.2) kompilaatoriga;
  • Uuendatud on baaspaketi moodulite versioonid. Peamistest moodulitest on eemaldatud B::Debug ja Locale::Codes.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster