Perl 5.36.0-programmeertaal beskikbaar

Na 'n jaar van ontwikkeling is die vrystelling van 'n nuwe stabiele tak van die Perl-programmeertaal - 5.36 - gepubliseer. Met die voorbereiding van die nuwe weergawe is ongeveer 250 duisend reëls kode verander, die veranderinge het 2000 82 lêers geraak, en XNUMX ontwikkelaars het aan die ontwikkeling deelgeneem.

Tak 5.36 is vrygestel in ooreenstemming met die vaste ontwikkelingskedule wat nege jaar gelede goedgekeur is, wat die vrystelling van nuwe stabiele takke een keer per jaar en korrektiewe vrystellings elke drie maande impliseer. Oor ongeveer 'n maand word beplan om die eerste regstellende vrystelling van Perl 5.36.1 vry te stel, wat die belangrikste foute wat tydens die implementering van Perl 5.36.0 geïdentifiseer is, sal regstel. Saam met die vrystelling van Perl 5.36, is ondersteuning vir die 5.32-tak gestaak, waarvoor toekomstige opdaterings slegs vrygestel kan word as kritieke sekuriteitsprobleme geïdentifiseer word. Die proses om die eksperimentele tak 5.37 te ontwikkel het ook begin, op grond waarvan 'n stabiele vrystelling van Perl 2023 in Mei of Junie 5.38 gevorm sal word, tensy 'n besluit geneem word om na nommering 7.x oor te skakel.

Sleutelveranderinge:

  • Ondersteuning vir funksie-handtekeninge is gestabiliseer en is nou beskikbaar wanneer die "gebruik v5.36"-pragma gespesifiseer word, wat jou toelaat om die lys veranderlikes wat in die funksie gebruik word eksplisiet te definieer en die bewerkings van kontrolering en toewysing van waardes uit 'n verskeidenheid van inkomende parameters. Byvoorbeeld, voorheen gebruik kode: sub foo { die "Te veel argumente vir subroetine" tensy @_ >= 2; die "Te min argumente vir subroetine" tensy @_ <= 2; my($left, $right) = @_; terugkeer $left + $right; }

    wanneer handtekeninge gebruik word, kan dit vervang word deur:

    sub foo ($left, $right) { return $left + $right; }

    As jy foo met meer as twee argumente bel, sal die tolk 'n fout gooi. Die lys ondersteun ook 'n spesiale veranderlike "$", wat jou toelaat om sommige van die argumente te ignoreer, byvoorbeeld, "sub foo ($left, $, $right)" sal jou toelaat om slegs die eerste en derde argumente in veranderlikes te kopieer , terwyl presies drie na die funksie-argument oorgedra moet word.

    Die handtekeningsintaksis laat jou ook toe om opsionele argumente te spesifiseer en verstekwaardes te spesifiseer as 'n argument ontbreek. Deur byvoorbeeld "sub foo ($left, $right = 0)" te spesifiseer, word die tweede argument opsioneel en as dit afwesig is, word die waarde 0 geslaag. In die opdragbewerking kan jy arbitrêre uitdrukkings spesifiseer, insluitend die gebruik van ander veranderlikes uit die lys of globale veranderlikes. Deur 'n hash of skikking in plaas van 'n veranderlike te spesifiseer (byvoorbeeld, "sub foo ($left, @right)") sal toelaat dat een of meer argumente deurgegee word.

  • In funksies wat met behulp van handtekeninge verklaar word, word ondersteuning vir opsionele parametertoewysing vanaf die "@_"-skikking as eksperimenteel verklaar en sal 'n waarskuwing tot gevolg hê (die waarskuwing word slegs uitgereik as @_ gebruik word in funksies wat met die nuwe sintaksis verklaar is). Byvoorbeeld, 'n waarskuwing sal vertoon word vir die funksie: gebruik v5.36; sub f ($x, $y = 123) {sê "Die eerste argument is $_[0]"; }
  • Gestabiliseer en beskikbaar wanneer die "gebruik v5.36"-pragma gespesifiseer word, die infix-operateur "isa" om te kontroleer of 'n voorwerp 'n instansie van die gespesifiseerde klas is of 'n klas wat daaruit afgelei is. Byvoorbeeld: if( $obj isa Package::Name ) { … }
  • Wanneer die "gebruik v5.36"-pragma gespesifiseer word, word waarskuwingsverwerking geaktiveer (die "gebruik waarskuwings"-modus is geaktiveer).
  • Wanneer die "gebruik v5.36"-pragma gespesifiseer word, word ondersteuning vir indirekte notasie vir die oproep van voorwerpe ("feature indirect") gedeaktiveer - 'n verouderde manier om voorwerpe te roep, waarin 'n spasie gebruik word in plaas van "->" ("metode $ objek @param" in plaas van "$object-> $method(@param)"). Byvoorbeeld, in plaas van "my $cgi = nuwe CGI" moet jy "my $cgi = CGI->new" gebruik.
  • Wanneer die "gebruik v5.36"-pragma gespesifiseer word, word ondersteuning vir die nabootsing van multidimensionele skikkings en hashes in die Perl 4-styl ("kenmerk multidimensioneel") gedeaktiveer, wat toelaat dat die aanduiding van verskeie sleutels in 'n intermediêre skikking vertaal kan word (byvoorbeeld, " $hash{1, 2}”) is omgeskakel na "$hash{join($;, 1, 2)}").
  • Wanneer die "gebruik v5.36"-pragma gespesifiseer word, word ondersteuning vir die eksperimentele vertakkingsmeganisme ("kenmerkskakelaar"), soortgelyk aan die skakelaar en gevalstellings, gedeaktiveer (Perl gebruik die gegewe en wanneer sleutelwoorde). Om hierdie kenmerk te gebruik, vanaf Perl 5.36 moet jy 'gebruik kenmerk "skakelaar"' uitdruklik spesifiseer, en wanneer jy "gebruik weergawe" spesifiseer, sal dit nie meer outomaties geaktiveer word nie.
  • Ondersteuning vir bykomende karakterklasse tussen vierkantige hakies binne gereelde uitdrukkings is gestabiliseer en is by verstek beskikbaar. Die kenmerk laat jou toe om wedstryde uit te voer deur gebruik te maak van gevorderde reëls vir die kruising, uitsluiting en vereniging van stelle karakters. Byvoorbeeld, '[A-Z - W]' - karakters van A tot Z, W uitgesluit.
  • Ondersteuning vir die bewerkings "(?", "( )", "{ }" en "[ ]" is gedeeltelik gestabiliseer en by verstek beskikbaar; jy kan die simbole "" "", "" "", ens. gebruik. Byvoorbeeld , "qr" pat "".
  • Die oproep van die sorteerfunksie sonder argumente is verbode, wat nou 'n fout tot gevolg sal hê. @a = sorteer @leeg; # sal voortgaan @a = sorteer; # 'n fout sal gedruk word @a = sort(); # 'n fout sal gedruk word
  • 'n Nuwe opdragreëlvlag "-g" is voorgestel, wat die modus moontlik maak om die hele lêer as 'n geheel te laai, eerder as reël vir reël. Die aksie van die vlag is soortgelyk aan die aanduiding “-0777”.
  • Ondersteuning vir die Unicode-spesifikasie is opgedateer na weergawe 14.0.
  • Bied onmiddellike hantering van drywende punt-uitsonderings (SIGFPE) soortgelyk aan ander alarms soos SIGSEGV, wat jou toelaat om jou eie hanteerders vir SIGFPE via $SIG{FPE} te bind, byvoorbeeld om die lynnommer uit te voer waar die probleem voorgekom het.
  • Opgedateerde weergawes van modules wat by die basiese pakket ingesluit is.
  • Bygevoeg prestasie-optimalisasies. Die vermoë om groot hash-sleutels doeltreffender te stoor sonder om gedeelde stringtabelle te gebruik, is voorsien. Die prestasie van die skep van nuwe skalêre waardes is aansienlik verbeter, byvoorbeeld die volgende kode loop nou 30% vinniger: $str = "A" x 64; vir (0..1_000_000) { @svs = verdeel //, $str }
  • Die tolkkode het sommige van die konstrukte begin gebruik wat in die C99-standaard gedefinieer is. Om Perl te bou vereis nou 'n samesteller wat C99 ondersteun. Ondersteuning vir die bou van ouer weergawes van MSVC++ (pre-VC12) is gestaak. Bygevoeg ondersteuning vir die bou in Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Ondersteuning vir AT&T UWIN, DOS/DJGPP en Novell NetWare-platforms is gestaak.

Bron: opennet.ru

Voeg 'n opmerking