Alla conferenza virtuale degli sviluppatori del linguaggio Perl che si tiene oggi il progetto Perl 7, che continuerà dolcemente lo sviluppo della serie Perl 5 senza apportare cambiamenti radicali. Perl 7 sarà simile al rilascio , ad eccezione di diverse impostazioni predefinite, meglio adattate alle pratiche moderne di sviluppo. In altri aspetti, Perl 7 rimarrà lo stesso Perl 5 e manterrà la compatibilità con le applicazioni precedentemente sviluppate.
Un cambiamento significativo del numero di versione fungerà da separatore nel passaggio a un nuovo modello di espansione delle funzionalità del linguaggio Perl senza sostanziali violazioni della compatibilità.
Si prevede che la creazione di Perl 7 aiuterà ad attrarre nuovi sviluppatori verso l'uso di Perl e a facilitare il processo di aggiunta nel linguaggio di significative nuove funzionalità, mantenendo nel contempo la compatibilità con il codice esistente. Il numero 7 è stato scelto poiché Perl 6 è stato utilizzato nello sviluppo del linguaggio, che ora è sotto un nome separato, Raku. Il primo rilascio di Perl 7 è atteso per l'anno prossimo. La serie Perl 5.32 sarà l'ultima della serie Perl 5 e si prevede di supportarla per un periodo tra i 5 e i 10 anni.
La modifica più evidente in Perl 7 sarà l'inclusione predefinita della modalità "", che implica un rigoroso controllo della dichiarazione delle variabili, dell'uso dei puntatori simbolici e dell'assegnazione delle subroutine. L'uso di "use strict" è considerato buona norma ed è adottato dalla maggior parte degli sviluppatori. Analogamente, si prevede di attivare di default il trattamento degli avvisi ("«).
In Perl 7 si prevede anche di stabilizzare e includere per impostazione predefinita alcune funzionalità sperimentali già esistenti, come ("use feature 'signatures'"), che consentono di definire gli argomenti in ingresso durante la definizione di una funzione e di automatizzare il controllo del loro numero (sarà possibile scrivere "sub foo ($left, $right) {" invece di "sub foo { my($left, $right) = @_;" ). Si prevede di includere di default anche il supporto per l'operatore "isa" per verificare se un oggetto è un'istanza della classe specificata o di una classe derivata da essa ("if( $obj isa Package::Name )", così come le operazioni di dereferenza posteriore (postderef) " $sref->$*" invece di "${ $sref }", " $aref->@*" invece di "@{ $aref }" e " $href->%{ … }" invece di "%$href{ … }".
I candidati per la disattivazione predefinita in Perl 7 sono:
- La notazione indiretta delle chiamate agli oggetti ("«) — un modo obsoleto di chiamare oggetti, in cui invece di «->» si usa uno spazio («method $object @param» invece di «$object->$method(@param)»). Ad esempio, invece di «my $cgi = new CGI» si dovrà sempre usare «my $cgi = CGI->new».
- Descrittori di file nudi senza dichiarazione di variabili (««) — l'uso di costrutti come «open FH, $file» porterà a un errore, si deve utilizzare «open my $fh, $file». Questa 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, l'indicazione «$hash{1, 2}» porterà a un errore, si deve usare un array intermedio, come «$hash{join($;, 1, 2)}». - Dichiarazione di prototipi in stile Perl 4 (si deve utilizzare «use :prototype()»).
Nei piani più remoti, si prevede di includere supporto Unicode di default, il che solleverà gli sviluppatori dall'indicare «use utf8» nel codice. Per moduli e script in cui si verificheranno problemi con le nuove impostazioni predefinite, sarà possibile ripristinare il comportamento di Perl 5 aggiungendo la riga «use compat::perl5» nel codice. Alcune impostazioni saranno conservate e potranno essere modificate singolarmente.
Fonte: opennet.ru
