Perl 5.36.0 programski jezik dostupan

Nakon godinu dana razvoja, objavljeno je izdanje nove stabilne grane programskog jezika Perl - 5.36. U pripremi novog izdanja promijenjeno je oko 250 tisuća linija koda, promjene su zahvatile 2000 datoteka, au razvoju su sudjelovala 82 programera.

Grana 5.36 objavljena je u skladu s fiksnim planom razvoja odobrenim prije devet godina, koji podrazumijeva izdavanje novih stabilnih grana jednom godišnje i korektivna izdanja svaka tri mjeseca. Za otprilike mjesec dana planira se izdati prvo korektivno izdanje Perla 5.36.1, koje će ispraviti najznačajnije greške uočene tijekom implementacije Perla 5.36.0. Zajedno s izdanjem Perla 5.36, obustavljena je podrška za granu 5.32, za koju se buduća ažuriranja mogu izdati samo ako se identificiraju kritični sigurnosni problemi. Započeo je i proces razvoja eksperimentalne grane 5.37, na temelju koje će se formirati stabilno izdanje Perla 2023 u svibnju ili lipnju 5.38. godine, osim ako se ne donese odluka o prelasku na numeraciju 7.x.

Ključne promjene:

  • Podrška za potpise funkcija je stabilizirana i sada je dostupna kada se navede pragma "use v5.36", što vam omogućuje da eksplicitno definirate popis varijabli koje se koriste u funkciji i automatizirate operacije provjere i dodjele vrijednosti iz niza dolazni 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 je @_ <= 2; moj($lijevo, $desno) = @_; povratak $lijevo + $desno; }

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

    sub foo ($lijevo, $desno) { return $lijevo + $desno; }

    Ako pozovete foo s više od dva argumenta, tumač će izbaciti pogrešku. Popis također podržava posebnu varijablu “$”, koja vam omogućuje da zanemarite neke od argumenata, na primjer, “sub foo ($lijevo, $, $desno)” će vam omogućiti da kopirate samo prvi i treći argument u varijable , dok se točno tri moraju proslijediti argumentu funkcije.

    Sintaksa potpisa također vam omogućuje da navedete izborne argumente i navedete zadane vrijednosti ako argument nedostaje. Na primjer, navođenjem “sub foo ($left, $right = 0)” drugi argument postaje neobavezan i ako ga nema, prosljeđuje se vrijednost 0. U operaciji dodjele možete odrediti proizvoljne izraze, uključujući korištenje drugih varijabli s popisa ili globalnih varijabli. Navođenje hash-a ili polja umjesto varijable (na primjer, "sub foo ($left, @right)") omogućit će prosljeđivanje jednog ili više argumenata.

  • U funkcijama deklariranim pomoću potpisa, podrška za izbornu dodjelu parametara iz polja "@_" proglašena je eksperimentalnom i rezultirat će upozorenjem (upozorenje se izdaje samo ako se @_ koristi u funkcijama deklariranim pomoću nove sintakse). Na primjer, upozorenje će se prikazati za funkciju: use v5.36; sub f ($x, $y = 123) { say "Prvi argument je $_[0]"; }
  • Stabiliziran i dostupan kada se specificira pragma "use v5.36", infiks operator "isa" za provjeru je li objekt instanca navedene klase ili klasa izvedena iz nje. Na primjer: if( $obj isa Package::Name ) { … }
  • Kada se navede pragma "koristi v5.36", omogućena je obrada upozorenja (aktiviran je način rada "koristi upozorenja").
  • Prilikom navođenja pragme "use v5.36", podrška za neizravnu notaciju za pozivanje objekata ("feature indirect") je onemogućena - zastarjeli način pozivanja objekata, u kojem se koristi razmak umjesto "->" ("metoda $ object @param” umjesto “$object-> $method(@param)”). Na primjer, umjesto “moj $cgi = novi CGI” trebate koristiti “moj $cgi = CGI->novo”.
  • Kada se specificira pragma "use v5.36", onemogućena je podrška za oponašanje višedimenzionalnih nizova i hashova u stilu Perl 4 ("feature multidimensional"), dopuštajući da se indikacija nekoliko ključeva prevede u međuniz (na primjer, " $hash{1, 2}”) pretvoren je u "$hash{join($;, 1, 2)}").
  • Kada se specificira pragma "use v5.36", podrška za eksperimentalni mehanizam grananja ("feature switch"), sličan naredbama switch i case, je onemogućena (Perl koristi ključne riječi dano i kada). Da biste koristili ovu značajku, počevši od Perla 5.36, morate eksplicitno navesti 'koristi značajku "switch"', a ako navedete "koristi verziju", više neće biti automatski omogućena.
  • Podrška za dodatne klase znakova u uglatim zagradama unutar regularnih izraza je stabilizirana i dostupna je prema zadanim postavkama. Značajka vam omogućuje izvođenje podudaranja pomoću naprednih pravila za presjek, izuzimanje i uniju skupova znakova. Na primjer, '[AZ - W]' - znakovi od A do Z isključujući W.
  • Podrška za operacije "(?", "( )", "{ }" i "[ ]" je djelomič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 pogreškom. @a = sortiraj @prazno; # nastavit će se @a = sortiranje; # bit će ispisana pogreška @a = sort(); # bit će ispisana pogreška
  • Predložena je nova zastavica naredbenog retka "-g", koja omogućuje način učitavanja cijele datoteke kao cjeline, a ne red po red. Radnja zastavice je slična indikaciji "-0777".
  • Podrška za Unicode specifikaciju ažurirana je na verziju 14.0.
  • Omogućuje trenutačno rukovanje iznimkama s pomičnim zarezom (SIGFPE) slično drugim alarmima kao što je SIGSEGV, omogućujući vam da povežete vlastite rukovatelje za SIGFPE putem $SIG{FPE}, na primjer izlaz broja retka u kojem se pojavio problem.
  • Ažurirane verzije modula uključenih u osnovni paket.
  • Dodane optimizacije performansi. Omogućena je mogućnost učinkovitijeg pohranjivanja velikih hash ključeva bez korištenja zajedničkih tablica nizova. Performanse stvaranja novih skalarnih vrijednosti značajno su 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 tumača počeo je koristiti neke od konstrukcija definiranih u standardu C99. Za izgradnju Perla sada je potreban kompajler koji podržava C99. Podrška za izgradnju u starijim verzijama MSVC++ (prije VC12) je prekinuta. Dodana 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