Lingua di prugrammazione Perl 5.36.0 dispunibule

Dopu un annu di sviluppu, a liberazione di un novu ramu stabile di a lingua di prugrammazione Perl - 5.36 - hè stata publicata. In a preparazione di a nova versione, circa 250 mila linee di codice sò state cambiate, i cambiamenti anu affettatu i schedari 2000, è 82 sviluppatori anu participatu à u sviluppu.

Branch 5.36 hè stata liberata in cunfurmità cù u prugramma di sviluppu fissu appruvatu nove anni fà, chì implica a liberazione di novi rami stabili una volta à l'annu è liberazioni currettivi ogni trè mesi. In circa un mesi, hè previstu di liberà a prima liberazione correttiva di Perl 5.36.1, chì correggerà l'errori più significati identificati durante l'implementazione di Perl 5.36.0. Inseme cù a liberazione di Perl 5.36, u supportu per u ramu 5.32 hè statu discontinuatu, per quale l'aghjurnamenti futuri ponu esse liberati solu s'ellu si identificanu prublemi di sicurezza critichi. U prucessu di sviluppu di u ramu spirimintali 5.37 hà ancu principiatu, nantu à a basa di quale una liberazione stabile di Perl 2023 serà furmatu in maghju o ghjugnu 5.38, salvu chì una decisione hè presa per passà à a numerazione 7.x.

Cambiamenti chjave:

  • U supportu per e signature di funzioni hè statu stabilizatu è hè dispunibule avà quandu si specifica u pragma "usà v5.36", chì vi permette di definisce esplicitamente a lista di variàbili utilizati in a funzione è automatizà l'operazioni di cuntrollà è assignà valori da un array di paràmetri entranti. Per esempiu, codice utilizatu prima: sub foo { die "Troppi argumenti per subrutine" salvu @_ >= 2; die "Troppu pochi argumenti per a subrutina" salvu @_ <= 2; my($manca, $destra) = @_; turnà $ sinistra + $ destra; }

    quandu si usa signature, pò esse rimpiazzatu da:

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

    Sè vo chjamate foo cù più di dui argumenti, l'interprete vi lancerà un errore. A lista sustene ancu una variabile speciale "$", chì vi permette di ignurà alcuni di l'argumenti, per esempiu, "sub foo ($left, $, $right)" vi permetterà di copià solu u primu è u terzu argumentu in variàbili. , mentri esattamente trè deve esse passatu à l'argumentu di a funzione.

    A sintassi di a firma permette ancu di specificà argumenti opzionali è di specificà i valori predeterminati se un argumentu manca. Per esempiu, specificendu "sub foo ($left, $right = 0)" u sicondu argumentu diventa facultativu è s'ellu hè assente, u valore 0 hè passatu. da a lista o variabili globale. Specificà un hash o array invece di una variabile (per esempiu, "sub foo ($left, @right)") permetterà di passà unu o più argumenti.

  • In e funzioni dichjarate cù signatures, u supportu per l'assignazione di parametri supplementari da l'array "@_" hè dichjarata sperimentale è risulterà in un avvisu (l'avvertimentu hè emessu solu se @_ hè utilizatu in funzioni dichjarate cù a nova sintassi). Per esempiu, un avvisu serà visualizatu per a funzione: utilizate v5.36; sub f ($x, $y = 123) { dì "U primu argumentu hè $_[0]"; }
  • Stabilizatu è dispunibule quandu specificà u pragma "usà v5.36", l'operatore infissu "isa" per verificà se un ughjettu hè una istanza di a classe specifica o una classa derivata da questu. Per esempiu: if( $obj isa Package::Name) { … }
  • Quandu si specifica u pragma "usà v5.36", u processu di avvisu hè attivatu (u modu "usà avvisi" hè attivatu).
  • Quandu si specifica u pragma "usà v5.36", u supportu per a notazione indiretta per chjamà l'uggetti ("caratteristica indiretta") hè disattivatu - un modu anticu di chjamà l'uggetti, in quale un spaziu hè utilizatu invece di "->" ("metudu $ object @param" invece di "$object-> $method(@param)"). Per esempiu, invece di "my $cgi = new CGI" avete bisognu di utilizà "my $cgi = CGI->new".
  • Quandu si specifica u pragma "usà v5.36", u supportu per l'emulazione di array multidimensionali è hash in u stilu Perl 4 ("caratteristica multidimensionale") hè disattivatu, chì permettenu l'indicazione di parechje chjave per esse traduttu in un array intermediariu (per esempiu, " $hash{1, 2}") hè statu cunvertitu in "$hash{join($;, 1, 2)}").
  • Quandu si specifica u pragma "usà v5.36", u supportu per u mecanismu di ramificazione sperimentale ("funzione switch"), simili à l'affirmazioni di switch è di casu, hè disattivatu (Perl usa e parole chjave date è quandu). Per utilizà sta funzione, cumincendu cù Perl 5.36, deve esse esplicitamente specificà "usà a funzione "switch"", è se specificate "usu versione", ùn serà più attivatu automaticamente.
  • U supportu per e classi di caratteri supplementari in parentesi quadrate in l'espressioni regulari hè statu stabilizatu è dispunibule per automaticamente. A funzione permette di fà scontri cù regule avanzate per l'intersezzione, l'esclusione è l'unione di setti di caratteri. Per esempiu, "[AZ - W]" - caratteri da A à Z eccettu W.
  • U supportu per l'operazioni "(?", "( )", "{ }" è "[ ]" hè parzialmente stabilizatu è dispunibule per automaticamente; pudete aduprà i simboli "" "", "" "", etc. Per esempiu , "qr"pat "".
  • Chjamà a funzione di sorte senza argumenti hè pruibita, chì avà da esse risultatu in un errore. @a = sorte @vidu; # continuerà @a = sorte; # un errore serà stampatu @a = sort(); # un errore serà stampatu
  • Una nova bandiera di linea di cumanda "-g" hè stata pruposta, chì permette u modu di carricà tuttu u schedariu cum'è un sanu, invece di linea per linea. L'azzione di a bandiera hè simile à l'indicazione "-0777".
  • U supportu per a specificazione Unicode hè stata aghjurnata à a versione 14.0.
  • Fornisce una gestione immediata di l'eccezzioni in virgule flottante (SIGFPE) simili à l'altri allarmi cum'è SIGSEGV, chì vi permettenu di ligà i vostri propri gestori per SIGFPE via $ SIG {FPE}, per esempiu, emette u numeru di linea induve u prublema hè accadutu.
  • Versioni aghjurnate di moduli inclusi in u pacchettu di basa.
  • Aghjunghjite ottimisazioni di rendiment. Hè stata furnita l'abilità di almacenà e grande chjave di hash in modu più efficau senza aduprà tavule di stringhe spartute. U rendiment di creazione di novi valori scalari hè statu migliuratu significativamente, per esempiu, u codice seguente corre avà 30% più veloce: $str = "A" x 64; per (0..1_000_000) { @svs = split //, $str }
  • U codice di l'interprete hà cuminciatu à utilizà alcune di e custruzzioni definite in u standard C99. Custruì Perl avà bisognu di un compilatore chì supporta C99. U supportu per a custruzzione in versioni più vechje di MSVC++ (pre-VC12) hè stata interrotta. Aghjunghje supportu per custruisce in Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • U supportu per e plataforme AT&T UWIN, DOS/DJGPP è Novell NetWare hè stata interrotta.

Source: opennet.ru

Add a comment