Perl 5.36.0 programmeringsspråk tilgjengelig

Etter et år med utvikling har utgivelsen av en ny stabil gren av programmeringsspråket Perl - 5.36 - blitt publisert. Under utarbeidelsen av den nye utgivelsen ble rundt 250 tusen linjer med kode endret, endringene påvirket 2000 filer, og 82 utviklere deltok i utviklingen.

Branch 5.36 ble utgitt i henhold til den faste utviklingsplanen godkjent for ni år siden, som innebærer utgivelse av nye stabile filialer en gang i året og korrigerende utgivelser hver tredje måned. Om omtrent en måned er det planlagt å lansere den første korrigerende utgivelsen av Perl 5.36.1, som vil rette opp de mest betydelige feilene som er identifisert under implementeringen av Perl 5.36.0. Sammen med utgivelsen av Perl 5.36 ble støtten for 5.32-grenen avviklet, for hvilke fremtidige oppdateringer bare kan utgis hvis kritiske sikkerhetsproblemer blir identifisert. Prosessen med å utvikle den eksperimentelle grenen 5.37 har også startet, på grunnlag av denne vil en stabil utgivelse av Perl 2023 bli dannet i mai eller juni 5.38, med mindre det tas en beslutning om å bytte til nummerering 7.x.

Viktige endringer:

  • Støtte for funksjonssignaturer er stabilisert og er nå tilgjengelig når du spesifiserer "bruk v5.36"-pragmaen, slik at du eksplisitt kan definere listen over variabler som brukes i funksjonen og automatisere operasjonene for å sjekke og tilordne verdier fra en rekke av innkommende parametere. For eksempel, tidligere brukt kode: sub foo { die "For mange argumenter for subrutine" med mindre @_ >= 2; die "For få argumenter for subrutine" med mindre @_ <= 2; min($venstre, $høyre) = @_; returner $venstre + $høyre; }

    når du bruker signaturer, kan den erstattes av:

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

    Hvis du ringer foo med mer enn to argumenter, vil tolken gi en feil. Listen støtter også en spesiell variabel "$", som lar deg ignorere noen av argumentene, for eksempel vil "sub foo ($left, $, $right)" tillate deg å kopiere bare det første og tredje argumentet til variabler , mens nøyaktig tre må sendes til funksjonsargumentet.

    Signatursyntaksen lar deg også spesifisere valgfrie argumenter og spesifisere standardverdier hvis et argument mangler. For eksempel, ved å spesifisere "sub foo ($left, $right = 0)" blir det andre argumentet valgfritt, og hvis det er fraværende, passeres verdien 0. I tildelingsoperasjonen kan du spesifisere vilkårlige uttrykk, inkludert bruk av andre variabler fra listen eller globale variabler. Ved å spesifisere en hash eller array i stedet for en variabel (for eksempel "sub foo ($left, @right)") vil ett eller flere argumenter kunne sendes.

  • I funksjoner som er deklarert ved bruk av signaturer, er støtte for tilleggsparametertilordning fra "@_"-matrisen erklært eksperimentell og vil resultere i en advarsel (advarselen utstedes kun hvis @_ brukes i funksjoner deklarert ved bruk av den nye syntaksen). For eksempel vil en advarsel vises for funksjonen: bruk v5.36; sub f ($x, $y = 123) { si "Det første argumentet er $_[0]"; }
  • Stabilisert og tilgjengelig når du spesifiserer "bruk v5.36"-pragmaen, infiksoperatoren "isa" for å sjekke om et objekt er en forekomst av den spesifiserte klassen eller en klasse avledet fra den. For eksempel: if( $obj isa Package::Name ) { … }
  • Når du spesifiserer "bruk v5.36"-pragmaen, er advarselsbehandling aktivert (modusen "bruk advarsler" er aktivert).
  • Når du spesifiserer "bruk v5.36"-pragmaen, er støtte for indirekte notasjon for å kalle objekter ("feature indirect") deaktivert - en utdatert måte å kalle objekter, der et mellomrom brukes i stedet for "->" ("metode $ objekt @param" i stedet for "$object-> $method(@param)"). For eksempel, i stedet for "my $cgi = new CGI" må du bruke "my $cgi = CGI->new".
  • Når du spesifiserer "bruk v5.36"-pragma, deaktiveres støtte for emulering av flerdimensjonale arrays og hashes i Perl 4-stilen ("feature multidimensjonal"), slik at indikasjonen av flere nøkler kan oversettes til en mellommatrise (for eksempel " $hash{1, 2}") ble konvertert til "$hash{join($;, 1, 2)}").
  • Når du spesifiserer "bruk v5.36"-pragmaen, deaktiveres støtte for den eksperimentelle forgreningsmekanismen ("funksjonsbryter"), som ligner på bryteren og saksutsagn (Perl bruker de gitte og når nøkkelordene). For å bruke denne funksjonen, fra Perl 5.36, må du eksplisitt spesifisere "bruk funksjon "switch", og når du spesifiserer "bruk versjon" vil den ikke lenger være automatisk aktivert.
  • Støtte for tilleggstegnklasser i hakeparenteser i regulære uttrykk er stabilisert og er tilgjengelig som standard. Funksjonen lar deg utføre treff ved å bruke avanserte regler for skjæring, ekskludering og forening av sett med tegn. For eksempel "[A-Z - W]" - tegn fra A til Å unntatt W.
  • Støtte for operasjonene "(?", "( )", "{ }" og "[ ]" er delvis stabilisert og tilgjengelig som standard; du kan bruke symbolene "" "", "" "", osv. For eksempel , "qr" klapp "".
  • Å kalle opp sorteringsfunksjonen uten argumenter er forbudt, noe som nå vil resultere i en feil. @a = sorter @tom; # vil fortsette @a = sortering; # en feil vil bli skrevet ut @a = sort(); # en feil vil bli skrevet ut
  • Et nytt kommandolinjeflagg "-g" har blitt foreslått, som muliggjør modusen for å laste hele filen som helhet, i stedet for linje for linje. Handlingen til flagget ligner på indikasjonen "-0777".
  • Støtte for Unicode-spesifikasjonen er oppdatert til versjon 14.0.
  • Gir umiddelbar håndtering av flytende punktunntak (SIGFPE) som ligner på andre alarmer som SIGSEGV, slik at du kan binde dine egne behandlere for SIGFPE via $SIG{FPE}, for eksempel ved å sende ut linjenummeret der problemet oppsto.
  • Oppdaterte versjoner av moduler inkludert i grunnpakken.
  • Lagt til ytelsesoptimaliseringer. Muligheten til å lagre store hash-nøkler mer effektivt uten å bruke delte strengtabeller er gitt. Ytelsen for å lage nye skalarverdier har blitt betydelig forbedret, for eksempel kjører følgende kode nå 30 % raskere: $str = "A" x 64; for (0..1_000_000) { @svs = delt //, $str }
  • Tolkekoden begynte å bruke noen av konstruksjonene definert i C99-standarden. Å bygge Perl krever nå en kompilator som støtter C99. Støtte for å bygge inn eldre versjoner av MSVC++ (pre-VC12) er avviklet. Lagt til støtte for bygging i Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Støtte for AT&T UWIN, DOS/DJGPP og Novell NetWare-plattformer er avviklet.

Kilde: opennet.ru

Legg til en kommentar