Dostupan programski jezik Perl 5.36.0

Nakon godinu dana razvoja, objavljeno je izdanje nove stabilne grane programskog jezika Perl - 5.36. U pripremi novog izdanja promijenjeno je oko 250 hiljada linija koda, promjene su uticale na 2000 datoteka, a u razvoju su učestvovala 82 programera.

Grana 5.36 objavljena je u skladu sa fiksnim razvojnim planom odobrenim prije devet godina, što podrazumijeva puštanje novih stabilnih grana jednom godišnje i korektivnih izdanja svaka tri mjeseca. Za otprilike mjesec dana planirano je izdavanje prvog korektivnog izdanja Perl 5.36.1, koje će ispraviti najznačajnije greške uočene tokom implementacije Perl 5.36.0. Zajedno sa izdavanjem Perla 5.36, obustavljena je podrška za granu 5.32, za koju buduća ažuriranja mogu biti objavljena samo ako se identifikuju kritični sigurnosni problemi. Započeo je i proces razvoja eksperimentalne grane 5.37 na osnovu koje će se u maju ili junu 2023. formirati stabilno izdanje Perla 5.38, ukoliko se ne donese odluka o prelasku na numeraciju 7.x.

Ključne promjene:

  • Podrška za signature funkcija je stabilizirana i sada je dostupna kada se specificira pragma “use v5.36”, što vam omogućava da eksplicitno definirate listu varijabli korištenih u funkciji i automatizirate operacije provjere i dodjele vrijednosti iz niza ulazni parametri. Na primjer, prethodno korišteni kod: sub foo { die "Previše argumenata za potprogram" osim ako @_ >= 2; die "Premalo argumenata za potprogram" osim ako @_ <= 2; moj($lijevo, $desno) = @_; povratak $lijevo + $desno; }

    kada se koriste potpisi, može se zamijeniti sa:

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

    Ako pozovete foo sa više od dva argumenta, interpretator će baciti grešku. Lista također podržava posebnu varijablu “$”, koja vam omogućava da zanemarite neke od argumenata, na primjer, “sub foo ($left, $, $right)” će vam omogućiti da kopirate samo prvi i treći argument u varijable , dok tačno tri moraju biti proslijeđene argumentu funkcije.

    Sintaksa potpisa također vam omogućava da navedete opcione argumente i odredite zadane vrijednosti ako argument nedostaje. Na primjer, specificiranjem “sub foo ($left, $right = 0)” drugi argument postaje opcioni i ako je odsutan, prosljeđuje se vrijednost 0. U operaciji dodjeljivanja možete specificirati proizvoljne izraze, uključujući korištenje drugih varijabli sa liste ili globalnih varijabli. Navođenje hash ili niza umjesto varijable (na primjer, "sub foo ($left, @right)") omogućit će prosljeđivanje jednog ili više argumenata.

  • U funkcijama deklariranim korištenjem potpisa, podrška za opcionalnu dodjelu parametara iz niza "@_" je deklarirana kao eksperimentalna i rezultirat će upozorenjem (upozorenje se izdaje samo ako se @_ koristi u funkcijama deklariranim pomoću nove sintakse). Na primjer, upozorenje će biti prikazano za funkciju: use v5.36; sub f ($x, $y = 123) { recimo "Prvi argument je $_[0]"; }
  • Stabiliziran i dostupan kada se specificira pragma "use v5.36", infiksni operator "is" za provjeru da li je objekt instanca navedene klase ili klasa izvedena iz nje. Na primjer: if( $obj isa Package::Name ) { … }
  • Kada se specificira pragma “use v5.36”, obrada upozorenja je omogućena (aktiviran je mod “use warnings”).
  • Kada se specificira pragma “use v5.36”, podrška za indirektnu notaciju za pozivanje objekata (“feature indirect”) je onemogućena – zastarjeli način pozivanja objekata, u kojem se koristi razmak umjesto “->” (“metod $ object @param” umjesto “$object-> $method(@param)”). Na primjer, umjesto “my $cgi = new CGI” trebate koristiti “my $cgi = CGI->new”.
  • Kada se specificira pragma “use v5.36”, podrška za emuliranje višedimenzionalnih nizova i hashova u stilu Perl 4 (“feature multidimenzional”) je onemogućena, što omogućava da se indikacija nekoliko ključeva prevede u srednji niz (na primjer, “ $hash{1, 2}”) je pretvoren u "$hash{join($;, 1, 2)}").
  • Kada se specificira pragma “use v5.36”, podrška za eksperimentalni mehanizam grananja (“feature switch”), slično switch i case iskazima, je onemogućena (Perl koristi date i kada ključne riječi). Da biste koristili ovu funkciju, počevši od Perl-a 5.36, morate eksplicitno navesti 'koristi funkciju "switch"', a ako navedete "koristi verziju", ona više neće biti automatski omogućena.
  • Podrška za dodatne klase znakova u uglastim zagradama unutar regularnih izraza je stabilizirana i dostupna je po defaultu. Ova funkcija vam omogućava da izvodite podudaranja koristeći napredna pravila za ukrštanje, izuzimanje i ujedinjenje skupova znakova. Na primjer, '[AZ - W]' - znakovi od A do Z isključujući W.
  • Podrška za operacije "(?", "( )", "{ }" i "[ ]" je djelimično stabilizirana i dostupna prema zadanim postavkama; možete koristiti simbole "" "", "" "" itd. Na primjer , "qr"pat "".
  • Pozivanje funkcije sortiranja bez argumenata je zabranjeno, što će sada rezultirati greškom. @a = sortiraj @prazno; # će nastaviti @a = sortiranje; # ispisaće se greška @a = sort(); # greška će biti odštampana
  • Predložena je nova oznaka komandne linije “-g” koja omogućava način učitavanja cijele datoteke u cjelini, a ne red po red. Radnja zastavice je slična indikaciji “-0777”.
  • Podrška za Unicode specifikaciju je ažurirana na verziju 14.0.
  • Omogućava trenutno rukovanje izuzecima s pomičnim zarezom (SIGFPE) slično drugim alarmima kao što je SIGSEGV, omogućavajući vam da povežete vlastite rukovaoce za SIGFPE preko $SIG{FPE}, na primjer iznošenje broja linije gdje se problem pojavio.
  • Ažurirane verzije modula uključenih u osnovni paket.
  • Dodate optimizacije performansi. Obezbeđena je mogućnost efikasnijeg skladištenja velikih heš ključeva bez korišćenja zajedničkih tabela stringova. Performanse kreiranja novih skalarnih vrijednosti su značajno poboljšane, na primjer sljedeći kod sada radi 30% brže: $str = "A" x 64; za (0..1_000_000) { @svs = split //, $str }
  • Kod interpretatora je počeo da koristi neke od konstrukcija definisanih u standardu C99. Izgradnja Perla sada zahtijeva kompajler koji podržava C99. Podrška za izgradnju u starijim verzijama MSVC++ (pre-VC12) je ukinuta. Dodata podrška za izgradnju u Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Podrška za AT&T UWIN, DOS/DJGPP i Novell NetWare platforme je ukinuta.

izvor: opennet.ru

Dodajte komentar