È disponibile il linguaggio di programmazione Perl 5.42

Dopo un anno di sviluppo è stato pubblicato il rilascio del nuovo ramo stabile del linguaggio di programmazione Perl — 5.42. Durante la preparazione della nuova versione sono state modificate circa 280.000 righe di codice (senza documentazione e codice generato automaticamente — 93.000), e le modifiche hanno riguardato 1500 file, con la partecipazione di 64 sviluppatori.

Il ramo 5.42 è stato rilasciato in conformità con il programma di sviluppo fisso approvato dodici anni fa, che prevede il rilascio di nuovi rami stabili una volta all'anno e di rilasci correttivi ogni tre mesi. Un primo rilascio correttivo di Perl 5.42.1 è previsto tra circa un mese, nel quale saranno corretti i bug più significativi emersi durante l'implementazione di Perl 5.42.0. Con il rilascio di Perl 5.42, il supporto per il ramo 5.38 è stato interrotto, per il quale eventuali aggiornamenti future saranno emessi solo in caso di problemi critici di sicurezza. A breve inizierà il processo di sviluppo del ramo sperimentale 5.43, da cui sarà formato un rilascio stabile di Perl 5.44 a giugno 2026, a meno che non venga presa la decisione di passare alla numerazione 7.x.

Principali modifiche:

  • Sono stati aggiunti operatori sperimentali per la gestione delle liste — 'any { BLOCK } @list' e 'all { BLOCK } @list', che sono simili all'operatore 'grep { BLOCK } @list', ma possono restituire solo valori true o false. L'operatore 'all' restituisce 'true' se la condizione è vera per tutti gli elementi della lista, mentre l'operatore 'any' restituisce 'true' se la condizione è vera per almeno un elemento. La funzionalità degli operatori è simile a quella delle funzioni del modulo List::Util, ma le versioni integrate sono più veloci e consumano meno memoria. use v5.42; use feature 'keyword_all'; no warnings 'experimental::keyword_all'; my @numbers = … if ( all { $_ % 2 == 0 } @numbers ) { say 'Tutti i numeri sono pari'; }
  • Per i campi definiti all'interno della classe è stato implementato l'attributo ':writer', utilizzato per la creazione automatica di un metodo che memorizza il valore della variabile nel campo dell'istanza attuale della classe. class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
  • È stato aggiunto il supporto per la definizione di metodi lessicali, che, analogamente alla definizione di sottoprogrammi lessicali («lexical_subs»), consente di creare metodi disponibili solo nell'ambito della visibilità lessicale del blocco in cui sono stati creati. Per creare metodi simili si utilizza l'espressione «my nome_metodo».
  • È stato aggiunto l'operatore «->&», che consente di chiamare sottoprogrammi che si trovano nell'ambito di visibilità lessicale, come se fossero metodi. In combinazione con la possibilità di definire metodi lessicali, il nuovo operatore implementa funzionalità simili ai metodi privati.
  • È stato aggiunto l'operatore di assegnazione «A ^^= B», che esegue l'operazione «A = A XOR B».
  • È stata aggiunta la pragmatica «source::encoding», che definisce la codifica del codice sorgente. Per il codice in codifica ASCII è possibile indicare «use source::encoding 'ascii'» (di default), mentre per UTF-8 — «use source::encoding 'utf8'», quest'ultima espressione è equivalente a «use utf8». L'interprete emetterà un errore se nel codice contrassegnato come ASCII sono presenti caratteri UTF-8, o se nel codice contrassegnato come UTF-8 vengono utilizzate sequenze di escape «\x{}». Per disattivare il controllo di una parte del codice si può utilizzare il valore «use no source::encoding». Nella pratica, la pragmatica aggiunta può risultare utile per identificare casi in cui lo sviluppatore ha dimenticato di indicare «use utf8» per codice in codifica UTF-8.
  • È stata aggiunta la funzione chdir() nello spazio dei nomi «CORE::». Ad esempio, ora è possibile fare riferimento a questa funzione come «&CORE::chdir($dir)» o «my $ref = \&CORE::chdir; $ref->($dir)».
  • È stata aggiunta l'espressione ‘no feature «apostrophe_as_package_separator»‘ per disattivare il supporto dell'uso del simbolo » ‘ » come separatore nei nomi dei pacchetti (ad esempio, «My’Module’Var» anziché «My::Module::Var»). Inizialmente, in Perl 5.42 era previsto di rimuovere il supporto per tali separatori, che erano stati precedentemente dichiarati obsoleti, ma durante le discussioni è stato deciso di mantenere questa possibilità per default, prevedendo però un'opzione per disattivarla.
  • La funzionalità "switch" e l'operatore "~~" sono stati ripristinati tra le possibilità restituite, precedentemente contrassegnati come obsoleti e programmati per la rimozione. A partire dalle versioni Perl 5.36 e 5.42, le funzionalità "switch" e "~~" sono disabilitate per impostazione predefinita quando si collega il codice a versioni del linguaggio (ad esempio, specificando "use v5.42"), ma possono essere attivate con le espressioni 'use feature "switch"' e 'use feature "smartmatch"'.
  • Aggiunto il supporto per la specifica Unicode 16.0.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster