Utjefte fan de programmeartaal Perl 5.30.0

Nei 11 moannen fan ûntwikkeling barde frijlitting fan in nije stabile tûke fan 'e Perl-programmeartaal - 5.30. By it tarieden fan 'e nije release waarden sawat 620 tûzen rigels koade feroare, de wizigingen beynfloede 1300 bestannen, en 58 ûntwikkelders namen diel oan 'e ûntwikkeling.

Branch 5.30 waard frijlitten yn oerienstimming mei it fêste ûntwikkelingskema goedkard seis jier lyn, wat de frijlitting fan nije stabile tûken ien kear yn 't jier ymplisearret en elke trije moannen korrektive releases. Yn sawat in moanne is it pland om de earste korrektive release fan Perl 5.30.1 frij te litten, dy't de meast wichtige flaters sil korrigearje dy't identifisearre binne tidens de ymplemintaasje fan Perl 5.30.0. Tegearre mei de frijlitting fan Perl 5.30 waard stipe foar de 5.26-tûke beëinige, wêrfoar updates yn 'e takomst allinich kinne wurde frijlitten as krityske feiligensproblemen wurde identifisearre. It ûntwikkelingsproses fan 'e eksperimintele tûke 5.31 is ek begon, op basis wêrfan in stabile release fan Perl 2020 sil wurde foarme yn maaie 5.32.

Kaai feroarings:

  • Eksperimintele stipe foar "" operaasjes is tafoege oan reguliere útdrukkingen.(?<!patroan)"En"(?‹=patroan)» foar beheinde tagong ta earder ferwurke neamde sjabloanen. De patroandefinysje moat binnen 255 tekens fan it referinsjepunt wêze;
  • De maksimale wearde fan de grutte spesifisator ("n") yn "{m,n}" reguliere ekspresje blokken is ferhege nei 65534;
  • Added beheind stypje maskers om bepaalde kategoryen karakters te markearjen yn reguliere útdrukkingen, dy't ferskate Unicode-sets bedekke. Bygelyks, de útdrukking "qr! \p{nv= /(?x) \A [0-5] \z / }!" kinne jo alle Unicode-tekens selektearje dy't de nûmers fan 0 oant 5 definiearje, ynklusyf Taiske of Bengaalse stavering fan sifers;
  • Stipe tafoege foar neamde karakters yn reguliere útdrukkingen
    binnen patroanen skieden troch inkele quotes (qr'\N{namme}');

  • Unicode-spesifikaasjestipe bywurke nei ferzje 12.1. De flagge foar eksperimintele ûntwikkeling is fuortsmiten fan oproppen sv_utf8_downgrade en sv_utf8_decode, brûkt yn 'e ûntwikkeling fan útwreidingen yn' e C-taal;
  • De mooglikheid tafoege om perl te bouwen mei ymplemintaasje fan operaasjes mei in locale dy't multi-threaded operaasje stipet (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Eartiids waard sa'n ymplemintaasje allinich brûkt by it bouwen fan in multi-threaded ferzje fan Perl, mar kin no ynskeakele wurde foar elke build;
  • It kombinearjen fan de "-Dv" (ferbettere debuggen útfier) ​​en "-Dr" (regex debuggen) flaggen feroarsaket no alle mooglike reguliere ekspresje debuggen modes wurde ynskeakele;
  • Funksjes dy't earder ôfskreaun binne binne fuortsmiten:
    • No beskikber as line separator en jokertekens tastien allinnich brûke graphemes (gearstalde Unicode-tekens binne net tastien).
    • Beëinige stipe foar guon lang ferâldere foarmen fan it brûken fan it "{"-karakter yn reguliere útdrukkingen sûnder it te ûntkommen.
    • Ferbûn mei help fan de sysread (), syswrite (), recv () en stjoer () funksjes mei ": utf8" handlers.
    • It is ferbean om definysjes fan "myn" te brûken yn ynherinte falske betingsten (bygelyks "myn $x as 0").
    • Stipe foar spesjale fariabelen "$*" en "$#" is fuortsmiten.
      Stipe foar ymplisite oprop fan de funksje dump() is staakt (jo moatte no eksplisyt CORE :: dump() oantsjutte).

    • De funksje File :: Glob :: glob is fuortsmiten (jo moatte File :: Glob :: bsd_glob brûke).
    • Tafoege beskerming oan pack () tsjin it werombringen fan ferkearde Unicode-sekwinsjes.
    • It ein fan stipe foar it brûken fan makro's dy't operaasjes útfiere mei UTF-8 yn XS-koade (C-blokken) is útsteld oant de folgjende release.
  • Performance Optimizations:
    • Oersetaksjes fan UTF-8 nei karakteryndieling binne fersneld (koade punt), bygelyks, it útfieren fan de ord(“\x7fff”) operaasje fereasket no 12% minder ynstruksjes. De prestaasjes fan operaasjes dy't de krektens fan UTF-8-tekensekwinsjes kontrolearje, binne ek ferhege;
    • Rekursive oproppen yn de funksje finalize_op () binne eliminearre;
    • Makke lytse optimalisaasjes oan de koade foar it ynstoarten fan identike karakters en it definiearjen fan karakterklassen yn reguliere útdrukkingen;
    • Optimalisearre konvertearjen fan ûndertekene type definysjes nei net-ûndertekene (IV nei UV);
    • It algoritme foar it konvertearjen fan heule getallen yn in tekenrige is fersneld troch twa sifers tagelyk te ferwurkjen ynstee fan ien;
    • Ferbetterings binne makke taret basearre op analyze troch LGTM;
    • Optimalisearre koade yn triemmen regcomp.c, regcomp.h en regexec.c;
    • Yn reguliere útdrukkingen is de ferwurking fan patroanen lykas "qr/[^a]/" mei ASCII-karakters signifikant fersneld.
  • Stipe foar it Minix3-platfoarm is restaurearre. It is mooglik om te bouwen mei de Microsoft Visual Studio 2019-kompiler (Visual C ++ 14.2);
  • Bywurke ferzjes fan modules opnommen yn it basispakket. Modules binne fuortsmiten fan 'e haadkomposysje B :: Debug и Locale :: Koades.

Boarne: opennet.ru

Add a comment