Alla conferenza virtuale di oggi degli sviluppatori del linguaggio Perl un progetto Perl 7 che proseguirà senza intoppi lo sviluppo del ramo Perl 5 senza apportare modifiche radicali. Perl 7 sarà una versione simile , ad eccezione di altre impostazioni predefinite che sono più coerenti con le pratiche di sviluppo moderne. Altrimenti Perl 7 rimarrà uguale a Perl 5 e rimarrà compatibile con le applicazioni sviluppate in precedenza.
Un cambiamento significativo nel numero di versione fungerà da sorta di separatore per il passaggio a un nuovo modello per aumentare la funzionalità del linguaggio Perl senza una notevole violazione della compatibilità con le versioni precedenti.
Si prevede che il rilascio di Perl 7 aiuterà ad attrarre nuovi sviluppatori verso Perl e aiuterà a semplificare il processo di aggiunta di nuove funzionalità significative al linguaggio pur mantenendo la compatibilità con il codice base dei progetti esistenti. Il numero 7 è stato scelto perché Perl 6 è stato utilizzato per sviluppare il linguaggio attuale sotto il nome separato Raku. La prima versione di Perl 7 è prevista per il prossimo anno. Il ramo Perl 5.32 sarà l'ultimo della serie Perl 5 e sarà supportato per 5-10 anni.
Il cambiamento più notevole in Perl 7 è l'inclusione di "“, che implica un controllo rigoroso delle dichiarazioni di variabili, dell'uso di puntatori simbolici e delle assegnazioni di subroutine. Usare "use strict" è una buona forma ed è utilizzato dalla maggior parte degli sviluppatori. Allo stesso modo, per impostazione predefinita prevedono di abilitare l’elaborazione degli avvisi (“").
Perl 7 spera anche di stabilizzare e abilitare per impostazione predefinita alcune funzionalità sperimentali già esistenti, come (“usa la funzionalità 'firme'”), che consentono, quando si definisce una funzione, di determinare gli argomenti in ingresso e di automatizzare il controllo del loro numero (puoi scrivere “sub foo ($left, $right) {” invece di “sub foo { my($sinistra, $destra) ) = @_;"). Hanno in programma di includere per impostazione predefinita il supporto per l'operatore "isa" per verificare se un oggetto è un'istanza di una classe specificata o di una classe derivata da essa ("if( $obj isa Package::Name)", nonché il dereferenziamento suffisso operazioni (postderef) “$ sref->$*" invece di "${ $sref }", "$aref->@*" invece di "@{ $aref }" e "$href->%{ ... }" invece di "%$href{ ... } "
I contendenti per essere disabilitati per impostazione predefinita in Perl 7 sono:
- Notazione di chiamata indiretta di oggetti ("") è un modo legacy di chiamare oggetti, utilizzando uno spazio invece di "->" ("method $object @param" invece di "$object->$method(@param)"). Ad esempio, invece di “my $cgi = new CGI” dovresti sempre usare “my $cgi = CGI->new”.
- Descrittori di file semplici senza dichiarazioni di variabile ("") - l'utilizzo di costruzioni come "open FH, $file" porterà a un errore, è necessario utilizzare "open my $fh, $file". La modifica non influenzerà i descrittori di file standard STDIN, STDOUT, STDERR, ARGV, ARGVOUT e DATA.
- Array e hash multidimensionali fittizi in stile Perl 4 ("").
Ad esempio, specificando "$hash{1, 2}" si genererà un errore; è necessario utilizzare un array intermedio, ad esempio "$hash{join($;, 1, 2)}". - Dichiarare prototipi in stile Perl 4 (è necessario utilizzare "use :prototype()").
Nei piani più distanti, si prevede di abilitare il supporto Unicode per impostazione predefinita, il che eviterà agli sviluppatori di specificare "usa utf8" nel codice. Per i moduli e gli script che presentano problemi con le nuove impostazioni predefinite, è possibile ripristinare il comportamento di Perl 5 aggiungendo la riga "use compat::perl5" al codice. Anche le impostazioni individuali verranno salvate e potranno essere modificate individualmente.
Fonte: opennet.ru
