Perl 5.36.0 programmeartaal beskikber

Nei in jier fan ûntwikkeling is de frijlitting fan in nije stabile tûke fan 'e Perl-programmearringstaal - 5.36 - publisearre. By it tarieden fan 'e nije release waarden sawat 250 tûzen rigels koade feroare, de wizigingen beynfloede 2000 bestannen, en 82 ûntwikkelders namen diel oan' e ûntwikkeling.

Branch 5.36 waard frijlitten yn oerienstimming mei it fêste ûntwikkelingsskema goedkard njoggen 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.36.1 frij te litten, dy't de meast wichtige flaters sil korrigearje dy't identifisearre binne tidens de ymplemintaasje fan Perl 5.36.0. Tegearre mei de frijlitting fan Perl 5.36 waard stipe foar de 5.32-tûke beëinige, wêrfoar takomstige updates allinich kinne wurde frijlitten as krityske feiligensproblemen wurde identifisearre. It proses fan it ûntwikkeljen fan de eksperimintele tûke 5.37 is ek begûn, op basis wêrfan in stabile release fan Perl 2023 yn maaie of juny 5.38 foarme wurdt, útsein as der in beslút wurdt makke om te wikseljen nei nûmering 7.x.

Key feroarings:

  • Stipe foar funksje-hantekeningen is stabilisearre en is no beskikber by it opjaan fan it "gebrûk v5.36" pragma, wêrtroch jo de list mei fariabelen dy't brûkt wurde yn 'e funksje eksplisyt kinne definiearje en de operaasjes automatisearje fan kontrolearjen en tawize fan wearden út in array fan ynkommende parameters. Bygelyks, earder brûkte koade: sub foo { die "Tefolle arguminten foar subroutine" útsein @_ >= 2; die "Te min arguminten foar subroutine" útsein @_ <= 2; my($left, $right) = @_; werom $lofts + $rjochts; }

    by it brûken fan hantekeningen, kin it wurde ferfongen troch:

    sub foo ($left, $right) { werom $lofts + $rjochts; }

    As jo ​​foo neame mei mear as twa arguminten, sil de tolk in flater smyt. De list stipet ek in spesjale fariabele "$", wêrmei jo guon fan 'e arguminten negearje kinne, bygelyks "sub foo ($left, $, $right)" lit jo allinich de earste en tredde arguminten kopiearje yn fariabelen , wylst krekt trije moatte wurde trochjûn oan it funksje argumint.

    De hantekeningsyntaksis lit jo ek opsjonele arguminten opjaan en standertwearden opjaan as in argumint ûntbrekt. Troch bygelyks "sub foo ($left, $right = 0)" te spesifisearjen wurdt it twadde argumint opsjoneel en as it net is, wurdt de wearde 0 trochjûn. Yn 'e opdrachtoperaasje kinne jo willekeurige útdrukkingen oantsjutte, ynklusyf it brûken fan oare fariabelen út de list of globale fariabelen. It opjaan fan in hash of array ynstee fan in fariabele (bygelyks "sub foo ($left, @right)") sil ien of mear arguminten trochjaan kinne.

  • Yn funksjes ferklearre mei help fan hantekeningen, stipe foar opsjonele parameter tawizing fan de "@_" array wurdt ferklearre eksperiminteel en sil resultearje yn in warskôging (de warskôging wurdt allinnich útjûn as @_ wurdt brûkt yn funksjes ferklearre mei de nije syntaksis). Bygelyks, in warskôging wurdt werjûn foar de funksje: brûk v5.36; sub f ($x, $y = 123) { sis "It earste argumint is $_[0]"; }
  • Stabilisearre en beskikber by it opjaan fan de "gebrûk v5.36" pragma, de infix operator "isa" foar in kontrolearje oft in foarwerp is in eksimplaar fan de oantsjutte klasse of in klasse ôflaat fan it. Bygelyks: if( $obj isa Package::Name ) { … }
  • By it opjaan fan it pragma "gebrûk v5.36" wurdt warskôgingsferwurking ynskeakele (de modus "gebrûk warskôgings" is aktivearre).
  • By it spesifisearjen fan it "gebrûk v5.36" pragma, wurdt stipe foar yndirekte notaasje foar it oproppen fan objekten ("funksje yndirekt") útskeakele - in ferâldere manier om objekten op te roppen, wêryn in romte wurdt brûkt ynstee fan "->" ("metoade $ object @param" ynstee fan "$object-> $method(@param)"). Bygelyks, ynstee fan "my $cgi = nije CGI" moatte jo "my $cgi = CGI->nij" brûke.
  • By it oantsjutte fan it "gebrûk v5.36" pragma, wurdt stipe foar it emulearjen fan multydinsjonele arrays en hashes yn 'e Perl 4-styl ("funksje multydiminsjoneel") útskeakele, wêrtroch de oantsjutting fan ferskate kaaien oerset wurde kin yn in tuskenlizzende array (bygelyks " $hash{1, 2}") waard omboud ta "$hash{join($;, 1, 2)}").
  • By it oantsjutte fan it "gebrûk v5.36" pragma, stipe foar de eksperimintele branching meganisme ("funksje switch"), fergelykber mei de switch en saak útspraken, is útskeakele (Perl brûkt de opjûne en wannear kaaiwurden). Om dizze funksje te brûken, begjinnend fan Perl 5.36 moatte jo 'gebrûk funksje "skeakelje"' eksplisyt oantsjutte, en as jo "ferzje brûke" oantsjutte sil it net mear automatysk ynskeakele wurde.
  • Stipe foar ekstra karakterklassen yn fjouwerkante heakjes binnen reguliere útdrukkingen is stabilisearre en is standert beskikber. De funksje lit jo wedstriden útfiere mei avansearre regels foar de krusing, útsluting en uny fan sets fan karakters. Bygelyks, '[A-Z - W]' - tekens fan A oant Z útsein W.
  • Stipe foar de operaasjes "(?", "( )", "{ }" en "[ ]" is foar in part stabilisearre en standert beskikber; jo kinne de symboalen "" "", "" "", ensfh. , "qr" pat "".
  • It oproppen fan de sortefunksje sûnder arguminten is ferbean, dat sil no resultearje yn in flater. @a = sortearje @leech; # sil trochgean @a = sortearje; # in flater sil printe wurde @a = sort(); # in flater sil wurde printe
  • In nije kommandorigelflagge "-g" is foarsteld, wêrtroch de modus fan it laden fan it hiele bestân as gehiel mooglik makket, ynstee fan rigel foar rigel. De aksje fan 'e flagge is fergelykber mei de oantsjutting "-0777".
  • Stipe foar de Unicode-spesifikaasje is bywurke nei ferzje 14.0.
  • Biedt direkte ôfhanneling fan driuwende punt-útsûnderings (SIGFPE) fergelykber mei oare alaarms lykas SIGSEGV, wêrtroch jo jo eigen hannelers foar SIGFPE kinne bine fia $SIG{FPE}, bygelyks it útfieren fan it linenûmer wêr't it probleem barde.
  • Bywurke ferzjes fan modules opnommen yn it basispakket.
  • Prestaasjeoptimisaasjes tafoege. De mooglikheid om grutte hash-kaaien effisjinter op te slaan sûnder dielde stringtabellen te brûken is levere. De prestaasjes fan it meitsjen fan nije skalêre wearden binne signifikant ferbettere, bygelyks de folgjende koade rint no 30% rapper: $str = "A" x 64; foar (0..1_000_000) { @svs = split //, $str }
  • De tolkkoade begon guon fan 'e konstruksjes te brûken definieare yn' e C99-standert. Bouwen fan Perl fereasket no in kompilator dy't C99 stipet. Stipe foar it bouwen yn âldere ferzjes fan MSVC ++ (pre-VC12) is staakt. Stipe tafoege foar it bouwen yn Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Stipe foar AT&T UWIN, DOS/DJGPP en Novell NetWare-platfoarms is stopset.

Boarne: opennet.ru

Add a comment